Control Message Encode/Decode
[ric-app/hw.git] / test / test_subs.h
1 /*
2 ==================================================================================
3
4         Copyright (c) 2019-2020 AT&T Intellectual Property.
5
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
9
10        http://www.apache.org/licenses/LICENSE-2.0
11
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 ==================================================================================
18 */
19 /*
20  * test_subs.h
21  *
22  *  Created on: Apr, 2020
23  *      Author: Shraboni Jana
24  */
25
26 #ifndef TEST_TEST_SUBS_H_
27 #define TEST_TEST_SUBS_H_
28
29 #include<iostream>
30 #include<gtest/gtest.h>
31
32 #include "e2ap_subscription_request.hpp"
33 #include "e2ap_subsdel_request.hpp"
34 #include "xapp.hpp"
35 #define BUFFER_SIZE 1024
36
37 using namespace std;
38
39 //generating a E2AP Subscription Message
40 TEST(SubscriptionRequest, MultipleRANParameters)
41 {
42         unsigned char buff[1024];
43         size_t buff_size = 1024;
44
45
46         //creating Action Definition
47         HWActionDefinition e2sm_actdefn1;
48         HWActionDefinition::RANParamIEs rparam1;
49
50         rparam1.set_param_id(1);
51         rparam1.set_param_name("ENodeBID");
52         rparam1.set_param_test(1);
53         rparam1.set_param_value("SR123");
54
55         e2sm_actdefn1.add(rparam1);
56
57         HWActionDefinition::RANParamIEs rparam2;
58
59         rparam2.set_param_id(1);
60         rparam2.set_param_name("UEID");
61         rparam2.set_param_test(2);
62         rparam2.set_param_value("UE123");
63
64         e2sm_actdefn1.add(rparam2);
65
66
67         //first Action Object
68
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);
74
75         actionObj.add(ieobj);
76
77         HWEventTriggerDefinition eventObj;
78         eventObj.set_triggerNature(0);
79
80         //Now form the subscription.
81
82         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs infoObj;
83
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);
89
90
91         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(infoObj);
92
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));
95
96         bool res = requestObj.encode(buff, &buff_size);
97         ASSERT_TRUE(res);
98 }
99
100 TEST(SubscriptionRequest, MultipleActions)
101 {
102         unsigned char buff[1024];
103         size_t buff_size = 1024;
104
105
106         //creating Action Definition 1
107         HWActionDefinition e2sm_actdefn1;
108         HWActionDefinition::RANParamIEs rparam1;
109
110         rparam1.set_param_id(1);
111         rparam1.set_param_name("ENodeBID");
112         rparam1.set_param_test(1);
113         rparam1.set_param_value("SR123");
114
115         e2sm_actdefn1.add(rparam1);
116
117         HWActionDefinition e2sm_actdefn2;
118         HWActionDefinition::RANParamIEs rparam2;
119
120         rparam2.set_param_id(1);
121         rparam2.set_param_name("UEID");
122         rparam2.set_param_test(2);
123         rparam2.set_param_value("UE123");
124
125         e2sm_actdefn2.add(rparam2);
126
127
128         //first Action Object
129
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);
137
138         //Second Action object.
139         actionObj.add(E2APAction<HWActionDefinition>::ActionIEs().set_ricActionID(4).set_ricActionType(2).set_ricActionDefinition(e2sm_actdefn2));
140
141
142         HWEventTriggerDefinition eventObj;
143         eventObj.set_triggerNature(1);
144
145
146
147         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs dataObj;
148
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);
154
155         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(dataObj);
156         bool res = requestObj.encode(buff, &buff_size);
157         if(!res)
158         {
159                 std::cout << requestObj.get_error() << std::endl;
160         }
161         ASSERT_TRUE(res);
162
163 }
164
165 TEST(E2AP, SubscriptionDeleteRequest){
166
167         unsigned char buff[1024];
168         size_t buff_size = 1024;
169
170
171         E2APSubscriptionDeleteRequest::SubscriptionDeleteRequestIEs dataObj;
172
173         dataObj.set_ranFunctionID(1);
174         dataObj.set_ricInstanceID(1);
175         dataObj.set_ricRequestorID(3);
176
177         E2APSubscriptionDeleteRequest requestObj(dataObj);
178         bool res = requestObj.encode(buff, &buff_size);
179         if(!res)
180         {
181                 std::cout << requestObj.get_error() << std::endl;
182         }
183         ASSERT_TRUE(res);
184
185
186 }
187
188
189
190 //create a MOck e2term
191
192 TEST (MOCK, E2TERM){
193
194          const char* meid = "test1";
195          const char* sub_id = "sub1";
196          //Send the Subscription Response.
197          xapp_rmr_header hdr;
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;
206
207          std::unique_ptr<XappRmr> rmr;
208          rmr = std::make_unique<XappRmr>("4591",num_attempts);
209          rmr->xapp_rmr_init(true);
210
211          XappSettings config;
212
213          std::unique_ptr<Xapp> hw_xapp = std::make_unique<Xapp>(std::ref(config),std::ref(*rmr));
214          while(1){
215                  bool res_msg = rmr->xapp_rmr_send(&hdr,(void*)strMsg);
216                  if(res_msg){
217                          mdclog_write(MDCLOG_INFO, "Message Sent Successfully");
218                          break;
219                  }
220                  sleep(10);
221          }
222 }
223
224
225 #endif /* TEST_TEST_SUBS_H_ */