]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Handle occasional CI false failures of trunk tests
authorNick Porter <nick@portercomputing.co.uk>
Fri, 23 Feb 2024 11:32:13 +0000 (11:32 +0000)
committerNick Porter <nick@portercomputing.co.uk>
Fri, 23 Feb 2024 11:32:13 +0000 (11:32 +0000)
src/lib/server/trunk_tests.c

index 6b2b2b1f1c0134a40bbefafa7b0b87378d4ae927..b7e0dc873644172e04b22ec99814d1484cd98495 100644 (file)
@@ -1503,6 +1503,7 @@ static void test_connection_levels_max(void)
                                };
        test_proto_request_t    *preq_a, *preq_b, *preq_c, *preq_d, *preq_e;
        fr_trunk_request_t      *treq_a = NULL, *treq_b = NULL, *treq_c = NULL, *treq_d = NULL, *treq_e = NULL;
+       int                     completed = 0;
 
        DEBUG_LVL_SET;
 
@@ -1596,15 +1597,39 @@ static void test_connection_levels_max(void)
        fr_event_corral(el, test_time_base, false);
        fr_event_service(el);
 
-       TEST_CHECK(preq_a->completed == true);
-       TEST_CHECK(preq_a->failed == false);
-       TEST_CHECK(preq_a->cancelled == false);
-       TEST_CHECK(preq_a->freed == true);
+       /*
+        *      Timing issues sometimes cause the requests to be sent out
+        *      of sequence - so check for two being completed, and those two
+        *      being fully handled.
+        */
+       if (preq_a->completed) {
+               TEST_CHECK(preq_a->failed == false);
+               TEST_CHECK(preq_a->cancelled == false);
+               TEST_CHECK(preq_a->freed == true);
+               completed++;
+       }
+
+       if (preq_b->completed) {
+               TEST_CHECK(preq_b->failed == false);
+               TEST_CHECK(preq_b->cancelled == false);
+               TEST_CHECK(preq_b->freed == true);
+               completed++;
+       }
+
+       if (preq_c->completed) {
+               TEST_CHECK(preq_c->failed == false);
+               TEST_CHECK(preq_c->cancelled == false);
+               TEST_CHECK(preq_c->freed == true);
+               completed++;
+       }
 
-       TEST_CHECK(preq_b->completed == true);
-       TEST_CHECK(preq_b->failed == false);
-       TEST_CHECK(preq_b->cancelled == false);
-       TEST_CHECK(preq_b->freed == true);
+       if (preq_d->completed) {
+               TEST_CHECK(preq_d->failed == false);
+               TEST_CHECK(preq_d->cancelled == false);
+               TEST_CHECK(preq_d->freed == true);
+               completed++;
+       }
+       TEST_CHECK(completed == 2);
 
        TEST_CHECK_LEN(fr_trunk_request_count_by_state(trunk, FR_TRUNK_CONN_ALL, FR_TRUNK_REQUEST_STATE_PENDING), 2);
        TEST_CHECK_LEN(fr_trunk_request_count_by_state(trunk, FR_TRUNK_CONN_ALL, FR_TRUNK_REQUEST_STATE_BACKLOG), 0);