2 ==================================================================================
4 Copyright (c) 2019-2020 AT&T Intellectual Property.
6 Licensed under the Apache License, Version 2.0 (the "License");
7 you may not use this file except in compliance with the License.
8 You may obtain a copy of the License at
10 http://www.apache.org/licenses/LICENSE-2.0
12 Unless required by applicable law or agreed to in writing, software
13 distributed under the License is distributed on an "AS IS" BASIS,
14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 See the License for the specific language governing permissions and
16 limitations under the License.
17 ==================================================================================
22 * Created on: Apr, 2020
23 * Author: Shraboni Jana
26 #ifndef TEST_TEST_SUBS_H_
27 #define TEST_TEST_SUBS_H_
30 #include<gtest/gtest.h>
32 #include "e2ap_subscription_request.hpp"
34 #define BUFFER_SIZE 1024
38 //generating a E2AP Subscription Message
39 TEST(E2SMSubREQ, MultipleRANParameters)
41 unsigned char buff[1024];
42 size_t buff_size = 1024;
45 //creating Action Definition
46 HWActionDefinition e2sm_actdefn1;
47 HWActionDefinition::RANParamIEs rparam1;
49 rparam1.set_param_id(1);
50 rparam1.set_param_name("ENodeBID");
51 rparam1.set_param_test(1);
52 rparam1.set_param_value("SR123");
54 e2sm_actdefn1.add(rparam1);
56 HWActionDefinition::RANParamIEs rparam2;
58 rparam2.set_param_id(1);
59 rparam2.set_param_name("UEID");
60 rparam2.set_param_test(2);
61 rparam2.set_param_value("UE123");
63 e2sm_actdefn1.add(rparam2);
68 E2APAction<HWActionDefinition> actionObj;
69 E2APAction<HWActionDefinition>::ActionIEs ieobj;
70 ieobj.set_ricActionID(1);
71 ieobj.set_ricActionType(1);
72 ieobj.set_ricActionDefinition(e2sm_actdefn1);
76 HWEventTriggerDefinition eventObj;
77 eventObj.set_triggerNature(0);
79 //Now form the subscription.
81 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs infoObj;
83 infoObj.set_ranFunctionID(1);
84 infoObj.set_ricInstanceID(1);
85 infoObj.set_ricRequestorID(3);
86 infoObj.set_ricAction_ToBeSetup_List(actionObj);
87 infoObj.set_ricEventTriggerDefinition(eventObj);
90 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(infoObj);
92 //Alternate way of implementation
93 //requestObj.add(E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs().set_ranFunctionID(1).set_ricInstanceID(2).set_ricRequestorID(3).set_ricAction_ToBeSetup_List(actionObj));
95 bool res = requestObj.encode(buff, &buff_size);
99 TEST(E2SMSubREQ, SubRespMultipleActions)
101 unsigned char buff[1024];
102 size_t buff_size = 1024;
105 //creating Action Definition 1
106 HWActionDefinition e2sm_actdefn1;
107 HWActionDefinition::RANParamIEs rparam1;
109 rparam1.set_param_id(1);
110 rparam1.set_param_name("ENodeBID");
111 rparam1.set_param_test(1);
112 rparam1.set_param_value("SR123");
114 e2sm_actdefn1.add(rparam1);
116 HWActionDefinition e2sm_actdefn2;
117 HWActionDefinition::RANParamIEs rparam2;
119 rparam2.set_param_id(1);
120 rparam2.set_param_name("UEID");
121 rparam2.set_param_test(2);
122 rparam2.set_param_value("UE123");
124 e2sm_actdefn2.add(rparam2);
127 //first Action Object
129 E2APAction<HWActionDefinition> actionObj;
130 E2APAction<HWActionDefinition>::ActionIEs ieobj;
131 ieobj.set_ricActionID(1);
132 ieobj.set_ricActionType(1);
133 ieobj.set_ricActionDefinition(e2sm_actdefn1);
134 ieobj.set_ricSubsequentAction(1,1);
135 actionObj.add(ieobj);
137 //Second Action object.
138 actionObj.add(E2APAction<HWActionDefinition>::ActionIEs().set_ricActionID(4).set_ricActionType(2).set_ricActionDefinition(e2sm_actdefn2));
141 HWEventTriggerDefinition eventObj;
142 eventObj.set_triggerNature(1);
146 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs dataObj;
148 dataObj.set_ranFunctionID(1);
149 dataObj.set_ricInstanceID(1);
150 dataObj.set_ricRequestorID(3);
151 dataObj.set_ricAction_ToBeSetup_List(actionObj);
152 dataObj.set_ricEventTriggerDefinition(eventObj);
154 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(dataObj);
155 bool res = requestObj.encode(buff, &buff_size);
158 std::cout << requestObj.get_error() << std::endl;
166 //create a MOck e2term
170 const char* meid = "test1";
171 const char* sub_id = "sub1";
172 //Send the Subscription Response.
174 hdr.message_type = RIC_SUB_RESP;
175 clock_gettime(CLOCK_REALTIME, &(hdr.ts));
176 const char* strMsg = "Subscription Response for MEID: test1";
177 hdr.payload_length = strlen(strMsg);
178 strcpy((char*)hdr.meid, meid);
179 strcpy((char*)hdr.sid,sub_id);
180 int total_num_msgs = 2;
181 int num_attempts = 10;
183 std::unique_ptr<XappRmr> rmr;
184 rmr = std::make_unique<XappRmr>("4591",num_attempts);
185 rmr->xapp_rmr_init(true);
189 std::unique_ptr<Xapp> hw_xapp = std::make_unique<Xapp>(std::ref(config),std::ref(*rmr));
191 bool res_msg = rmr->xapp_rmr_send(&hdr,(void*)strMsg);
193 mdclog_write(MDCLOG_INFO, "Message Sent Successfully");
201 #endif /* TEST_TEST_SUBS_H_ */