+ mainCtrl.wait_registry_empty(t, 10)
+}
+
+//-----------------------------------------------------------------------------
+// TestSubReqAndSubDelOkSameAction
+//
+// stub stub
+// +-------+ +---------+ +---------+
+// | xapp | | submgr | | e2term |
+// +-------+ +---------+ +---------+
+// | | |
+// | | |
+// | | |
+// | SubReq1 | |
+// |------------->| |
+// | | |
+// | | SubReq1 |
+// | |------------->|
+// | | SubResp1 |
+// | |<-------------|
+// | SubResp1 | |
+// |<-------------| |
+// | | |
+// | SubReq2 | |
+// |------------->| |
+// | | |
+// | SubResp2 | |
+// |<-------------| |
+// | | |
+// | SubDelReq 1 | |
+// |------------->| |
+// | | |
+// | SubDelResp 1 | |
+// |<-------------| |
+// | | |
+// | SubDelReq 2 | |
+// |------------->| |
+// | | |
+// | | SubDelReq 2 |
+// | |------------->|
+// | | |
+// | | SubDelReq 2 |
+// | |------------->|
+// | | |
+// | SubDelResp 2 | |
+// |<-------------| |
+//
+//-----------------------------------------------------------------------------
+func TestSubReqAndSubDelOkSameAction(t *testing.T) {
+ xapp.Logger.Info("TestSubReqAndSubDelOkSameAction")
+
+ //Req1
+ rparams1 := &test_subs_req_params{}
+ rparams1.Init()
+ cretrans1 := xappConn1.handle_xapp_subs_req(t, rparams1, nil)
+ crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
+ e2termConn.handle_e2term_subs_resp(t, crereq1, cremsg1)
+ e2SubsId1 := xappConn1.handle_xapp_subs_resp(t, cretrans1)
+
+ //Req2
+ rparams2 := &test_subs_req_params{}
+ rparams2.Init()
+ cretrans2 := xappConn2.handle_xapp_subs_req(t, rparams2, nil)
+ //crereq2, cremsg2 := e2termConn.handle_e2term_subs_req(t)
+ //e2termConn.handle_e2term_subs_resp(t, crereq2, cremsg2)
+ e2SubsId2 := xappConn2.handle_xapp_subs_resp(t, cretrans2)
+
+ //Del1
+ deltrans1 := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId1)
+ //e2termConn.handle_e2term_subs_del_req(t)
+ //e2termConn.handle_e2term_subs_del_resp(t, delreq1, delmsg1)
+ xappConn1.handle_xapp_subs_del_resp(t, deltrans1)
+ //Wait that subs is cleaned
+ //mainCtrl.wait_subs_clean(t, e2SubsId1, 10)
+
+ //Del2
+ deltrans2 := xappConn2.handle_xapp_subs_del_req(t, nil, e2SubsId2)
+ delreq2, delmsg2 := e2termConn.handle_e2term_subs_del_req(t)
+ e2termConn.handle_e2term_subs_del_resp(t, delreq2, delmsg2)
+ xappConn2.handle_xapp_subs_del_resp(t, deltrans2)
+ //Wait that subs is cleaned
+ mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
+
+ xappConn1.TestMsgCnt(t)
+ xappConn2.TestMsgCnt(t)
+ e2termConn.TestMsgCnt(t)
+ mainCtrl.wait_registry_empty(t, 10)
+}
+
+//-----------------------------------------------------------------------------
+// TestSubReqAndSubDelOkSameActionParallel
+//
+// stub stub
+// +-------+ +---------+ +---------+
+// | xapp | | submgr | | e2term |
+// +-------+ +---------+ +---------+
+// | | |
+// | | |
+// | | |
+// | SubReq1 | |
+// |------------->| |
+// | | |
+// | | SubReq1 |
+// | |------------->|
+// | SubReq2 | |
+// |------------->| |
+// | | SubResp1 |
+// | |<-------------|
+// | SubResp1 | |
+// |<-------------| |
+// | | |
+// | SubResp2 | |
+// |<-------------| |
+// | | |
+// | SubDelReq 1 | |
+// |------------->| |
+// | | |
+// | SubDelResp 1 | |
+// |<-------------| |
+// | | |
+// | SubDelReq 2 | |
+// |------------->| |
+// | | |
+// | | SubDelReq 2 |
+// | |------------->|
+// | | |
+// | | SubDelReq 2 |
+// | |------------->|
+// | | |
+// | SubDelResp 2 | |
+// |<-------------| |
+//
+//-----------------------------------------------------------------------------
+func TestSubReqAndSubDelOkSameActionParallel(t *testing.T) {
+ xapp.Logger.Info("TestSubReqAndSubDelOkSameActionParallel")
+
+ //Req1
+ rparams1 := &test_subs_req_params{}
+ rparams1.Init()
+ cretrans1 := xappConn1.handle_xapp_subs_req(t, rparams1, nil)
+ crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
+
+ //Req2
+ rparams2 := &test_subs_req_params{}
+ rparams2.Init()
+ cretrans2 := xappConn2.handle_xapp_subs_req(t, rparams2, nil)
+
+ //Resp1
+ e2termConn.handle_e2term_subs_resp(t, crereq1, cremsg1)
+ e2SubsId1 := xappConn1.handle_xapp_subs_resp(t, cretrans1)
+
+ //Resp2
+ e2SubsId2 := xappConn2.handle_xapp_subs_resp(t, cretrans2)
+
+ //Del1
+ deltrans1 := xappConn1.handle_xapp_subs_del_req(t, nil, e2SubsId1)
+ xappConn1.handle_xapp_subs_del_resp(t, deltrans1)
+
+ //Del2
+ deltrans2 := xappConn2.handle_xapp_subs_del_req(t, nil, e2SubsId2)
+ delreq2, delmsg2 := e2termConn.handle_e2term_subs_del_req(t)
+ e2termConn.handle_e2term_subs_del_resp(t, delreq2, delmsg2)
+ xappConn2.handle_xapp_subs_del_resp(t, deltrans2)
+
+ //Wait that subs is cleaned
+ mainCtrl.wait_subs_clean(t, e2SubsId2, 10)
+
+ xappConn1.TestMsgCnt(t)
+ xappConn2.TestMsgCnt(t)
+ e2termConn.TestMsgCnt(t)
+ mainCtrl.wait_registry_empty(t, 10)
+}
+
+//-----------------------------------------------------------------------------
+// TestSubReqAndSubDelNokSameActionParallel
+//
+// stub stub
+// +-------+ +---------+ +---------+
+// | xapp | | submgr | | e2term |
+// +-------+ +---------+ +---------+
+// | | |
+// | | |
+// | | |
+// | SubReq1 | |
+// |------------->| |
+// | | |
+// | | SubReq1 |
+// | |------------->|
+// | SubReq2 | |
+// |------------->| |
+// | | SubFail1 |
+// | |<-------------|
+// | SubFail1 | |
+// |<-------------| |
+// | | |
+// | SubFail2 | |
+// |<-------------| |
+//
+//-----------------------------------------------------------------------------
+func TestSubReqAndSubDelNokSameActionParallel(t *testing.T) {
+ xapp.Logger.Info("TestSubReqAndSubDelNokSameActionParallel")
+
+ //Req1
+ rparams1 := &test_subs_req_params{}
+ rparams1.Init()
+ cretrans1 := xappConn1.handle_xapp_subs_req(t, rparams1, nil)
+ crereq1, cremsg1 := e2termConn.handle_e2term_subs_req(t)
+
+ //Req2
+ rparams2 := &test_subs_req_params{}
+ rparams2.Init()
+ seqBef2 := mainCtrl.get_msgcounter(t)
+ cretrans2 := xappConn2.handle_xapp_subs_req(t, rparams2, nil)
+ mainCtrl.wait_msgcounter_change(t, seqBef2, 10)
+
+ //E2T Fail
+ fparams := &test_subs_fail_params{}
+ fparams.Set(crereq1)
+ e2termConn.handle_e2term_subs_fail(t, fparams, cremsg1)
+
+ //Fail1
+ e2SubsId1 := xappConn1.handle_xapp_subs_fail(t, cretrans1)
+ //Fail2
+ xappConn2.handle_xapp_subs_fail(t, cretrans2)
+
+ //Wait that subs is cleaned
+ mainCtrl.wait_subs_clean(t, e2SubsId1, 15)
+
+ xappConn1.TestMsgCnt(t)
+ xappConn2.TestMsgCnt(t)
+ e2termConn.TestMsgCnt(t)
+ mainCtrl.wait_registry_empty(t, 10)
+}
+
+//-----------------------------------------------------------------------------
+// TestSubReqAndSubDelNoAnswerSameActionParallel
+//
+// stub stub
+// +-------+ +---------+ +---------+
+// | xapp | | submgr | | e2term |
+// +-------+ +---------+ +---------+
+// | | |
+// | | |
+// | | |
+// | SubReq1 | |
+// |------------->| |
+// | | |
+// | | SubReq1 |
+// | |------------->|
+// | SubReq2 | |
+// |------------->| |
+// | | |
+// | | SubReq1 |
+// | |------------->|
+// | | |
+// | | |
+// | | SubDelReq |
+// | |------------->|
+// | | |
+// | | SubDelResp |
+// | |<-------------|
+//
+//-----------------------------------------------------------------------------
+func TestSubReqAndSubDelNoAnswerSameActionParallel(t *testing.T) {
+ xapp.Logger.Info("TestSubReqAndSubDelNoAnswerSameActionParallel")
+
+ //Req1
+ rparams1 := &test_subs_req_params{}
+ rparams1.Init()
+ xappConn1.handle_xapp_subs_req(t, rparams1, nil)
+
+ e2termConn.handle_e2term_subs_req(t)
+
+ //Req2
+ rparams2 := &test_subs_req_params{}
+ rparams2.Init()
+ seqBef2 := mainCtrl.get_msgcounter(t)
+ xappConn2.handle_xapp_subs_req(t, rparams2, nil)
+ mainCtrl.wait_msgcounter_change(t, seqBef2, 10)
+
+ //Req1 (retransmitted)
+ e2termConn.handle_e2term_subs_req(t)
+
+ delreq1, delmsg1 := e2termConn.handle_e2term_subs_del_req(t)
+ e2termConn.handle_e2term_subs_del_resp(t, delreq1, delmsg1)
+
+ //Wait that subs is cleaned
+ mainCtrl.wait_subs_clean(t, int(delreq1.RequestId.Seq), 10)
+
+ xappConn1.TestMsgCnt(t)
+ xappConn2.TestMsgCnt(t)
+ e2termConn.TestMsgCnt(t)
+ mainCtrl.wait_registry_empty(t, 15)