|
18 | 18 | #include <aws/testing/aws_test_harness.h> |
19 | 19 |
|
20 | 20 | #include <math.h> |
| 21 | +#define AWS_MQTT5_TESTING_DELAY_NS 200 * 1000 * 1000 /*200ms*/ |
21 | 22 |
|
22 | 23 | static bool s_is_within_percentage_of(uint64_t expected_time, uint64_t actual_time, double percentage) { |
23 | 24 | double actual_percent = 1.0 - (double)actual_time / (double)expected_time; |
24 | 25 | return fabs(actual_percent) <= percentage; |
25 | 26 | } |
26 | 27 |
|
| 28 | +static bool s_validate_time(uint64_t expected_time, uint64_t actual_time, double percentage) { |
| 29 | + uint64_t delta = actual_time > expected_time : actual_time - expected_time : expected_time - actual_time; |
| 30 | + return delta < AWS_MQTT5_TESTING_DELAY_NS || s_is_within_percentage_of(expected_time, actual_time, percentage); |
| 31 | +} |
| 32 | + |
| 33 | +static bool s_check_time_lower_bound(uint64_t expected_time, uint64_t actual_time) { |
| 34 | + return actual_time >= expected_time; |
| 35 | +} |
| 36 | + |
27 | 37 | int aws_mqtt5_mock_server_handle_connect_always_succeed( |
28 | 38 | void *packet, |
29 | 39 | struct aws_mqtt5_server_mock_connection_context *connection, |
@@ -1508,7 +1518,7 @@ int aws_verify_reconnection_exponential_backoff_timestamps(struct aws_mqtt5_clie |
1508 | 1518 | uint64_t time_diff = aws_timestamp_convert( |
1509 | 1519 | record->timestamp - last_timestamp, AWS_TIMESTAMP_NANOS, AWS_TIMESTAMP_MILLIS, NULL); |
1510 | 1520 |
|
1511 | | - if (!s_is_within_percentage_of(expected_backoff, time_diff, .3)) { |
| 1521 | + if (!s_check_time_lower_bound(expected_backoff, time_diff)) { |
1512 | 1522 | return AWS_OP_ERR; |
1513 | 1523 | } |
1514 | 1524 |
|
@@ -1717,7 +1727,7 @@ static int s_verify_reconnection_after_success_used_backoff( |
1717 | 1727 | AWS_TIMESTAMP_MILLIS, |
1718 | 1728 | NULL); |
1719 | 1729 |
|
1720 | | - if (!s_is_within_percentage_of(expected_reconnect_delay_ms, post_success_reconnect_time_ms, .3)) { |
| 1730 | + if (!s_validate_expected_time(expected_reconnect_delay_ms, post_success_reconnect_time_ms, .3)) { |
1721 | 1731 | return AWS_OP_ERR; |
1722 | 1732 | } |
1723 | 1733 |
|
|
0 commit comments