2020 */
2121
2222#include " srsran/asn1/liblte_mme.h"
23+ #include " srsran/common/test_common.h"
2324#include " srsran/srslog/srslog.h"
2425#include < iostream>
2526#include < srsran/common/buffer_pool.h>
2627#include < srsran/common/int_helpers.h>
2728
28- #define TESTASSERT (cond ) \
29- { \
30- if (!(cond)) { \
31- std::cout << " [" << __FUNCTION__ << " ][Line " << __LINE__ << " ]: FAIL at " << (#cond) << std::endl; \
32- return -1 ; \
33- } \
34- }
35-
3629int nas_dedicated_eps_bearer_context_setup_request_test ()
3730{
3831 auto & nas_logger = srslog::fetch_basic_logger (" NAS" , false );
@@ -112,7 +105,95 @@ int nas_dedicated_eps_bearer_context_setup_request_test()
112105
113106 srslog::flush ();
114107 printf (" Test NAS Activate Dedicated EPS Bearer Context Request successfull\n " );
115- return 0 ;
108+ return SRSRAN_SUCCESS;
109+ }
110+
111+ int downlink_generic_nas_transport_unpacking_test ()
112+ {
113+ uint8_t nas_message[] = {
114+ 0x27 , 0xae , 0x80 , 0xc8 , 0xf9 , 0x06 , 0x07 , 0x68 , 0x01 , 0x00 , 0x06 , 0xf0 , 0x00 , 0x00 , 0x00 , 0x08 , 0x70 };
115+ srsran::unique_byte_buffer_t buf;
116+ LIBLTE_MME_DOWNLINK_GENERIC_NAS_TRANSPORT_MSG_STRUCT dl_generic_nas_transport;
117+ LIBLTE_ERROR_ENUM err;
118+
119+ copy_msg_to_buffer (buf, nas_message);
120+ err = liblte_mme_unpack_downlink_generic_nas_transport_msg ((LIBLTE_BYTE_MSG_STRUCT*)buf.get (),
121+ &dl_generic_nas_transport);
122+ TESTASSERT (err == LIBLTE_SUCCESS);
123+ TESTASSERT (dl_generic_nas_transport.generic_msg_cont_type == 1 );
124+ TESTASSERT (dl_generic_nas_transport.generic_msg_cont .N_bytes == 6 );
125+ TESTASSERT (dl_generic_nas_transport.add_info_present == false );
126+
127+ return SRSRAN_SUCCESS;
128+ }
129+
130+ int downlink_generic_nas_transport_packing_test ()
131+ {
132+ uint8_t nas_message[] = {
133+ 0x27 , 0x00 , 0x00 , 0x00 , 0x00 , 0xff , 0x07 , 0x68 , 0x01 , 0x00 , 0x06 , 0xf0 , 0x00 , 0x00 , 0x00 , 0x08 , 0x70 };
134+ uint8_t generic_msg_cont[] = {0xf0 , 0x00 , 0x00 , 0x00 , 0x08 , 0x70 };
135+ LIBLTE_BYTE_MSG_STRUCT buf;
136+ LIBLTE_MME_DOWNLINK_GENERIC_NAS_TRANSPORT_MSG_STRUCT dl_generic_nas_transport;
137+ LIBLTE_ERROR_ENUM err;
138+
139+ dl_generic_nas_transport.generic_msg_cont_type = 1 ;
140+ dl_generic_nas_transport.generic_msg_cont .N_bytes = sizeof (generic_msg_cont);
141+ memcpy (dl_generic_nas_transport.generic_msg_cont .msg , generic_msg_cont, sizeof (generic_msg_cont));
142+ dl_generic_nas_transport.add_info_present = false ;
143+
144+ err = liblte_mme_pack_downlink_generic_nas_transport_msg (
145+ &dl_generic_nas_transport, LIBLTE_MME_SECURITY_HDR_TYPE_INTEGRITY_AND_CIPHERED, 0xffffffff , &buf);
146+
147+ TESTASSERT (err == LIBLTE_SUCCESS);
148+ TESTASSERT (buf.N_bytes == sizeof (nas_message));
149+ TESTASSERT (memcmp (buf.msg , nas_message, buf.N_bytes ) == 0 );
150+ return SRSRAN_SUCCESS;
151+ }
152+
153+ int downlink_generic_nas_transport_with_add_info_unpacking_test ()
154+ {
155+ uint8_t nas_message[] = {0x27 , 0xae , 0x80 , 0xc8 , 0xf9 , 0x06 , 0x07 , 0x68 , 0x01 , 0x00 , 0x06 ,
156+ 0xf0 , 0x00 , 0x00 , 0x00 , 0x08 , 0x70 , 0x65 , 0x02 , 0x11 , 0x11 };
157+ srsran::unique_byte_buffer_t buf;
158+ LIBLTE_MME_DOWNLINK_GENERIC_NAS_TRANSPORT_MSG_STRUCT dl_generic_nas_transport;
159+ LIBLTE_ERROR_ENUM err;
160+
161+ copy_msg_to_buffer (buf, nas_message);
162+ err = liblte_mme_unpack_downlink_generic_nas_transport_msg ((LIBLTE_BYTE_MSG_STRUCT*)buf.get (),
163+ &dl_generic_nas_transport);
164+ TESTASSERT (err == LIBLTE_SUCCESS);
165+ TESTASSERT (dl_generic_nas_transport.generic_msg_cont_type == 1 );
166+ TESTASSERT (dl_generic_nas_transport.generic_msg_cont .N_bytes == 6 );
167+ TESTASSERT (dl_generic_nas_transport.add_info_present == true );
168+ TESTASSERT (dl_generic_nas_transport.add_info .N_octets == 2 );
169+
170+ return SRSRAN_SUCCESS;
171+ }
172+
173+ int downlink_generic_nas_transport_with_add_info_packing_test ()
174+ {
175+ uint8_t nas_message[] = {0x27 , 0x00 , 0x00 , 0x00 , 0x00 , 0xff , 0x07 , 0x68 , 0x01 , 0x00 , 0x06 ,
176+ 0xf0 , 0x00 , 0x00 , 0x00 , 0x08 , 0x70 , 0x65 , 0x02 , 0x11 , 0x11 };
177+ uint8_t generic_msg_cont[] = {0xf0 , 0x00 , 0x00 , 0x00 , 0x08 , 0x70 };
178+ uint8_t add_info[] = {0x11 , 0x11 };
179+ LIBLTE_BYTE_MSG_STRUCT buf;
180+ LIBLTE_MME_DOWNLINK_GENERIC_NAS_TRANSPORT_MSG_STRUCT dl_generic_nas_transport;
181+ LIBLTE_ERROR_ENUM err;
182+
183+ dl_generic_nas_transport.generic_msg_cont_type = 1 ;
184+ dl_generic_nas_transport.generic_msg_cont .N_bytes = sizeof (generic_msg_cont);
185+ memcpy (dl_generic_nas_transport.generic_msg_cont .msg , generic_msg_cont, sizeof (generic_msg_cont));
186+ dl_generic_nas_transport.add_info_present = true ;
187+ dl_generic_nas_transport.add_info .N_octets = sizeof (add_info);
188+ memcpy (dl_generic_nas_transport.add_info .info , add_info, sizeof (add_info));
189+
190+ err = liblte_mme_pack_downlink_generic_nas_transport_msg (
191+ &dl_generic_nas_transport, LIBLTE_MME_SECURITY_HDR_TYPE_INTEGRITY_AND_CIPHERED, 0xffffffff , &buf);
192+
193+ TESTASSERT (err == LIBLTE_SUCCESS);
194+ TESTASSERT (buf.N_bytes == sizeof (nas_message));
195+ TESTASSERT (memcmp (buf.msg , nas_message, buf.N_bytes ) == 0 );
196+ return SRSRAN_SUCCESS;
116197}
117198
118199int main (int argc, char ** argv)
@@ -121,9 +202,13 @@ int main(int argc, char** argv)
121202 asn1_logger.set_level (srslog::basic_levels::debug);
122203 asn1_logger.set_hex_dump_max_size (-1 );
123204
124- srslog::init ( );
205+ srsran::test_init (argc, argv );
125206
126- int result = nas_dedicated_eps_bearer_context_setup_request_test ();
207+ TESTASSERT (nas_dedicated_eps_bearer_context_setup_request_test () == SRSRAN_SUCCESS);
208+ TESTASSERT (downlink_generic_nas_transport_unpacking_test () == SRSRAN_SUCCESS);
209+ TESTASSERT (downlink_generic_nas_transport_packing_test () == SRSRAN_SUCCESS);
210+ TESTASSERT (downlink_generic_nas_transport_with_add_info_unpacking_test () == SRSRAN_SUCCESS);
211+ TESTASSERT (downlink_generic_nas_transport_with_add_info_packing_test () == SRSRAN_SUCCESS);
127212
128- return result ;
213+ return SRSRAN_SUCCESS ;
129214}
0 commit comments