improve randomness in non-random environments

This commit is contained in:
Sergio R. Caprile committed 2023-10-31 19:17:58 -03:00
1 parent 1b93ca0fb2
commit 07936343c8
2 files changed
+280 -271

No files matched your search

+11 -4
View File
@@ -521,6 +521,13 @@ static void check_mqtt_message(struct mg_mqtt_opts *opts,
}
}
// generate a random string ending in three digits taken from current time
static struct mg_str genstring(char *t, unsigned int sz) {
mg_random_str(t, sz - 3);
snprintf(t + sz - 4, 4, "%03u", (unsigned int) mg_millis() % 1000);
return mg_str(t);
}
static void test_mqtt_basic(void) {
char tbuf[16], mbuf[50] = {0}, topic[16];
struct mqtt_data test_data = {tbuf, mbuf, 16, 50, 0};
@@ -539,7 +546,7 @@ static void test_mqtt_basic(void) {
ASSERT(test_data.flags == 0);
// Subscribe with QoS1
opts.topic = mg_str(mg_random_str(topic, sizeof(topic)));
opts.topic = genstring(topic, sizeof(topic));
opts.qos = 1;
mg_mqtt_sub(c, &opts);
for (i = 0; i < 500 && test_data.flags == 0; i++) mg_mgr_poll(&mgr, 10);
@@ -596,9 +603,9 @@ static void test_mqtt_ver(uint8_t mqtt_version) {
opts.clean = true, opts.qos = 1, opts.retain = false, opts.keepalive = 20;
opts.version = mqtt_version;
opts.topic = mg_str(mg_random_str(topic, sizeof(topic)));
opts.topic = genstring(topic, sizeof(topic));
opts.message = mg_str("mg_will_messsage");
opts.client_id = mg_str(mg_random_str(client_id, sizeof(client_id)));
opts.client_id = genstring(client_id, sizeof(client_id));
c = mg_mqtt_connect(&mgr, url, &opts, mqtt_cb, &test_data);
for (i = 0; i < 300 && mbuf[0] == 0; i++) mg_mgr_poll(&mgr, 10);
if (mbuf[0] != 'X') MG_INFO(("[%s]", mbuf));
@@ -606,7 +613,7 @@ static void test_mqtt_ver(uint8_t mqtt_version) {
ASSERT(test_data.flags == 0);
// Subscribe with QoS2 (reception downgrades to published QoS)
opts.topic = mg_str(mg_random_str(topic, sizeof(topic)));
opts.topic = genstring(topic, sizeof(topic));
opts.qos = 2;
mg_mqtt_sub(c, &opts);
for (i = 0; i < 500 && test_data.flags == 0; i++) mg_mgr_poll(&mgr, 10);