mgcp_client_test: test long conn_id
Add a full length (32 characters according to spec) conn ID in a CRCX response,
as well as a too long one.
The too long one is currently silently truncated, a subsequent patch will
improve on that (If2a1aab1f13e771a6705c430e3c75bd42477a23b).
Change-Id: I5f2d52f086ea2d330fcce88a176488ace972bf79
diff --git a/tests/mgcp_client/mgcp_client_test.c b/tests/mgcp_client/mgcp_client_test.c
index 74ed53e..e6982e4 100644
--- a/tests/mgcp_client/mgcp_client_test.c
+++ b/tests/mgcp_client/mgcp_client_test.c
@@ -162,6 +162,60 @@
"a=ptime:20\r\n");
}
+void test_crcx_long_conn_id(void)
+{
+ struct msgb *msg;
+ mgcp_trans_id_t trans_id;
+
+ printf("\n===== %s =====\n", __func__);
+
+ if (mgcp)
+ talloc_free(mgcp);
+ mgcp = mgcp_client_init(ctx, &conf);
+
+ msg = mgcp_msg_crcx(mgcp, 23, 42, MGCP_CONN_LOOPBACK);
+ trans_id = dummy_mgcp_send(msg);
+
+ reply_to(trans_id, 200, "OK",
+ "I: 123456789abcdef0123456789ABCDEF0\r\n\r\n"
+ "v=0\r\n"
+ "o=- 1 23 IN IP4 10.9.1.120\r\n"
+ "s=-\r\n"
+ "c=IN IP4 10.9.1.120\r\n"
+ "t=0 0\r\n"
+ "m=audio 16002 RTP/AVP 110 96\r\n"
+ "a=rtpmap:110 AMR/8000\r\n"
+ "a=rtpmap:96 GSM-EFR/8000\r\n"
+ "a=ptime:20\r\n");
+}
+
+void test_crcx_too_long_conn_id(void)
+{
+ struct msgb *msg;
+ mgcp_trans_id_t trans_id;
+
+ printf("\n===== %s =====\n", __func__);
+
+ if (mgcp)
+ talloc_free(mgcp);
+ mgcp = mgcp_client_init(ctx, &conf);
+
+ msg = mgcp_msg_crcx(mgcp, 23, 42, MGCP_CONN_LOOPBACK);
+ trans_id = dummy_mgcp_send(msg);
+
+ reply_to(trans_id, 200, "OK",
+ "I: 123456789abcdef0123456789ABCDEF01001029\r\n\r\n"
+ "v=0\r\n"
+ "o=- 1 23 IN IP4 10.9.1.120\r\n"
+ "s=-\r\n"
+ "c=IN IP4 10.9.1.120\r\n"
+ "t=0 0\r\n"
+ "m=audio 16002 RTP/AVP 110 96\r\n"
+ "a=rtpmap:110 AMR/8000\r\n"
+ "a=rtpmap:96 GSM-EFR/8000\r\n"
+ "a=ptime:20\r\n");
+}
+
void test_mgcp_msg(void)
{
struct msgb *msg;
@@ -570,6 +624,8 @@
test_sdp_section_start();
test_map_codec_to_pt_and_map_pt_to_codec();
test_map_pt_to_codec();
+ test_crcx_long_conn_id();
+ test_crcx_too_long_conn_id();
printf("Done\n");
fprintf(stderr, "Done\n");
diff --git a/tests/mgcp_client/mgcp_client_test.ok b/tests/mgcp_client/mgcp_client_test.ok
index 5e14219..aedb247 100644
--- a/tests/mgcp_client/mgcp_client_test.ok
+++ b/tests/mgcp_client/mgcp_client_test.ok
@@ -196,4 +196,88 @@
2 <= 2
100 <= 100
+
+===== test_crcx_long_conn_id =====
+composed:
+-----
+CRCX 1 17@mgw MGCP 1.0
+C: 2a
+L: p:20, a:AMR, nt:IN
+M: loopback
+
+-----
+composed response:
+-----
+200 1 OK
+I: 123456789abcdef0123456789ABCDEF0
+
+v=0
+o=- 1 23 IN IP4 10.9.1.120
+s=-
+c=IN IP4 10.9.1.120
+t=0 0
+m=audio 16002 RTP/AVP 110 96
+a=rtpmap:110 AMR/8000
+a=rtpmap:96 GSM-EFR/8000
+a=ptime:20
+
+-----
+response cb received:
+ head.response_code = 200
+ head.trans_id = 1
+ head.conn_id = 123456789abcdef0123456789ABCDEF0
+ head.comment = OK
+ audio_port = 16002
+ audio_ip = 10.9.1.120
+ ptime = 20
+ codecs_len = 2
+ codecs[0] = 112
+ codecs[1] = 110
+ ptmap_len = 2
+ ptmap[0].codec = 112
+ ptmap[0].pt = 110
+ ptmap[1].codec = 110
+ ptmap[1].pt = 96
+
+===== test_crcx_too_long_conn_id =====
+composed:
+-----
+CRCX 1 17@mgw MGCP 1.0
+C: 2a
+L: p:20, a:AMR, nt:IN
+M: loopback
+
+-----
+composed response:
+-----
+200 1 OK
+I: 123456789abcdef0123456789ABCDEF01001029
+
+v=0
+o=- 1 23 IN IP4 10.9.1.120
+s=-
+c=IN IP4 10.9.1.120
+t=0 0
+m=audio 16002 RTP/AVP 110 96
+a=rtpmap:110 AMR/8000
+a=rtpmap:96 GSM-EFR/8000
+a=ptime:20
+
+-----
+response cb received:
+ head.response_code = 200
+ head.trans_id = 1
+ head.conn_id = 123456789abcdef0123456789ABCDEF0
+ head.comment = OK
+ audio_port = 16002
+ audio_ip = 10.9.1.120
+ ptime = 20
+ codecs_len = 2
+ codecs[0] = 112
+ codecs[1] = 110
+ ptmap_len = 2
+ ptmap[0].codec = 112
+ ptmap[0].pt = 110
+ ptmap[1].codec = 110
+ ptmap[1].pt = 96
Done