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 e2asnpacker e2ap.E2APPackerIf = e2ap_wrapper.NewAsn1E2Packer()
36 //-----------------------------------------------------------------------------
38 //-----------------------------------------------------------------------------
39 func (xappConn *testingXappControl) handle_xapp_subs_req(t *testing.T, oldTrans *xappTransaction) *xappTransaction {
40 xapp.Logger.Info("(%s) handle_xapp_subs_req", xappConn.desc)
41 e2SubsReq := e2asnpacker.NewPackerSubscriptionRequest()
43 //---------------------------------
44 // xapp activity: Send Subs Req
45 //---------------------------------
46 xapp.Logger.Info("(%s) Send Subs Req", xappConn.desc)
48 req := &e2ap.E2APSubscriptionRequest{}
54 req.EventTriggerDefinition.InterfaceId.GlobalEnbId.Present = true
55 req.EventTriggerDefinition.InterfaceId.GlobalEnbId.PlmnIdentity.StringPut("310150")
56 req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Id = 123
57 req.EventTriggerDefinition.InterfaceId.GlobalEnbId.NodeId.Bits = e2ap.E2AP_ENBIDHomeBits28
59 // gnb -> enb outgoing
60 // enb -> gnb incoming
62 req.EventTriggerDefinition.InterfaceDirection = e2ap.E2AP_InterfaceDirectionIncoming
63 req.EventTriggerDefinition.ProcedureCode = 5 //28 35
64 req.EventTriggerDefinition.TypeOfMessage = e2ap.E2AP_InitiatingMessage
66 req.ActionSetups = make([]e2ap.ActionToBeSetupItem, 1)
67 req.ActionSetups[0].ActionId = 0
68 req.ActionSetups[0].ActionType = e2ap.E2AP_ActionTypeReport
69 req.ActionSetups[0].ActionDefinition.Present = false
70 //req.ActionSetups[index].ActionDefinition.StyleId = 255
71 //req.ActionSetups[index].ActionDefinition.ParamId = 222
72 req.ActionSetups[0].SubsequentAction.Present = true
73 req.ActionSetups[0].SubsequentAction.Type = e2ap.E2AP_SubSeqActionTypeContinue
74 req.ActionSetups[0].SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitZero
77 xapp.Logger.Debug("%s", e2SubsReq.String())
78 err, packedMsg := e2SubsReq.Pack(nil)
80 testError(t, "(%s) pack NOK %s", xappConn.desc, err.Error())
84 var trans *xappTransaction = oldTrans
86 trans = xappConn.newXappTransaction(nil, "RAN_NAME_1")
89 params := &RMRParams{&xapp.RMRParams{}}
90 params.Mtype = xapp.RIC_SUB_REQ
92 params.Payload = packedMsg.Buf
93 params.Meid = trans.meid
94 params.Xid = trans.xid
97 snderr := xappConn.RmrSend(params)
99 testError(t, "(%s) RMR SEND FAILED: %s", xappConn.desc, snderr.Error())
105 //-----------------------------------------------------------------------------
107 //-----------------------------------------------------------------------------
108 func (xappConn *testingXappControl) handle_xapp_subs_resp(t *testing.T, trans *xappTransaction) int {
109 xapp.Logger.Info("(%s) handle_xapp_subs_resp", xappConn.desc)
110 e2SubsResp := e2asnpacker.NewPackerSubscriptionResponse()
113 //---------------------------------
114 // xapp activity: Recv Subs Resp
115 //---------------------------------
117 case msg := <-xappConn.rmrConChan:
119 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_RESP"] {
120 testError(t, "(%s) Received RIC_SUB_RESP wrong mtype expected %s got %s, error", xappConn.desc, "RIC_SUB_RESP", xapp.RicMessageTypeToName[msg.Mtype])
122 } else if msg.Xid != trans.xid {
123 testError(t, "(%s) Received RIC_SUB_RESP wrong xid expected %s got %s, error", xappConn.desc, trans.xid, msg.Xid)
126 packedData := &packer.PackedData{}
127 packedData.Buf = msg.Payload
129 unpackerr := e2SubsResp.UnPack(packedData)
131 if unpackerr != nil {
132 testError(t, "(%s) RIC_SUB_RESP unpack failed err: %s", xappConn.desc, unpackerr.Error())
134 geterr, resp := e2SubsResp.Get()
136 testError(t, "(%s) RIC_SUB_RESP get failed err: %s", xappConn.desc, geterr.Error())
139 xapp.Logger.Info("(%s) Recv Subs Resp rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.desc, msg.Xid, msg.SubId, resp.RequestId.Seq)
142 case <-time.After(15 * time.Second):
143 testError(t, "(%s) Not Received RIC_SUB_RESP within 15 secs", xappConn.desc)
149 //-----------------------------------------------------------------------------
151 //-----------------------------------------------------------------------------
152 func (xappConn *testingXappControl) handle_xapp_subs_fail(t *testing.T, trans *xappTransaction) int {
153 xapp.Logger.Info("(%s) handle_xapp_subs_fail", xappConn.desc)
154 e2SubsFail := e2asnpacker.NewPackerSubscriptionFailure()
157 //-------------------------------
158 // xapp activity: Recv Subs Fail
159 //-------------------------------
161 case msg := <-xappConn.rmrConChan:
163 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_FAILURE"] {
164 testError(t, "(%s) Received RIC_SUB_FAILURE wrong mtype expected %s got %s, error", xappConn.desc, "RIC_SUB_FAILURE", xapp.RicMessageTypeToName[msg.Mtype])
166 } else if msg.Xid != trans.xid {
167 testError(t, "(%s) Received RIC_SUB_FAILURE wrong xid expected %s got %s, error", xappConn.desc, trans.xid, msg.Xid)
170 packedData := &packer.PackedData{}
171 packedData.Buf = msg.Payload
173 unpackerr := e2SubsFail.UnPack(packedData)
175 if unpackerr != nil {
176 testError(t, "(%s) RIC_SUB_FAILURE unpack failed err: %s", xappConn.desc, unpackerr.Error())
178 geterr, resp := e2SubsFail.Get()
180 testError(t, "(%s) RIC_SUB_FAILURE get failed err: %s", xappConn.desc, geterr.Error())
183 xapp.Logger.Info("(%s) Recv Subs Fail rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.desc, msg.Xid, msg.SubId, resp.RequestId.Seq)
186 case <-time.After(15 * time.Second):
187 testError(t, "(%s) Not Received RIC_SUB_FAILURE within 15 secs", xappConn.desc)
193 //-----------------------------------------------------------------------------
195 //-----------------------------------------------------------------------------
196 func (xappConn *testingXappControl) handle_xapp_subs_del_req(t *testing.T, oldTrans *xappTransaction, e2SubsId int) *xappTransaction {
197 xapp.Logger.Info("(%s) handle_xapp_subs_del_req", xappConn.desc)
198 e2SubsDelReq := e2asnpacker.NewPackerSubscriptionDeleteRequest()
200 //---------------------------------
201 // xapp activity: Send Subs Del Req
202 //---------------------------------
203 xapp.Logger.Info("(%s) Send Subs Del Req", xappConn.desc)
205 req := &e2ap.E2APSubscriptionDeleteRequest{}
207 req.RequestId.Seq = uint32(e2SubsId)
210 e2SubsDelReq.Set(req)
211 xapp.Logger.Debug("%s", e2SubsDelReq.String())
212 err, packedMsg := e2SubsDelReq.Pack(nil)
214 testError(t, "(%s) pack NOK %s", xappConn.desc, err.Error())
218 var trans *xappTransaction = oldTrans
220 trans = xappConn.newXappTransaction(nil, "RAN_NAME_1")
223 params := &RMRParams{&xapp.RMRParams{}}
224 params.Mtype = xapp.RIC_SUB_DEL_REQ
225 params.SubId = e2SubsId
226 params.Payload = packedMsg.Buf
227 params.Meid = trans.meid
228 params.Xid = trans.xid
231 snderr := xappConn.RmrSend(params)
233 testError(t, "(%s) RMR SEND FAILED: %s", xappConn.desc, snderr.Error())
239 //-----------------------------------------------------------------------------
241 //-----------------------------------------------------------------------------
242 func (xappConn *testingXappControl) handle_xapp_subs_del_resp(t *testing.T, trans *xappTransaction) {
243 xapp.Logger.Info("(%s) handle_xapp_subs_del_resp", xappConn.desc)
244 e2SubsDelResp := e2asnpacker.NewPackerSubscriptionDeleteResponse()
246 //---------------------------------
247 // xapp activity: Recv Subs Del Resp
248 //---------------------------------
250 case msg := <-xappConn.rmrConChan:
252 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_RESP"] {
253 testError(t, "(%s) Received RIC_SUB_DEL_RESP wrong mtype expected %s got %s, error", xappConn.desc, "RIC_SUB_DEL_RESP", xapp.RicMessageTypeToName[msg.Mtype])
255 } else if msg.Xid != trans.xid {
256 testError(t, "(%s) Received RIC_SUB_DEL_RESP wrong xid expected %s got %s, error", xappConn.desc, trans.xid, msg.Xid)
259 packedData := &packer.PackedData{}
260 packedData.Buf = msg.Payload
261 unpackerr := e2SubsDelResp.UnPack(packedData)
262 if unpackerr != nil {
263 testError(t, "(%s) RIC_SUB_DEL_RESP unpack failed err: %s", xappConn.desc, unpackerr.Error())
265 geterr, resp := e2SubsDelResp.Get()
267 testError(t, "(%s) RIC_SUB_DEL_RESP get failed err: %s", xappConn.desc, geterr.Error())
269 xapp.Logger.Info("(%s) Recv Subs Del Resp rmr: xid=%s subid=%d, asn: seqnro=%d", xappConn.desc, msg.Xid, msg.SubId, resp.RequestId.Seq)
272 case <-time.After(15 * time.Second):
273 testError(t, "(%s) Not Received RIC_SUB_DEL_RESP within 15 secs", xappConn.desc)
277 //-----------------------------------------------------------------------------
279 //-----------------------------------------------------------------------------
280 func (e2termConn *testingE2termControl) handle_e2term_subs_req(t *testing.T) (*e2ap.E2APSubscriptionRequest, *RMRParams) {
281 xapp.Logger.Info("(%s) handle_e2term_subs_req", e2termConn.desc)
282 e2SubsReq := e2asnpacker.NewPackerSubscriptionRequest()
284 //---------------------------------
285 // e2term activity: Recv Subs Req
286 //---------------------------------
288 case msg := <-e2termConn.rmrConChan:
289 e2termConn.DecMsgCnt()
290 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_REQ"] {
291 testError(t, "(%s) Received wrong mtype expected %s got %s, error", e2termConn.desc, "RIC_SUB_REQ", xapp.RicMessageTypeToName[msg.Mtype])
293 xapp.Logger.Info("(%s) Recv Subs Req", e2termConn.desc)
294 packedData := &packer.PackedData{}
295 packedData.Buf = msg.Payload
296 unpackerr := e2SubsReq.UnPack(packedData)
297 if unpackerr != nil {
298 testError(t, "(%s) RIC_SUB_REQ unpack failed err: %s", e2termConn.desc, unpackerr.Error())
300 geterr, req := e2SubsReq.Get()
302 testError(t, "(%s) RIC_SUB_REQ get failed err: %s", e2termConn.desc, geterr.Error())
306 case <-time.After(15 * time.Second):
307 testError(t, "(%s) Not Received RIC_SUB_REQ within 15 secs", e2termConn.desc)
312 func (e2termConn *testingE2termControl) handle_e2term_subs_resp(t *testing.T, req *e2ap.E2APSubscriptionRequest, msg *RMRParams) {
313 xapp.Logger.Info("(%s) handle_e2term_subs_resp", e2termConn.desc)
314 e2SubsResp := e2asnpacker.NewPackerSubscriptionResponse()
316 //---------------------------------
317 // e2term activity: Send Subs Resp
318 //---------------------------------
319 xapp.Logger.Info("(%s) Send Subs Resp", e2termConn.desc)
321 resp := &e2ap.E2APSubscriptionResponse{}
323 resp.RequestId.Id = req.RequestId.Id
324 resp.RequestId.Seq = req.RequestId.Seq
325 resp.FunctionId = req.FunctionId
327 resp.ActionAdmittedList.Items = make([]e2ap.ActionAdmittedItem, len(req.ActionSetups))
328 for index := int(0); index < len(req.ActionSetups); index++ {
329 resp.ActionAdmittedList.Items[index].ActionId = req.ActionSetups[index].ActionId
332 for index := uint64(0); index < 1; index++ {
333 item := e2ap.ActionNotAdmittedItem{}
334 item.ActionId = index
335 item.Cause.Content = 1
336 item.Cause.CauseVal = 1
337 resp.ActionNotAdmittedList.Items = append(resp.ActionNotAdmittedList.Items, item)
341 xapp.Logger.Debug("%s", e2SubsResp.String())
342 packerr, packedMsg := e2SubsResp.Pack(nil)
344 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
347 params := &RMRParams{&xapp.RMRParams{}}
348 params.Mtype = xapp.RIC_SUB_RESP
349 //params.SubId = msg.SubId
351 params.Payload = packedMsg.Buf
352 params.Meid = msg.Meid
353 //params.Xid = msg.Xid
356 snderr := e2termConn.RmrSend(params)
358 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
362 //-----------------------------------------------------------------------------
364 //-----------------------------------------------------------------------------
365 type test_subs_fail_params struct {
366 req *e2ap.E2APSubscriptionRequest
367 fail *e2ap.E2APSubscriptionFailure
370 func (p *test_subs_fail_params) Set(req *e2ap.E2APSubscriptionRequest) {
373 p.fail = &e2ap.E2APSubscriptionFailure{}
374 p.fail.RequestId.Id = p.req.RequestId.Id
375 p.fail.RequestId.Seq = p.req.RequestId.Seq
376 p.fail.FunctionId = p.req.FunctionId
377 p.fail.ActionNotAdmittedList.Items = make([]e2ap.ActionNotAdmittedItem, len(p.req.ActionSetups))
378 for index := int(0); index < len(p.fail.ActionNotAdmittedList.Items); index++ {
379 p.fail.ActionNotAdmittedList.Items[index].ActionId = p.req.ActionSetups[index].ActionId
380 p.SetCauseVal(index, 5, 1)
384 func (p *test_subs_fail_params) SetCauseVal(ind int, content uint8, causeval uint8) {
387 for index := int(0); index < len(p.fail.ActionNotAdmittedList.Items); index++ {
388 p.fail.ActionNotAdmittedList.Items[index].Cause.Content = content
389 p.fail.ActionNotAdmittedList.Items[index].Cause.CauseVal = causeval
393 p.fail.ActionNotAdmittedList.Items[ind].Cause.Content = content
394 p.fail.ActionNotAdmittedList.Items[ind].Cause.CauseVal = causeval
397 func (e2termConn *testingE2termControl) handle_e2term_subs_fail(t *testing.T, fparams *test_subs_fail_params, msg *RMRParams) {
398 xapp.Logger.Info("(%s) handle_e2term_subs_fail", e2termConn.desc)
399 e2SubsFail := e2asnpacker.NewPackerSubscriptionFailure()
401 //---------------------------------
402 // e2term activity: Send Subs Fail
403 //---------------------------------
404 xapp.Logger.Info("(%s) Send Subs Fail", e2termConn.desc)
406 e2SubsFail.Set(fparams.fail)
407 xapp.Logger.Debug("%s", e2SubsFail.String())
408 packerr, packedMsg := e2SubsFail.Pack(nil)
410 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
413 params := &RMRParams{&xapp.RMRParams{}}
414 params.Mtype = xapp.RIC_SUB_FAILURE
415 params.SubId = msg.SubId
416 params.Payload = packedMsg.Buf
417 params.Meid = msg.Meid
421 snderr := e2termConn.RmrSend(params)
423 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
427 //-----------------------------------------------------------------------------
429 //-----------------------------------------------------------------------------
430 func (e2termConn *testingE2termControl) handle_e2term_subs_del_req(t *testing.T) (*e2ap.E2APSubscriptionDeleteRequest, *RMRParams) {
431 xapp.Logger.Info("(%s) handle_e2term_subs_del_req", e2termConn.desc)
432 e2SubsDelReq := e2asnpacker.NewPackerSubscriptionDeleteRequest()
434 //---------------------------------
435 // e2term activity: Recv Subs Del Req
436 //---------------------------------
438 case msg := <-e2termConn.rmrConChan:
439 e2termConn.DecMsgCnt()
440 if msg.Mtype != xapp.RICMessageTypes["RIC_SUB_DEL_REQ"] {
441 testError(t, "(%s) Received wrong mtype expected %s got %s, error", e2termConn.desc, "RIC_SUB_DEL_REQ", xapp.RicMessageTypeToName[msg.Mtype])
443 xapp.Logger.Info("(%s) Recv Subs Del Req", e2termConn.desc)
445 packedData := &packer.PackedData{}
446 packedData.Buf = msg.Payload
447 unpackerr := e2SubsDelReq.UnPack(packedData)
448 if unpackerr != nil {
449 testError(t, "(%s) RIC_SUB_DEL_REQ unpack failed err: %s", e2termConn.desc, unpackerr.Error())
451 geterr, req := e2SubsDelReq.Get()
453 testError(t, "(%s) RIC_SUB_DEL_REQ get failed err: %s", e2termConn.desc, geterr.Error())
457 case <-time.After(15 * time.Second):
458 testError(t, "(%s) Not Received RIC_SUB_DEL_REQ within 15 secs", e2termConn.desc)
463 func handle_e2term_recv_empty() bool {
464 if len(e2termConn.rmrConChan) > 0 {
470 func (e2termConn *testingE2termControl) handle_e2term_subs_del_resp(t *testing.T, req *e2ap.E2APSubscriptionDeleteRequest, msg *RMRParams) {
471 xapp.Logger.Info("(%s) handle_e2term_subs_del_resp", e2termConn.desc)
472 e2SubsDelResp := e2asnpacker.NewPackerSubscriptionDeleteResponse()
474 //---------------------------------
475 // e2term activity: Send Subs Del Resp
476 //---------------------------------
477 xapp.Logger.Info("(%s) Send Subs Del Resp", e2termConn.desc)
479 resp := &e2ap.E2APSubscriptionDeleteResponse{}
480 resp.RequestId.Id = req.RequestId.Id
481 resp.RequestId.Seq = req.RequestId.Seq
482 resp.FunctionId = req.FunctionId
484 e2SubsDelResp.Set(resp)
485 xapp.Logger.Debug("%s", e2SubsDelResp.String())
486 packerr, packedMsg := e2SubsDelResp.Pack(nil)
488 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
491 params := &RMRParams{&xapp.RMRParams{}}
492 params.Mtype = xapp.RIC_SUB_DEL_RESP
493 params.SubId = msg.SubId
494 params.Payload = packedMsg.Buf
495 params.Meid = msg.Meid
499 snderr := e2termConn.RmrSend(params)
501 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
505 //-----------------------------------------------------------------------------
507 //-----------------------------------------------------------------------------
508 func (e2termConn *testingE2termControl) handle_e2term_subs_del_fail(t *testing.T, req *e2ap.E2APSubscriptionDeleteRequest, msg *RMRParams) {
509 xapp.Logger.Info("(%s) handle_e2term_del_subs_fail", e2termConn.desc)
510 e2SubsDelFail := e2asnpacker.NewPackerSubscriptionDeleteFailure()
512 //---------------------------------
513 // e2term activity: Send Subs Del Fail
514 //---------------------------------
515 xapp.Logger.Info("(%s) Send Subs Del Fail", e2termConn.desc)
517 resp := &e2ap.E2APSubscriptionDeleteFailure{}
518 resp.RequestId.Id = req.RequestId.Id
519 resp.RequestId.Seq = req.RequestId.Seq
520 resp.FunctionId = req.FunctionId
521 resp.Cause.Content = 3 // CauseMisc
522 resp.Cause.CauseVal = 4 // unspecified
524 e2SubsDelFail.Set(resp)
525 xapp.Logger.Debug("%s", e2SubsDelFail.String())
526 packerr, packedMsg := e2SubsDelFail.Pack(nil)
528 testError(t, "(%s) pack NOK %s", e2termConn.desc, packerr.Error())
531 params := &RMRParams{&xapp.RMRParams{}}
532 params.Mtype = xapp.RIC_SUB_DEL_FAILURE
533 params.SubId = msg.SubId
534 params.Payload = packedMsg.Buf
535 params.Meid = msg.Meid
539 snderr := e2termConn.RmrSend(params)
541 testError(t, "(%s) RMR SEND FAILED: %s", e2termConn.desc, snderr.Error())
545 //-----------------------------------------------------------------------------
547 //-----------------------------------------------------------------------------
548 func (mc *testingMainControl) wait_subs_clean(t *testing.T, e2SubsId int, secs int) bool {
549 var subs *Subscription
551 for ; i <= secs*2; i++ {
552 subs = mc.c.registry.GetSubscription(uint16(e2SubsId))
556 time.Sleep(500 * time.Millisecond)
559 testError(t, "(general) no clean within %d secs: %s", secs, subs.String())
561 testError(t, "(general) no clean within %d secs: subs(N/A)", secs)
566 func (mc *testingMainControl) wait_subs_trans_clean(t *testing.T, e2SubsId int, secs int) bool {
567 var trans *Transaction
569 for ; i <= secs*2; i++ {
570 subs := mc.c.registry.GetSubscription(uint16(e2SubsId))
574 trans = subs.GetTransaction()
578 time.Sleep(500 * time.Millisecond)
581 testError(t, "(general) no clean within %d secs: %s", secs, trans.String())
583 testError(t, "(general) no clean within %d secs: trans(N/A)", secs)
588 func (mc *testingMainControl) get_subid(t *testing.T) uint16 {
589 mc.c.registry.mutex.Lock()
590 defer mc.c.registry.mutex.Unlock()
591 return mc.c.registry.subIds[0]
594 func (mc *testingMainControl) wait_subid_change(t *testing.T, origSubId uint16, secs int) (uint16, bool) {
596 for ; i <= secs*2; i++ {
597 mc.c.registry.mutex.Lock()
598 currSubId := mc.c.registry.subIds[0]
599 mc.c.registry.mutex.Unlock()
600 if currSubId != origSubId {
601 return currSubId, true
603 time.Sleep(500 * time.Millisecond)
605 testError(t, "(general) no subId change within %d secs", secs)
609 func (mc *testingMainControl) get_msgcounter(t *testing.T) uint64 {
610 return mc.c.msgCounter
613 func (mc *testingMainControl) wait_msgcounter_change(t *testing.T, orig uint64, secs int) (uint64, bool) {
615 for ; i <= secs*2; i++ {
616 curr := mc.c.msgCounter
620 time.Sleep(500 * time.Millisecond)
622 testError(t, "(general) no msg counter change within %d secs", secs)
626 //-----------------------------------------------------------------------------
627 // TestSubReqAndRouteNok
630 // +-------+ +---------+ +---------+
631 // | xapp | | submgr | | rtmgr |
632 // +-------+ +---------+ +---------+
635 // |------------->| |
638 // | |------------->|
642 // | |<-------------|
644 // | [SUBS INT DELETE] |
647 //-----------------------------------------------------------------------------
649 func TestSubReqAndRouteNok(t *testing.T) {
650 xapp.Logger.Info("TestSubReqAndRouteNok")
652 waiter := rtmgrHttp.AllocNextEvent(false)
653 newSubsId := mainCtrl.get_subid(t)
654 xappConn1.handle_xapp_subs_req(t, nil)
657 //Wait that subs is cleaned
658 mainCtrl.wait_subs_clean(t, int(newSubsId), 10)
660 xappConn1.TestMsgCnt(t)
661 xappConn2.TestMsgCnt(t)
662 e2termConn.TestMsgCnt(t)
665 //-----------------------------------------------------------------------------
666 // TestSubReqAndSubDelOk
669 // +-------+ +---------+ +---------+
670 // | xapp | | submgr | | e2term |
671 // +-------+ +---------+ +---------+
674 // |------------->| |
677 // | |------------->|
680 // | |<-------------|
683 // |<-------------| |
687 // |------------->| |
690 // | |------------->|
693 // | |<-------------|
696 // |<-------------| |
698 //-----------------------------------------------------------------------------
699 func TestSubReqAndSubDelOk(t *testing.T) {
700 xapp.Logger.Info("TestSubReqAndSubDelOk")
702 waiter := rtmgrHttp.AllocNextEvent(true)
703 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
706 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
707 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
708 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
709 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
710 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
712 waiter = rtmgrHttp.AllocNextEvent(true)
713 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
714 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
717 //Wait that subs is cleaned
718 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
720 xappConn1.TestMsgCnt(t)
721 xappConn2.TestMsgCnt(t)
722 e2termConn.TestMsgCnt(t)
725 //-----------------------------------------------------------------------------
726 // TestSubReqRetransmission
729 // +-------+ +---------+ +---------+
730 // | xapp | | submgr | | e2term |
731 // +-------+ +---------+ +---------+
734 // |------------->| |
737 // | |------------->|
741 // |------------->| |
744 // | |<-------------|
747 // |<-------------| |
752 //-----------------------------------------------------------------------------
753 func TestSubReqRetransmission(t *testing.T) {
754 xapp.Logger.Info("TestSubReqRetransmission")
757 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
758 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
760 seqBef := mainCtrl.get_msgcounter(t)
761 xappConn1.handle_xapp_subs_req(t, cretrans) //Retransmitted SubReq
762 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
764 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
765 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
768 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
769 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
770 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
771 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
773 //Wait that subs is cleaned
774 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
776 xappConn1.TestMsgCnt(t)
777 xappConn2.TestMsgCnt(t)
778 e2termConn.TestMsgCnt(t)
781 //-----------------------------------------------------------------------------
782 // TestSubDelReqRetransmission
785 // +-------+ +---------+ +---------+
786 // | xapp | | submgr | | e2term |
787 // +-------+ +---------+ +---------+
793 // |------------->| |
796 // | |------------->|
801 // |------------->| |
804 // | |<-------------|
807 // |<-------------| |
809 //-----------------------------------------------------------------------------
810 func TestSubDelReqRetransmission(t *testing.T) {
811 xapp.Logger.Info("TestSubDelReqRetransmission")
814 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
815 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
816 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
817 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
820 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
821 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
823 seqBef := mainCtrl.get_msgcounter(t)
824 xappConn1.handle_xapp_subs_del_req(t, deltrans, e2SubsId) //Retransmitted SubDelReq
825 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
827 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
828 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
830 //Wait that subs is cleaned
831 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
833 xappConn1.TestMsgCnt(t)
834 xappConn2.TestMsgCnt(t)
835 e2termConn.TestMsgCnt(t)
838 //-----------------------------------------------------------------------------
839 // TestSubDelReqCollision
842 // +-------+ +---------+ +---------+
843 // | xapp | | submgr | | e2term |
844 // +-------+ +---------+ +---------+
850 // |------------->| |
853 // | |------------->|
858 // |------------->| |
861 // | |<-------------|
864 // |<-------------| |
866 //-----------------------------------------------------------------------------
867 func TestSubDelReqCollision(t *testing.T) {
868 xapp.Logger.Info("TestSubDelReqCollision")
871 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
872 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
873 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
874 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
877 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
878 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
880 seqBef := mainCtrl.get_msgcounter(t)
881 deltranscol := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
882 xappConn1.handle_xapp_subs_del_req(t, deltranscol, e2SubsId) //Colliding SubDelReq
883 mainCtrl.wait_msgcounter_change(t, seqBef, 10)
885 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
886 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
888 //Wait that subs is cleaned
889 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
891 xappConn1.TestMsgCnt(t)
892 xappConn2.TestMsgCnt(t)
893 e2termConn.TestMsgCnt(t)
896 //-----------------------------------------------------------------------------
897 // TestSubReqAndSubDelOkTwoParallel
900 // +-------+ +---------+ +---------+
901 // | xapp | | submgr | | e2term |
902 // +-------+ +---------+ +---------+
907 // |------------->| |
910 // | |------------->|
913 // |------------->| |
916 // | |------------->|
919 // | |<-------------|
921 // | |<-------------|
924 // |<-------------| |
926 // |<-------------| |
928 // | [SUBS 1 DELETE] |
930 // | [SUBS 2 DELETE] |
933 //-----------------------------------------------------------------------------
934 func TestSubReqAndSubDelOkTwoParallel(t *testing.T) {
935 xapp.Logger.Info("TestSubReqAndSubDelOkTwoParallel")
938 cretrans1 := xappConn1.handle_xapp_subs_req(t, nil)
939 crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
942 cretrans2 := xappConn2.handle_xapp_subs_req(t, nil)
943 crereq2, cremsg2 := e2termConn.handle_e2term_subs_req(t)
946 e2termConn.handle_e2term_subs_resp(t, crereq1, cremsg1)
947 e2SubsId1 := xappConn1.handle_xapp_subs_resp(t, cretrans1)
950 e2termConn.handle_e2term_subs_resp(t, crereq2, cremsg2)
951 e2SubsId2 := xappConn2.handle_xapp_subs_resp(t, cretrans2)
954 deltrans1 := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId1)
955 delreq1, delmsg1 := e2termConn.handle_e2term_subs_del_req(t)
956 e2termConn.handle_e2term_subs_del_resp(t, delreq1, delmsg1)
957 xappConn1.handle_xapp_subs_del_resp(t, deltrans1)
958 //Wait that subs is cleaned
959 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
962 deltrans2 := xappConn2.handle_xapp_subs_del_req(t, nil, e2SubsId2)
963 delreq2, delmsg2 := e2termConn.handle_e2term_subs_del_req(t)
964 e2termConn.handle_e2term_subs_del_resp(t, delreq2, delmsg2)
965 xappConn2.handle_xapp_subs_del_resp(t, deltrans2)
966 //Wait that subs is cleaned
967 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
969 xappConn1.TestMsgCnt(t)
970 xappConn2.TestMsgCnt(t)
971 e2termConn.TestMsgCnt(t)
974 //-----------------------------------------------------------------------------
975 // TestSameSubsDiffRan
976 // Same subscription to different RANs
979 // +-------+ +---------+ +---------+
980 // | xapp | | submgr | | e2term |
981 // +-------+ +---------+ +---------+
986 // |------------->| |
989 // | |------------->|
992 // | |<-------------|
995 // |<-------------| |
998 // |------------->| |
1001 // | |------------->|
1003 // | | SubResp(r2) |
1004 // | |<-------------|
1006 // | SubResp(r2) | |
1007 // |<-------------| |
1009 // | [SUBS r1 DELETE] |
1011 // | [SUBS r2 DELETE] |
1014 //-----------------------------------------------------------------------------
1015 func TestSameSubsDiffRan(t *testing.T) {
1016 xapp.Logger.Info("TestSameSubsDiffRan")
1019 cretrans1 := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
1020 xappConn1.handle_xapp_subs_req(t, cretrans1)
1021 crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
1022 e2termConn.handle_e2term_subs_resp(t, crereq1, cremsg1)
1023 e2SubsId1 := xappConn1.handle_xapp_subs_resp(t, cretrans1)
1026 cretrans2 := xappConn1.newXappTransaction(nil, "RAN_NAME_2")
1027 xappConn1.handle_xapp_subs_req(t, cretrans2)
1028 crereq2, cremsg2 := e2termConn.handle_e2term_subs_req(t)
1029 e2termConn.handle_e2term_subs_resp(t, crereq2, cremsg2)
1030 e2SubsId2 := xappConn1.handle_xapp_subs_resp(t, cretrans2)
1033 deltrans1 := xappConn1.newXappTransaction(nil, "RAN_NAME_1")
1034 xappConn1.handle_xapp_subs_del_req(t, deltrans1, e2SubsId1)
1035 delreq1, delmsg1 := e2termConn.handle_e2term_subs_del_req(t)
1036 e2termConn.handle_e2term_subs_del_resp(t, delreq1, delmsg1)
1037 xappConn1.handle_xapp_subs_del_resp(t, deltrans1)
1038 //Wait that subs is cleaned
1039 mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
1042 deltrans2 := xappConn1.newXappTransaction(nil, "RAN_NAME_2")
1043 xappConn1.handle_xapp_subs_del_req(t, deltrans2, e2SubsId2)
1044 delreq2, delmsg2 := e2termConn.handle_e2term_subs_del_req(t)
1045 e2termConn.handle_e2term_subs_del_resp(t, delreq2, delmsg2)
1046 xappConn1.handle_xapp_subs_del_resp(t, deltrans2)
1047 //Wait that subs is cleaned
1048 mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
1050 xappConn1.TestMsgCnt(t)
1051 xappConn2.TestMsgCnt(t)
1052 e2termConn.TestMsgCnt(t)
1055 //-----------------------------------------------------------------------------
1056 // TestSubReqRetryInSubmgr
1059 // +-------+ +---------+ +---------+
1060 // | xapp | | submgr | | e2term |
1061 // +-------+ +---------+ +---------+
1064 // |------------->| |
1067 // | |------------->|
1071 // | |------------->|
1074 // | |<-------------|
1077 // |<-------------| |
1079 // | [SUBS DELETE] |
1082 //-----------------------------------------------------------------------------
1084 func TestSubReqRetryInSubmgr(t *testing.T) {
1086 xapp.Logger.Info("TestSubReqRetryInSubmgr start")
1088 // Xapp: Send SubsReq
1089 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1091 // E2t: Receive 1st SubsReq
1092 e2termConn.handle_e2term_subs_req(t)
1094 // E2t: Receive 2nd SubsReq and send SubsResp
1095 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1096 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
1098 // Xapp: Receive SubsResp
1099 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
1101 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
1102 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
1103 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
1104 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
1106 // Wait that subs is cleaned
1107 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1109 xappConn1.TestMsgCnt(t)
1110 xappConn2.TestMsgCnt(t)
1111 e2termConn.TestMsgCnt(t)
1114 //-----------------------------------------------------------------------------
1115 // TestSubReqTwoRetriesNoRespSubDelRespInSubmgr
1118 // +-------+ +---------+ +---------+
1119 // | xapp | | submgr | | e2term |
1120 // +-------+ +---------+ +---------+
1123 // |------------->| |
1126 // | |------------->|
1130 // | |------------->|
1133 // | |------------->|
1137 // | |------------->|
1141 // | |<-------------|
1144 //-----------------------------------------------------------------------------
1146 func TestSubReqRetryNoRespSubDelRespInSubmgr(t *testing.T) {
1148 xapp.Logger.Info("TestSubReqTwoRetriesNoRespSubDelRespInSubmgr start")
1150 // Xapp: Send SubsReq
1151 xappConn1.handle_xapp_subs_req(t, nil)
1153 // E2t: Receive 1st SubsReq
1154 e2termConn.handle_e2term_subs_req(t)
1156 // E2t: Receive 2nd SubsReq
1157 e2termConn.handle_e2term_subs_req(t)
1159 // E2t: Send receive SubsDelReq and send SubsResp
1160 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
1161 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
1163 // Wait that subs is cleaned
1164 mainCtrl.wait_subs_clean(t, int(delreq.RequestId.Seq), 10)
1166 xappConn1.TestMsgCnt(t)
1167 xappConn2.TestMsgCnt(t)
1168 e2termConn.TestMsgCnt(t)
1171 //-----------------------------------------------------------------------------
1172 // TestSubReqTwoRetriesNoRespAtAllInSubmgr
1175 // +-------+ +---------+ +---------+
1176 // | xapp | | submgr | | e2term |
1177 // +-------+ +---------+ +---------+
1180 // |------------->| |
1183 // | |------------->|
1187 // | |------------->|
1190 // | |------------->|
1194 // | |------------->|
1198 //-----------------------------------------------------------------------------
1200 func TestSubReqTwoRetriesNoRespAtAllInSubmgr(t *testing.T) {
1202 xapp.Logger.Info("TestSubReqTwoRetriesNoRespAtAllInSubmgr start")
1204 // Xapp: Send SubsReq
1205 xappConn1.handle_xapp_subs_req(t, nil)
1207 // E2t: Receive 1st SubsReq
1208 e2termConn.handle_e2term_subs_req(t)
1210 // E2t: Receive 2nd SubsReq
1211 e2termConn.handle_e2term_subs_req(t)
1213 // E2t: Receive 1st SubsDelReq
1214 e2termConn.handle_e2term_subs_del_req(t)
1216 // E2t: Receive 2nd SubsDelReq
1217 delreq, _ := e2termConn.handle_e2term_subs_del_req(t)
1219 // Wait that subs is cleaned
1220 mainCtrl.wait_subs_clean(t, int(delreq.RequestId.Seq), 15)
1222 xappConn1.TestMsgCnt(t)
1223 xappConn2.TestMsgCnt(t)
1224 e2termConn.TestMsgCnt(t)
1227 //-----------------------------------------------------------------------------
1228 // TestSubReqSubFailRespInSubmgr
1231 // +-------+ +---------+ +---------+
1232 // | xapp | | submgr | | e2term |
1233 // +-------+ +---------+ +---------+
1236 // |------------->| |
1239 // | |------------->|
1242 // | |<-------------|
1245 // |<-------------| |
1248 //-----------------------------------------------------------------------------
1250 func TestSubReqSubFailRespInSubmgr(t *testing.T) {
1252 xapp.Logger.Info("TestSubReqSubFailRespInSubmgr start")
1254 // Xapp: Send SubsReq
1255 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1257 // E2t: Receive SubsReq and send SubsFail
1258 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1259 fparams := &test_subs_fail_params{}
1261 e2termConn.handle_e2term_subs_fail(t, fparams, cremsg)
1263 // Xapp: Receive SubsFail
1264 e2SubsId := xappConn1.handle_xapp_subs_fail(t, cretrans)
1266 // Wait that subs is cleaned
1267 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1269 xappConn1.TestMsgCnt(t)
1270 xappConn2.TestMsgCnt(t)
1271 e2termConn.TestMsgCnt(t)
1274 //-----------------------------------------------------------------------------
1275 // TestSubDelReqRetryInSubmgr
1278 // +-------+ +---------+ +---------+
1279 // | xapp | | submgr | | e2term |
1280 // +-------+ +---------+ +---------+
1282 // | [SUBS CREATE] |
1286 // |------------->| |
1289 // | |------------->|
1292 // | |------------->|
1295 // | |<-------------|
1298 // |<-------------| |
1300 //-----------------------------------------------------------------------------
1302 func TestSubDelReqRetryInSubmgr(t *testing.T) {
1304 xapp.Logger.Info("TestSubDelReqRetryInSubmgr start")
1307 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1308 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1309 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
1310 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
1313 // Xapp: Send SubsDelReq
1314 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
1316 // E2t: Receive 1st SubsDelReq
1317 e2termConn.handle_e2term_subs_del_req(t)
1319 // E2t: Receive 2nd SubsDelReq and send SubsDelResp
1320 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
1321 e2termConn.handle_e2term_subs_del_resp(t, delreq, delmsg)
1323 // Xapp: Receive SubsDelResp
1324 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
1326 // Wait that subs is cleaned
1327 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1329 xappConn1.TestMsgCnt(t)
1330 xappConn2.TestMsgCnt(t)
1331 e2termConn.TestMsgCnt(t)
1334 //-----------------------------------------------------------------------------
1335 // TestSubDelReqTwoRetriesNoRespInSubmgr
1338 // +-------+ +---------+ +---------+
1339 // | xapp | | submgr | | e2term |
1340 // +-------+ +---------+ +---------+
1342 // | [SUBS CREATE] |
1346 // |------------->| |
1349 // | |------------->|
1352 // | |------------->|
1356 // |<-------------| |
1358 //-----------------------------------------------------------------------------
1360 func TestSubDelReqTwoRetriesNoRespInSubmgr(t *testing.T) {
1362 xapp.Logger.Info("TestSubDelReTwoRetriesNoRespInSubmgr start")
1365 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1366 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1367 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
1368 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
1371 // Xapp: Send SubsDelReq
1372 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
1374 // E2t: Receive 1st SubsDelReq
1375 e2termConn.handle_e2term_subs_del_req(t)
1377 // E2t: Receive 2nd SubsDelReq
1378 e2termConn.handle_e2term_subs_del_req(t)
1380 // Xapp: Receive SubsDelResp
1381 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
1383 // Wait that subs is cleaned
1384 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1386 xappConn1.TestMsgCnt(t)
1387 xappConn2.TestMsgCnt(t)
1388 e2termConn.TestMsgCnt(t)
1391 //-----------------------------------------------------------------------------
1392 // TestSubDelReqSubDelFailRespInSubmgr
1395 // +-------+ +---------+ +---------+
1396 // | xapp | | submgr | | e2term |
1397 // +-------+ +---------+ +---------+
1399 // | [SUBS CREATE] |
1403 // |------------->| |
1406 // | |------------->|
1409 // | |<-------------|
1412 // |<-------------| |
1415 //-----------------------------------------------------------------------------
1417 func TestSubDelReqSubDelFailRespInSubmgr(t *testing.T) {
1419 xapp.Logger.Info("TestSubReqSubDelFailRespInSubmgr start")
1422 cretrans := xappConn1.handle_xapp_subs_req(t, nil)
1423 crereq, cremsg := e2termConn.handle_e2term_subs_req(t)
1424 e2termConn.handle_e2term_subs_resp(t, crereq, cremsg)
1425 e2SubsId := xappConn1.handle_xapp_subs_resp(t, cretrans)
1427 // Xapp: Send SubsDelReq
1428 deltrans := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId)
1430 // E2t: Send receive SubsDelReq and send SubsDelFail
1431 delreq, delmsg := e2termConn.handle_e2term_subs_del_req(t)
1432 e2termConn.handle_e2term_subs_del_fail(t, delreq, delmsg)
1434 // Xapp: Receive SubsDelResp
1435 xappConn1.handle_xapp_subs_del_resp(t, deltrans)
1437 // Wait that subs is cleaned
1438 mainCtrl.wait_subs_clean(t, e2SubsId, 10)
1440 xappConn1.TestMsgCnt(t)
1441 xappConn2.TestMsgCnt(t)
1442 e2termConn.TestMsgCnt(t)