-func createNewRmrControl(desc string, rtfile string, port string, stat string) *testingRmrControl {
- os.Setenv("RMR_SEED_RT", rtfile)
- os.Setenv("RMR_SRC_ID", "localhost:"+port)
- xapp.Logger.Info("Using rt file %s", os.Getenv("RMR_SEED_RT"))
- xapp.Logger.Info("Using src id %s", os.Getenv("RMR_SRC_ID"))
- newConn := &testingRmrControl{}
- newConn.desc = desc
- newConn.syncChan = make(chan struct{})
- newConn.rmrClientTest = xapp.NewRMRClientWithParams("tcp:"+port, 4096, 1, stat)
- newConn.rmrConChan = make(chan *xapp.RMRParams)
- newConn.rmrClientTest.SetReadyCB(newConn.ReadyCB, nil)
- go newConn.rmrClientTest.Start(newConn)
- <-newConn.syncChan
- return newConn
+func initTestingRmrControl(desc string, rtfile string, port string, stat string, consumer xapp.MessageConsumer) testingRmrStubControl {
+ tc := testingRmrStubControl{}
+ tc.active = false
+ tc.testingRmrControl = initTestingControl(desc, rtfile, port)
+ tc.rmrClientTest = xapp.NewRMRClientWithParams("tcp:"+port, 4096, 1, stat)
+ tc.rmrClientTest.SetReadyCB(tc.ReadyCB, nil)
+ go tc.rmrClientTest.Start(consumer)
+ tc.WaitCB()
+ return tc
+}
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type testingMessageChannel struct {
+ rmrConChan chan *RMRParams
+}
+
+func initTestingMessageChannel() testingMessageChannel {
+ mc := testingMessageChannel{}
+ mc.rmrConChan = make(chan *RMRParams)
+ return mc
+}
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type xappTransaction struct {
+ tc *testingXappControl
+ xid string
+ meid *xapp.RMRMeid
+}
+
+type testingXappControl struct {
+ testingRmrStubControl
+ testingMessageChannel
+ xid_seq uint64
+}
+
+func (tc *testingXappControl) newXid() string {
+ var xid string
+ xid = tc.desc + "_XID_" + strconv.FormatUint(uint64(tc.xid_seq), 10)
+ tc.xid_seq++
+ return xid
+}
+
+func (tc *testingXappControl) newXappTransaction(xid *string, ranname string) *xappTransaction {
+ trans := &xappTransaction{}
+ trans.tc = tc
+ if xid == nil {
+ trans.xid = tc.newXid()
+ } else {
+ trans.xid = *xid
+ }
+ trans.meid = &xapp.RMRMeid{RanName: ranname}
+ return trans
+}
+
+func (tc *testingXappControl) Consume(params *xapp.RMRParams) (err error) {
+ xapp.Rmr.Free(params.Mbuf)
+ params.Mbuf = nil
+ msg := &RMRParams{params}
+
+ if params.Mtype == 55555 {
+ xapp.Logger.Info("(%s) Testing message ignore %s", tc.desc, msg.String())
+ tc.active = true
+ return
+ }
+
+ if strings.Contains(msg.Xid, tc.desc) {
+ xapp.Logger.Info("(%s) Consume %s", tc.desc, msg.String())
+ tc.IncMsgCnt()
+ tc.rmrConChan <- msg
+ } else {
+ xapp.Logger.Info("(%s) Ignore %s", tc.desc, msg.String())
+ }
+ return
+}
+
+func createNewXappControl(desc string, rtfile string, port string, stat string) *testingXappControl {
+ xappCtrl := &testingXappControl{}
+ xappCtrl.testingRmrStubControl = initTestingRmrControl(desc, rtfile, port, stat, xappCtrl)
+ xappCtrl.testingMessageChannel = initTestingMessageChannel()
+ xappCtrl.xid_seq = 1
+ return xappCtrl
+}
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type testingE2termControl struct {
+ testingRmrStubControl
+ testingMessageChannel
+}
+
+func (tc *testingE2termControl) Consume(params *xapp.RMRParams) (err error) {
+ xapp.Rmr.Free(params.Mbuf)
+ params.Mbuf = nil
+ msg := &RMRParams{params}
+
+ if params.Mtype == 55555 {
+ xapp.Logger.Info("(%s) Testing message ignore %s", tc.desc, msg.String())
+ tc.active = true
+ return
+ }
+
+ xapp.Logger.Info("(%s) Consume %s", tc.desc, msg.String())
+ tc.rmrConChan <- msg
+ return
+}
+
+func createNewE2termControl(desc string, rtfile string, port string, stat string) *testingE2termControl {
+ e2termCtrl := &testingE2termControl{}
+ e2termCtrl.testingRmrStubControl = initTestingRmrControl(desc, rtfile, port, stat, e2termCtrl)
+ e2termCtrl.testingMessageChannel = initTestingMessageChannel()
+ return e2termCtrl
+}
+
+//-----------------------------------------------------------------------------
+//
+//-----------------------------------------------------------------------------
+type testingMainControl struct {
+ testingRmrControl
+ c *Control
+}
+
+func createNewMainControl(desc string, rtfile string, port string) *testingMainControl {
+ mainCtrl = &testingMainControl{}
+ mainCtrl.testingRmrControl = initTestingControl(desc, rtfile, port)
+ mainCtrl.c = NewControl()
+ xapp.SetReadyCB(mainCtrl.ReadyCB, nil)
+ go xapp.RunWithParams(mainCtrl.c, false)
+ mainCtrl.WaitCB()
+ return mainCtrl