Switching to riclibe2ap
[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 "xapp.hpp"
34 #define BUFFER_SIZE 1024
35
36 using namespace std;
37
38 //generating a E2AP Subscription Message
39 TEST(E2SMSubREQ, MultipleRANParameters)
40 {
41         unsigned char buff[1024];
42         size_t buff_size = 1024;
43
44
45         //creating Action Definition
46         HWActionDefinition e2sm_actdefn1;
47         HWActionDefinition::RANParamIEs rparam1;
48
49         rparam1.set_param_id(1);
50         rparam1.set_param_name("ENodeBID");
51         rparam1.set_param_test(1);
52         rparam1.set_param_value("SR123");
53
54         e2sm_actdefn1.add(rparam1);
55
56         HWActionDefinition::RANParamIEs rparam2;
57
58         rparam2.set_param_id(1);
59         rparam2.set_param_name("UEID");
60         rparam2.set_param_test(2);
61         rparam2.set_param_value("UE123");
62
63         e2sm_actdefn1.add(rparam2);
64
65
66         //first Action Object
67
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);
73
74         actionObj.add(ieobj);
75
76         HWEventTriggerDefinition eventObj;
77         eventObj.set_triggerNature(0);
78
79         //Now form the subscription.
80
81         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs infoObj;
82
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);
88
89
90         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(infoObj);
91
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));
94
95         bool res = requestObj.encode(buff, &buff_size);
96         ASSERT_TRUE(res);
97 }
98
99 TEST(E2SMSubREQ, SubRespMultipleActions)
100 {
101         unsigned char buff[1024];
102         size_t buff_size = 1024;
103
104
105         //creating Action Definition 1
106         HWActionDefinition e2sm_actdefn1;
107         HWActionDefinition::RANParamIEs rparam1;
108
109         rparam1.set_param_id(1);
110         rparam1.set_param_name("ENodeBID");
111         rparam1.set_param_test(1);
112         rparam1.set_param_value("SR123");
113
114         e2sm_actdefn1.add(rparam1);
115
116         HWActionDefinition e2sm_actdefn2;
117         HWActionDefinition::RANParamIEs rparam2;
118
119         rparam2.set_param_id(1);
120         rparam2.set_param_name("UEID");
121         rparam2.set_param_test(2);
122         rparam2.set_param_value("UE123");
123
124         e2sm_actdefn2.add(rparam2);
125
126
127         //first Action Object
128
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);
136
137         //Second Action object.
138         actionObj.add(E2APAction<HWActionDefinition>::ActionIEs().set_ricActionID(4).set_ricActionType(2).set_ricActionDefinition(e2sm_actdefn2));
139
140
141         HWEventTriggerDefinition eventObj;
142         eventObj.set_triggerNature(1);
143
144
145
146         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs dataObj;
147
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);
153
154         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(dataObj);
155         bool res = requestObj.encode(buff, &buff_size);
156         if(!res)
157         {
158                 std::cout << requestObj.get_error() << std::endl;
159         }
160         ASSERT_TRUE(res);
161
162 }
163
164
165
166 //create a MOck e2term
167
168 TEST (MOCK, E2TERM){
169
170          const char* meid = "test1";
171          const char* sub_id = "sub1";
172          //Send the Subscription Response.
173          xapp_rmr_header hdr;
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;
182
183          std::unique_ptr<XappRmr> rmr;
184          rmr = std::make_unique<XappRmr>("4591",num_attempts);
185          rmr->xapp_rmr_init(true);
186
187          XappSettings config;
188
189          std::unique_ptr<Xapp> hw_xapp = std::make_unique<Xapp>(std::ref(config),std::ref(*rmr));
190          while(1){
191                  bool res_msg = rmr->xapp_rmr_send(&hdr,(void*)strMsg);
192                  if(res_msg){
193                          mdclog_write(MDCLOG_INFO, "Message Sent Successfully");
194                          break;
195                  }
196                  sleep(10);
197          }
198 }
199
200
201 #endif /* TEST_TEST_SUBS_H_ */