Added IndicationMessage
[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 #ifndef TEST_TEST_SUBS_H_
20 #define TEST_TEST_SUBS_H_
21
22 #include<iostream>
23 #include<gtest/gtest.h>
24 #include "xapp.hpp"
25 #define BUFFER_SIZE 1024
26
27 using namespace std;
28
29 //generating a E2AP Subscription Message
30 TEST(SubscriptionRequest, MultipleRANParameters)
31 {
32         unsigned char buff[1024];
33         size_t buff_size = 1024;
34
35
36         //creating Action Definition
37         HWActionDefinition e2sm_actdefn1;
38         HWActionDefinition::RANParamIEs rparam1;
39
40         rparam1.set_param_id(1);
41         rparam1.set_param_name("ENodeBID");
42         rparam1.set_param_test(1);
43         rparam1.set_param_value("SR123");
44
45         e2sm_actdefn1.add(rparam1);
46
47         HWActionDefinition::RANParamIEs rparam2;
48
49         rparam2.set_param_id(1);
50         rparam2.set_param_name("UEID");
51         rparam2.set_param_test(2);
52         rparam2.set_param_value("UE123");
53
54         e2sm_actdefn1.add(rparam2);
55
56
57         //first Action Object
58
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);
64
65         actionObj.add(ieobj);
66
67         HWEventTriggerDefinition eventObj;
68         eventObj.set_triggerNature(0);
69
70         //Now form the subscription.
71
72         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs infoObj;
73
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);
79
80
81         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(infoObj);
82
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));
85
86         bool res = requestObj.encode(buff, &buff_size);
87         ASSERT_TRUE(res);
88 }
89
90 TEST(SubscriptionRequest, MultipleActions)
91 {
92         unsigned char buff[1024];
93         size_t buff_size = 1024;
94
95
96         //creating Action Definition 1
97         HWActionDefinition e2sm_actdefn1;
98         HWActionDefinition::RANParamIEs rparam1;
99
100         rparam1.set_param_id(1);
101         rparam1.set_param_name("ENodeBID");
102         rparam1.set_param_test(1);
103         rparam1.set_param_value("SR123");
104
105         e2sm_actdefn1.add(rparam1);
106
107         HWActionDefinition e2sm_actdefn2;
108         HWActionDefinition::RANParamIEs rparam2;
109
110         rparam2.set_param_id(1);
111         rparam2.set_param_name("UEID");
112         rparam2.set_param_test(2);
113         rparam2.set_param_value("UE123");
114
115         e2sm_actdefn2.add(rparam2);
116
117
118         //first Action Object
119
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);
127
128         //Second Action object.
129         actionObj.add(E2APAction<HWActionDefinition>::ActionIEs().set_ricActionID(4).set_ricActionType(2).set_ricActionDefinition(e2sm_actdefn2));
130
131
132         HWEventTriggerDefinition eventObj;
133         eventObj.set_triggerNature(1);
134
135
136
137         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition>::SubscriptionRequestIEs dataObj;
138
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);
144
145         E2APSubscriptionRequest<HWEventTriggerDefinition, HWActionDefinition> requestObj(dataObj);
146         bool res = requestObj.encode(buff, &buff_size);
147         if(!res)
148         {
149                 std::cout << requestObj.get_error() << std::endl;
150         }
151         ASSERT_TRUE(res);
152
153 }
154
155 //create a MOck e2term
156 TEST (MOCK, E2TERM){
157
158          const char* meid = "test1";
159          const char* sub_id = "sub1";
160          //Send the Subscription Response.
161          xapp_rmr_header hdr;
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;
170
171          std::unique_ptr<XappRmr> rmr;
172          rmr = std::make_unique<XappRmr>("4591",num_attempts);
173          rmr->xapp_rmr_init(true);
174
175          XappSettings config;
176
177          std::unique_ptr<Xapp> hw_xapp = std::make_unique<Xapp>(std::ref(config),std::ref(*rmr));
178          while(1){
179                  bool res_msg = rmr->xapp_rmr_send(&hdr,(void*)strMsg);
180                  if(res_msg){
181                          mdclog_write(MDCLOG_INFO, "Message Sent Successfully");
182                          break;
183                  }
184                  sleep(10);
185          }
186 }
187
188 #endif /* TEST_TEST_SUBS_H_ */