]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
test_res_rtp: Enable FIR and REMB nominal tests.
authorJoshua Colp <jcolp@digium.com>
Mon, 14 Oct 2019 11:19:23 +0000 (11:19 +0000)
committerJoshua Colp <jcolp@digium.com>
Mon, 14 Oct 2019 16:49:05 +0000 (11:49 -0500)
Now that both FIR and REMB are being sent in compound packets
these tests can be enabled.

This also extends the REMB nominal test to cover the REMB
contents itself.

Change-Id: Ibfee526ad780eefcce5dd787f53785382210024a

tests/test_res_rtp.c

index ecedb4f59959bf8cc7f066ebd8fdff5db7eb5a25..08c9971777e4df32d0d6b05fe303b88a4401fa75 100644 (file)
@@ -327,6 +327,7 @@ AST_TEST_DEFINE(remb_nominal)
                .data.ptr = &feedback,
                .datalen = sizeof(feedback),
        };
+       struct ast_rtp_rtcp_feedback *received_feedback;
 
        switch (cmd) {
        case TEST_INIT:
@@ -337,8 +338,7 @@ AST_TEST_DEFINE(remb_nominal)
                        "Tests sending and receiving a REMB packet";
                return AST_TEST_NOT_RUN;
        case TEST_EXECUTE:
-               /* Disable for now - there's a bug! */
-               return AST_TEST_NOT_RUN;
+               break;
        }
 
        test_sched = ast_sched_context_create();
@@ -353,12 +353,7 @@ AST_TEST_DEFINE(remb_nominal)
 
        ast_rtp_instance_write(instance1, &frame_out);
 
-       /*
-        * There may be some additional work that needs to be done here, depending on how
-        * Asterisk handles the reading in of compound packets. We might get an ast_null_frame
-        * here instead of the REMB frame. We'll need to check the frametype to distinguish
-        * between them (AST_FRAME_NULL for ast_null_frame, AST_FRAME_RTCP for REMB).
-        */
+       /* Verify the high level aspects of the frame */
        frame_in = ast_rtp_instance_read(instance2, 0);
        ast_test_validate(test, frame_in != NULL, "Did not receive a REMB frame");
        ast_test_validate(test, frame_in->frametype == AST_FRAME_RTCP,
@@ -366,6 +361,15 @@ AST_TEST_DEFINE(remb_nominal)
        ast_test_validate(test, frame_in->subclass.integer == AST_RTP_RTCP_PSFB,
                "REMB frame did not have the expected subclass integer");
 
+       /* Verify the actual REMB information itself */
+       received_feedback = frame_in->data.ptr;
+       ast_test_validate(test, received_feedback->fmt == AST_RTP_RTCP_FMT_REMB,
+               "REMB frame did not have the expected feedback format");
+       ast_test_validate(test, received_feedback->remb.br_exp == feedback.remb.br_exp,
+               "REMB received exponent did not match sent exponent");
+       ast_test_validate(test, received_feedback->remb.br_mantissa == feedback.remb.br_mantissa,
+               "REMB received mantissa did not match sent mantissa");
+
        return AST_TEST_PASS;
 }
 
@@ -447,8 +451,7 @@ AST_TEST_DEFINE(fir_nominal)
                        "Tests sending and receiving a FIR packet";
                return AST_TEST_NOT_RUN;
        case TEST_EXECUTE:
-               /* Disable for now - there's a bug! */
-               return AST_TEST_NOT_RUN;
+               break;
        }
 
        test_sched = ast_sched_context_create();
@@ -475,9 +478,6 @@ AST_TEST_DEFINE(fir_nominal)
         * We only receive one frame, the FIR request. It won't have a subclass integer of
         * 206 (PSFB) because ast_rtcp_interpret sets it to 18 (AST_CONTROL_VIDUPDATE), so
         * check for that.
-        *
-        * NOTE - similar to REMB, there may be more that needs to be done here when the
-        * packet is sent as a compound packet!
         */
        frame_in = ast_rtp_instance_read(instance2, 0);
        ast_test_validate(test, frame_in != NULL, "Did not receive a FIR frame");