X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Funit_test_e2ap_indication.cc;fp=test%2Funit_test_e2ap_indication.cc;h=241337f29d46be145043790028108f5c648d9480;hb=dc68642f5676cdd49f3ef92f983b319e21f16afa;hp=0000000000000000000000000000000000000000;hpb=0054ece5d9d4bcb28ecda2f0f36584f6a64fc869;p=ric-app%2Fadmin.git diff --git a/test/unit_test_e2ap_indication.cc b/test/unit_test_e2ap_indication.cc new file mode 100644 index 0000000..241337f --- /dev/null +++ b/test/unit_test_e2ap_indication.cc @@ -0,0 +1,167 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#define CATCH_CONFIG_MAIN +#include +#include +#include +#include +#include +#include +#include +#include + +#define BUFFER_SIZE 512 + +TEST_CASE("E2AP Indication", "Encoding/Decoding"){ + + ric_indication_helper dinput ; + ric_indication_helper dout; + + + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "UNIT TEST E2AP INDICATION"); + mdclog_init(attr); + mdclog_level_set(MDCLOG_INFO); + mdclog_attr_destroy(attr); + + unsigned char buf_header[BUFFER_SIZE]; + unsigned char buf_msg[BUFFER_SIZE]; + ric_indication test_check; + + SECTION("Incorrect E2AP Indication PDU"){ + size_t data_size = 512; + unsigned char data[data_size]; + for(int i = 0; i < 510; i++){ + data[i] = 'z'; + } + + E2N_E2AP_PDU_t * e2ap_recv = 0; + asn_dec_rval_t dec_res = asn_decode(0,ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, (void**)&(e2ap_recv), data, data_size); + REQUIRE(dec_res.code != RC_OK); + ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2ap_recv); + } + + SECTION("Verify E2AP Indication Encoding Successful"){ + + dinput.action_id = 100; + dinput.func_id = 10; + dinput.indication_sn = 100; + dinput.indication_type = 1; + dinput.req_id = 6; + dinput.req_seq_no = 11; + + strcpy((char *)buf_header, "X2AP Header"); + strcpy((char *)buf_msg, "X2AP_Message"); + + dinput.indication_header = buf_header; + dinput.indication_header_size = strlen((const char *)buf_header); + + dinput.indication_msg = buf_msg; + dinput.indication_msg_size = strlen((const char *)buf_msg); + + + /* encoding */ + size_t data_size = 512; + unsigned char data[data_size]; + + ric_indication indication_pdu; + bool res = indication_pdu.encode_e2ap_indication(&data[0], &data_size, dinput); + REQUIRE(res == true); + } + + + SECTION("Verify constraint checks"){ + + dinput.action_id = 100; + dinput.func_id = 10; + dinput.indication_sn = 100; + dinput.indication_type = 100; + dinput.req_id = 6; + dinput.req_seq_no = 11; + + strcpy((char *)buf_header, "X2AP Header"); + strcpy((char *)buf_msg, "X2AP_Message"); + + dinput.indication_header = buf_header; + dinput.indication_header_size = strlen((const char *)buf_header); + + dinput.indication_msg = buf_msg; + dinput.indication_msg_size = strlen((const char *)buf_msg); + + + /* encoding */ + size_t data_size = 512; + unsigned char data[data_size]; + + ric_indication indication_pdu; + bool res = indication_pdu.encode_e2ap_indication(&data[0], &data_size, dinput); + REQUIRE(res == false); + + + } + SECTION("Verify E2AP Decoding Successful"){ + + dinput.action_id = 100; + dinput.func_id = 10; + dinput.indication_sn = 100; + dinput.indication_type = 1; + dinput.req_id = 6; + dinput.req_seq_no = 11; + + + strcpy((char *)buf_header, "X2AP Header"); + strcpy((char *)buf_msg, "X2AP_Message"); + + dinput.indication_header = buf_header; + dinput.indication_header_size = strlen((const char *)buf_header); + + dinput.indication_msg = buf_msg; + dinput.indication_msg_size = strlen((const char *)buf_msg); + + + /* encoding */ + size_t data_size = 512; + unsigned char data[data_size]; + + ric_indication indication_pdu; + bool res = indication_pdu.encode_e2ap_indication(&data[0], &data_size, dinput); + + E2N_E2AP_PDU_t * e2ap_recv = 0; + asn_dec_rval_t dec_res = asn_decode(0,ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, (void**)&(e2ap_recv), data, data_size); + REQUIRE(dec_res.code == RC_OK); + + res = indication_pdu.get_fields(e2ap_recv->choice.initiatingMessage, dout); + REQUIRE(res == true); + + std::string din_string((const char *)dinput.indication_header, dinput.indication_header_size); + std::string dout_string((const char*)dout.indication_header, dout.indication_header_size); + REQUIRE(din_string == dout_string); + + res = indication_pdu.get_fields(NULL, dout); + REQUIRE(res == false); + + ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2ap_recv); + } + +} + +