2 ==================================================================================
3 Copyright (c) 2019 AT&T Intellectual Property.
4 Copyright (c) 2019 Nokia
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 ==================================================================================
23 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
24 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap_wrapper"
25 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/packer"
26 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
31 //-----------------------------------------------------------------------------
33 //-----------------------------------------------------------------------------
34 var e2t_e2asnpacker e2ap.E2APPackerIf = e2ap_wrapper.NewAsn1E2Packer()
36 //-----------------------------------------------------------------------------
38 //-----------------------------------------------------------------------------
39 type testingE2termStub struct {
43 //-----------------------------------------------------------------------------
45 //-----------------------------------------------------------------------------
46 func createNewE2termStub(desc string, rtfile string, port string, stat string) *testingE2termStub {
47 e2termCtrl := &testingE2termStub{}
48 e2termCtrl.testingRmrStubControl.init(desc, rtfile, port, stat, e2termCtrl)
52 //-----------------------------------------------------------------------------
54 //-----------------------------------------------------------------------------
55 func (tc *testingE2termStub) Consume(params *xapp.RMRParams) (err error) {
56 xapp.Rmr.Free(params.Mbuf)
58 msg := &RMRParams{params}
60 if params.Mtype == 55555 {
61 xapp.Logger.Info("(%s) Testing message ignore %s", tc.desc, msg.String())
66 xapp.Logger.Info("(%s) Consume %s", tc.desc, msg.String())
71 //-----------------------------------------------------------------------------
73 //-----------------------------------------------------------------------------
74 func (e2termConn *testingE2termStub) handle_e2term_subs_req(t *testing.T) (*e2ap.E2APSubscriptionRequest, *RMRParams) {
75 xapp.Logger.Info("(%s) handle_e2term_subs_req", e2termConn.desc)
76 e2SubsReq := e2t_e2asnpacker.NewPackerSubscriptionRequest()
78 //---------------------------------
79 // e2term activity: Recv Subs Req
80 //---------------------------------
82 case msg := <-e2termConn.rmrConChan:
83 e2termConn.DecMsgCnt()
84 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_REQ"] {
85 testError(t, "(%s) Received wrong mtype expected %s got %s, error", e2termConn.desc, "RIC_SUB_REQ", xapp.RicMessageTypeToName[msg.Mtype])
87 xapp.Logger.Info("(%s) Recv Subs Req", e2termConn.desc)
88 packedData := &packer.PackedData{}
89 packedData.Buf = msg.Payload
90 unpackerr := e2SubsReq.UnPack(packedData)
92 testError(t, "(%s) RIC_SUB_REQ unpack failed err: %s", e2termConn.desc, unpackerr.Error())
94 geterr, req := e2SubsReq.Get()
96 testError(t, "(%s) RIC_SUB_REQ get failed err: %s", e2termConn.desc, geterr.Error())
100 case <-time.After(15 * time.Second):
101 testError(t, "(%s) Not Received RIC_SUB_REQ within 15 secs", e2termConn.desc)
106 func (e2termConn *testingE2termStub) handle_e2term_subs_resp(t *testing.T, req *e2ap.E2APSubscriptionRequest, msg *RMRParams) {
107 xapp.Logger.Info("(%s) handle_e2term_subs_resp", e2termConn.desc)
108 e2SubsResp := e2t_e2asnpacker.NewPackerSubscriptionResponse()
110 //---------------------------------
111 // e2term activity: Send Subs Resp
112 //---------------------------------
113 xapp.Logger.Info("(%s) Send Subs Resp", e2termConn.desc)
115 resp := &e2ap.E2APSubscriptionResponse{}
117 resp.RequestId.Id = req.RequestId.Id
118 resp.RequestId.Seq = req.RequestId.Seq
119 resp.FunctionId = req.FunctionId
121 resp.ActionAdmittedList.Items = make([]e2ap.ActionAdmittedItem, len(req.ActionSetups))
122 for index := int(0); index < len(req.ActionSetups); index++ {
123 resp.ActionAdmittedList.Items[index].ActionId = req.ActionSetups[index].ActionId
126 for index := uint64(0); index < 1; index++ {
127 item := e2ap.ActionNotAdmittedItem{}
128 item.ActionId = index
129 item.Cause.Content = 1
130 item.Cause.CauseVal = 1
131 resp.ActionNotAdmittedList.Items = append(resp.ActionNotAdmittedList.Items, item)
135 xapp.Logger.Debug("(%s) %s", e2termConn.desc, e2SubsResp.String())
136 packerr, packedMsg := e2SubsResp.Pack(nil)
138 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
141 params := &RMRParams{&xapp.RMRParams{}}
142 params.Mtype = xapp.RIC_SUB_RESP
143 //params.SubId = msg.SubId
145 params.Payload = packedMsg.Buf
146 params.Meid = msg.Meid
147 //params.Xid = msg.Xid
150 snderr := e2termConn.RmrSend(params)
152 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
156 //-----------------------------------------------------------------------------
158 //-----------------------------------------------------------------------------
159 type test_subs_fail_params struct {
160 req *e2ap.E2APSubscriptionRequest
161 fail *e2ap.E2APSubscriptionFailure
164 func (p *test_subs_fail_params) Set(req *e2ap.E2APSubscriptionRequest) {
167 p.fail = &e2ap.E2APSubscriptionFailure{}
168 p.fail.RequestId.Id = p.req.RequestId.Id
169 p.fail.RequestId.Seq = p.req.RequestId.Seq
170 p.fail.FunctionId = p.req.FunctionId
171 p.fail.ActionNotAdmittedList.Items = make([]e2ap.ActionNotAdmittedItem, len(p.req.ActionSetups))
172 for index := int(0); index < len(p.fail.ActionNotAdmittedList.Items); index++ {
173 p.fail.ActionNotAdmittedList.Items[index].ActionId = p.req.ActionSetups[index].ActionId
174 p.SetCauseVal(index, 5, 1)
178 func (p *test_subs_fail_params) SetCauseVal(ind int, content uint8, causeval uint8) {
181 for index := int(0); index < len(p.fail.ActionNotAdmittedList.Items); index++ {
182 p.fail.ActionNotAdmittedList.Items[index].Cause.Content = content
183 p.fail.ActionNotAdmittedList.Items[index].Cause.CauseVal = causeval
187 p.fail.ActionNotAdmittedList.Items[ind].Cause.Content = content
188 p.fail.ActionNotAdmittedList.Items[ind].Cause.CauseVal = causeval
191 func (e2termConn *testingE2termStub) handle_e2term_subs_fail(t *testing.T, fparams *test_subs_fail_params, msg *RMRParams) {
192 xapp.Logger.Info("(%s) handle_e2term_subs_fail", e2termConn.desc)
193 e2SubsFail := e2t_e2asnpacker.NewPackerSubscriptionFailure()
195 //---------------------------------
196 // e2term activity: Send Subs Fail
197 //---------------------------------
198 xapp.Logger.Info("(%s) Send Subs Fail", e2termConn.desc)
200 e2SubsFail.Set(fparams.fail)
201 xapp.Logger.Debug("(%s) %s", e2termConn.desc, e2SubsFail.String())
202 packerr, packedMsg := e2SubsFail.Pack(nil)
204 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
207 params := &RMRParams{&xapp.RMRParams{}}
208 params.Mtype = xapp.RIC_SUB_FAILURE
209 params.SubId = msg.SubId
210 params.Payload = packedMsg.Buf
211 params.Meid = msg.Meid
215 snderr := e2termConn.RmrSend(params)
217 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
221 //-----------------------------------------------------------------------------
223 //-----------------------------------------------------------------------------
224 func (e2termConn *testingE2termStub) handle_e2term_subs_del_req(t *testing.T) (*e2ap.E2APSubscriptionDeleteRequest, *RMRParams) {
225 xapp.Logger.Info("(%s) handle_e2term_subs_del_req", e2termConn.desc)
226 e2SubsDelReq := e2t_e2asnpacker.NewPackerSubscriptionDeleteRequest()
228 //---------------------------------
229 // e2term activity: Recv Subs Del Req
230 //---------------------------------
232 case msg := <-e2termConn.rmrConChan:
233 e2termConn.DecMsgCnt()
234 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_REQ"] {
235 testError(t, "(%s) Received wrong mtype expected %s got %s, error", e2termConn.desc, "RIC_SUB_DEL_REQ", xapp.RicMessageTypeToName[msg.Mtype])
237 xapp.Logger.Info("(%s) Recv Subs Del Req", e2termConn.desc)
239 packedData := &packer.PackedData{}
240 packedData.Buf = msg.Payload
241 unpackerr := e2SubsDelReq.UnPack(packedData)
242 if unpackerr != nil {
243 testError(t, "(%s) RIC_SUB_DEL_REQ unpack failed err: %s", e2termConn.desc, unpackerr.Error())
245 geterr, req := e2SubsDelReq.Get()
247 testError(t, "(%s) RIC_SUB_DEL_REQ get failed err: %s", e2termConn.desc, geterr.Error())
251 case <-time.After(15 * time.Second):
252 testError(t, "(%s) Not Received RIC_SUB_DEL_REQ within 15 secs", e2termConn.desc)
257 func handle_e2term_recv_empty() bool {
258 if len(e2termConn.rmrConChan) > 0 {
264 func (e2termConn *testingE2termStub) handle_e2term_subs_del_resp(t *testing.T, req *e2ap.E2APSubscriptionDeleteRequest, msg *RMRParams) {
265 xapp.Logger.Info("(%s) handle_e2term_subs_del_resp", e2termConn.desc)
266 e2SubsDelResp := e2t_e2asnpacker.NewPackerSubscriptionDeleteResponse()
268 //---------------------------------
269 // e2term activity: Send Subs Del Resp
270 //---------------------------------
271 xapp.Logger.Info("(%s) Send Subs Del Resp", e2termConn.desc)
273 resp := &e2ap.E2APSubscriptionDeleteResponse{}
274 resp.RequestId.Id = req.RequestId.Id
275 resp.RequestId.Seq = req.RequestId.Seq
276 resp.FunctionId = req.FunctionId
278 e2SubsDelResp.Set(resp)
279 xapp.Logger.Debug("(%s) %s", e2termConn.desc, e2SubsDelResp.String())
280 packerr, packedMsg := e2SubsDelResp.Pack(nil)
282 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
285 params := &RMRParams{&xapp.RMRParams{}}
286 params.Mtype = xapp.RIC_SUB_DEL_RESP
287 params.SubId = msg.SubId
288 params.Payload = packedMsg.Buf
289 params.Meid = msg.Meid
293 snderr := e2termConn.RmrSend(params)
295 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
299 //-----------------------------------------------------------------------------
301 //-----------------------------------------------------------------------------
302 func (e2termConn *testingE2termStub) handle_e2term_subs_del_fail(t *testing.T, req *e2ap.E2APSubscriptionDeleteRequest, msg *RMRParams) {
303 xapp.Logger.Info("(%s) handle_e2term_del_subs_fail", e2termConn.desc)
304 e2SubsDelFail := e2t_e2asnpacker.NewPackerSubscriptionDeleteFailure()
306 //---------------------------------
307 // e2term activity: Send Subs Del Fail
308 //---------------------------------
309 xapp.Logger.Info("(%s) Send Subs Del Fail", e2termConn.desc)
311 resp := &e2ap.E2APSubscriptionDeleteFailure{}
312 resp.RequestId.Id = req.RequestId.Id
313 resp.RequestId.Seq = req.RequestId.Seq
314 resp.FunctionId = req.FunctionId
315 resp.Cause.Content = 3 // CauseMisc
316 resp.Cause.CauseVal = 4 // unspecified
318 e2SubsDelFail.Set(resp)
319 xapp.Logger.Debug("(%s) %s", e2termConn.desc, e2SubsDelFail.String())
320 packerr, packedMsg := e2SubsDelFail.Pack(nil)
322 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
325 params := &RMRParams{&xapp.RMRParams{}}
326 params.Mtype = xapp.RIC_SUB_DEL_FAILURE
327 params.SubId = msg.SubId
328 params.Payload = packedMsg.Buf
329 params.Meid = msg.Meid
333 snderr := e2termConn.RmrSend(params)
335 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())