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"
33 #include "e2ap_subsdel_request.hpp"
35 #define BUFFER_SIZE 1024
39 //generating a E2AP Subscription Message
40 TEST(SubscriptionRequest, MultipleRANParameters)
42 unsigned char buff[1024];
43 size_t buff_size = 1024;
46 //creating Action Definition
47 HWActionDefinition e2sm_actdefn1;
48 HWActionDefinition::RANParamIEs rparam1;
50 rparam1.set_param_id(1);
51 rparam1.set_param_name("ENodeBID");
52 rparam1.set_param_test(1);
53 rparam1.set_param_value("SR123");
55 e2sm_actdefn1.add(rparam1);
57 HWActionDefinition::RANParamIEs rparam2;
59 rparam2.set_param_id(1);
60 rparam2.set_param_name("UEID");
61 rparam2.set_param_test(2);
62 rparam2.set_param_value("UE123");
64 e2sm_actdefn1.add(rparam2);
69 E2APAction<HWActionDefinition> actionObj;
70 E2APAction<HWActionDefinition>::ActionIEs ieobj;
71 ieobj.set_ricActionID(1);
72 ieobj.set_ricActionType(1);
73 ieobj.set_ricActionDefinition(e2sm_actdefn1);
77 HWEventTriggerDefinition eventObj;
78 eventObj.set_triggerNature(0);
80 //Now form the subscription.
82 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs infoObj;
84 infoObj.set_ranFunctionID(1);
85 infoObj.set_ricInstanceID(1);
86 infoObj.set_ricRequestorID(3);
87 infoObj.set_ricAction_ToBeSetup_List(actionObj);
88 infoObj.set_ricEventTriggerDefinition(eventObj);
91 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(infoObj);
93 //Alternate way of implementation
94 //requestObj.add(E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs().set_ranFunctionID(1).set_ricInstanceID(2).set_ricRequestorID(3).set_ricAction_ToBeSetup_List(actionObj));
96 bool res = requestObj.encode(buff, &buff_size);
100 TEST(SubscriptionRequest, MultipleActions)
102 unsigned char buff[1024];
103 size_t buff_size = 1024;
106 //creating Action Definition 1
107 HWActionDefinition e2sm_actdefn1;
108 HWActionDefinition::RANParamIEs rparam1;
110 rparam1.set_param_id(1);
111 rparam1.set_param_name("ENodeBID");
112 rparam1.set_param_test(1);
113 rparam1.set_param_value("SR123");
115 e2sm_actdefn1.add(rparam1);
117 HWActionDefinition e2sm_actdefn2;
118 HWActionDefinition::RANParamIEs rparam2;
120 rparam2.set_param_id(1);
121 rparam2.set_param_name("UEID");
122 rparam2.set_param_test(2);
123 rparam2.set_param_value("UE123");
125 e2sm_actdefn2.add(rparam2);
128 //first Action Object
130 E2APAction<HWActionDefinition> actionObj;
131 E2APAction<HWActionDefinition>::ActionIEs ieobj;
132 ieobj.set_ricActionID(1);
133 ieobj.set_ricActionType(1);
134 ieobj.set_ricActionDefinition(e2sm_actdefn1);
135 ieobj.set_ricSubsequentAction(1,1);
136 actionObj.add(ieobj);
138 //Second Action object.
139 actionObj.add(E2APAction<HWActionDefinition>::ActionIEs().set_ricActionID(4).set_ricActionType(2).set_ricActionDefinition(e2sm_actdefn2));
142 HWEventTriggerDefinition eventObj;
143 eventObj.set_triggerNature(1);
147 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs dataObj;
149 dataObj.set_ranFunctionID(1);
150 dataObj.set_ricInstanceID(1);
151 dataObj.set_ricRequestorID(3);
152 dataObj.set_ricAction_ToBeSetup_List(actionObj);
153 dataObj.set_ricEventTriggerDefinition(eventObj);
155 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(dataObj);
156 bool res = requestObj.encode(buff, &buff_size);
159 std::cout << requestObj.get_error() << std::endl;
165 TEST(E2AP, SubscriptionDeleteRequest){
167 unsigned char buff[1024];
168 size_t buff_size = 1024;
171 E2APSubscriptionDeleteRequest::SubscriptionDeleteRequestIEs dataObj;
173 dataObj.set_ranFunctionID(1);
174 dataObj.set_ricInstanceID(1);
175 dataObj.set_ricRequestorID(3);
177 E2APSubscriptionDeleteRequest requestObj(dataObj);
178 bool res = requestObj.encode(buff, &buff_size);
181 std::cout << requestObj.get_error() << std::endl;
190 //create a MOck e2term
194 const char* meid = "test1";
195 const char* sub_id = "sub1";
196 //Send the Subscription Response.
198 hdr.message_type = RIC_SUB_RESP;
199 clock_gettime(CLOCK_REALTIME, &(hdr.ts));
200 const char* strMsg = "Subscription Response for MEID: test1";
201 hdr.payload_length = strlen(strMsg);
202 strcpy((char*)hdr.meid, meid);
203 strcpy((char*)hdr.sid,sub_id);
204 int total_num_msgs = 2;
205 int num_attempts = 10;
207 std::unique_ptr<XappRmr> rmr;
208 rmr = std::make_unique<XappRmr>("4591",num_attempts);
209 rmr->xapp_rmr_init(true);
213 std::unique_ptr<Xapp> hw_xapp = std::make_unique<Xapp>(std::ref(config),std::ref(*rmr));
215 bool res_msg = rmr->xapp_rmr_send(&hdr,(void*)strMsg);
217 mdclog_write(MDCLOG_INFO, "Message Sent Successfully");
225 #endif /* TEST_TEST_SUBS_H_ */