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 ==================================================================================
19 #ifndef TEST_TEST_SUBS_H_
20 #define TEST_TEST_SUBS_H_
23 #include<gtest/gtest.h>
25 #define BUFFER_SIZE 1024
29 //generating a E2AP Subscription Message
30 TEST(SubscriptionRequest, MultipleRANParameters)
32 unsigned char buff[1024];
33 size_t buff_size = 1024;
36 //creating Action Definition
37 HWActionDefinition e2sm_actdefn1;
38 HWActionDefinition::RANParamIEs rparam1;
40 rparam1.set_param_id(1);
41 rparam1.set_param_name("ENodeBID");
42 rparam1.set_param_test(1);
43 rparam1.set_param_value("SR123");
45 e2sm_actdefn1.add(rparam1);
47 HWActionDefinition::RANParamIEs rparam2;
49 rparam2.set_param_id(1);
50 rparam2.set_param_name("UEID");
51 rparam2.set_param_test(2);
52 rparam2.set_param_value("UE123");
54 e2sm_actdefn1.add(rparam2);
59 E2APAction<HWActionDefinition> actionObj;
60 E2APAction<HWActionDefinition>::ActionIEs ieobj;
61 ieobj.set_ricActionID(1);
62 ieobj.set_ricActionType(1);
63 ieobj.set_ricActionDefinition(e2sm_actdefn1);
67 HWEventTriggerDefinition eventObj;
68 eventObj.set_triggerNature(0);
70 //Now form the subscription.
72 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs infoObj;
74 infoObj.set_ranFunctionID(1);
75 infoObj.set_ricInstanceID(1);
76 infoObj.set_ricRequestorID(3);
77 infoObj.set_ricAction_ToBeSetup_List(actionObj);
78 infoObj.set_ricEventTriggerDefinition(eventObj);
81 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(infoObj);
83 //Alternate way of implementation
84 //requestObj.add(E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs().set_ranFunctionID(1).set_ricInstanceID(2).set_ricRequestorID(3).set_ricAction_ToBeSetup_List(actionObj));
86 bool res = requestObj.encode(buff, &buff_size);
90 TEST(SubscriptionRequest, MultipleActions)
92 unsigned char buff[1024];
93 size_t buff_size = 1024;
96 //creating Action Definition 1
97 HWActionDefinition e2sm_actdefn1;
98 HWActionDefinition::RANParamIEs rparam1;
100 rparam1.set_param_id(1);
101 rparam1.set_param_name("ENodeBID");
102 rparam1.set_param_test(1);
103 rparam1.set_param_value("SR123");
105 e2sm_actdefn1.add(rparam1);
107 HWActionDefinition e2sm_actdefn2;
108 HWActionDefinition::RANParamIEs rparam2;
110 rparam2.set_param_id(1);
111 rparam2.set_param_name("UEID");
112 rparam2.set_param_test(2);
113 rparam2.set_param_value("UE123");
115 e2sm_actdefn2.add(rparam2);
118 //first Action Object
120 E2APAction<HWActionDefinition> actionObj;
121 E2APAction<HWActionDefinition>::ActionIEs ieobj;
122 ieobj.set_ricActionID(1);
123 ieobj.set_ricActionType(1);
124 ieobj.set_ricActionDefinition(e2sm_actdefn1);
125 ieobj.set_ricSubsequentAction(1,1);
126 actionObj.add(ieobj);
128 //Second Action object.
129 actionObj.add(E2APAction<HWActionDefinition>::ActionIEs().set_ricActionID(4).set_ricActionType(2).set_ricActionDefinition(e2sm_actdefn2));
132 HWEventTriggerDefinition eventObj;
133 eventObj.set_triggerNature(1);
137 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs dataObj;
139 dataObj.set_ranFunctionID(1);
140 dataObj.set_ricInstanceID(1);
141 dataObj.set_ricRequestorID(3);
142 dataObj.set_ricAction_ToBeSetup_List(actionObj);
143 dataObj.set_ricEventTriggerDefinition(eventObj);
145 E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(dataObj);
146 bool res = requestObj.encode(buff, &buff_size);
149 std::cout << requestObj.get_error() << std::endl;
155 //create a MOck e2term
158 const char* meid = "test1";
159 const char* sub_id = "sub1";
160 //Send the Subscription Response.
162 hdr.message_type = RIC_SUB_RESP;
163 clock_gettime(CLOCK_REALTIME, &(hdr.ts));
164 const char* strMsg = "Subscription Response for MEID: test1";
165 hdr.payload_length = strlen(strMsg);
166 strcpy((char*)hdr.meid, meid);
167 strcpy((char*)hdr.sid,sub_id);
168 int total_num_msgs = 2;
169 int num_attempts = 10;
171 std::unique_ptr<XappRmr> rmr;
172 rmr = std::make_unique<XappRmr>("4591",num_attempts);
173 rmr->xapp_rmr_init(true);
177 std::unique_ptr<Xapp> hw_xapp = std::make_unique<Xapp>(std::ref(config),std::ref(*rmr));
179 bool res_msg = rmr->xapp_rmr_send(&hdr,(void*)strMsg);
181 mdclog_write(MDCLOG_INFO, "Message Sent Successfully");
188 #endif /* TEST_TEST_SUBS_H_ */