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 ==================================================================================
22 "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/xapptweaks"
23 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
29 //-----------------------------------------------------------------------------
31 //-----------------------------------------------------------------------------
32 type RmrStubControl struct {
35 RecvChan chan *xapptweaks.RMRParams
41 func (tc *RmrStubControl) SetActive() {
45 func (tc *RmrStubControl) IsActive() bool {
49 func (tc *RmrStubControl) SetCheckXid(val bool) {
53 func (tc *RmrStubControl) IsCheckXid() bool {
57 func (tc *RmrStubControl) IsChanEmpty() bool {
58 if len(tc.RecvChan) > 0 {
64 func (tc *RmrStubControl) TestMsgChanEmpty(t *testing.T) {
65 if tc.IsChanEmpty() == false {
66 tc.TestError(t, "message channel not empty")
70 func (tc *RmrStubControl) Init(desc string, rtfile string, port string, stat string, initMsg int) {
73 tc.RecvChan = make(chan *xapptweaks.RMRParams)
74 tc.RmrControl.Init(desc, rtfile, port)
77 tc.Rmr = xapp.NewRMRClientWithParams("tcp:"+port, 4096, 1, stat)
78 tc.Rmr.SetReadyCB(tc.ReadyCB, nil)
82 allRmrStubs = append(allRmrStubs, tc)
85 func (tc *RmrStubControl) Consume(params *xapp.RMRParams) (err error) {
86 defer tc.Rmr.Free(params.Mbuf)
87 msg := xapptweaks.NewParams(params)
90 if msg.Mtype == tc.InitMsg {
91 tc.Logger.Info("Testing message ignore %s", msg.String())
96 if tc.IsCheckXid() == true && strings.Contains(msg.Xid, tc.GetDesc()) == false {
97 tc.Logger.Info("Ignore %s", msg.String())
101 tc.Logger.Info("Consume %s", msg.String())
106 func (tc *RmrStubControl) PushMsg(msg *xapptweaks.RMRParams) {
107 tc.Logger.Debug("RmrStubControl PushMsg ... msg(%d) waiting", msg.Mtype)
109 tc.Logger.Debug("RmrStubControl PushMsg ... done")
112 func (tc *RmrStubControl) WaitMsg(secs time.Duration) *xapptweaks.RMRParams {
113 tc.Logger.Debug("RmrStubControl WaitMsg ... waiting")
116 tc.Logger.Debug("RmrStubControl WaitMsg ... msg(%d) done", msg.Mtype)
120 case msg := <-tc.RecvChan:
121 tc.Logger.Debug("RmrStubControl WaitMsg ... msg(%d) done", msg.Mtype)
123 case <-time.After(secs * time.Second):
124 tc.Logger.Debug("RmrStubControl WaitMsg ... timeout")
127 tc.Logger.Debug("RmrStubControl WaitMsg ... error")
131 var allRmrStubs []*RmrStubControl
133 //-----------------------------------------------------------------------------
135 //-----------------------------------------------------------------------------
137 func RmrStubControlWaitAlive(seconds int, mtype int, rmr xapptweaks.XAppWrapperIf) bool {
139 var dummyBuf []byte = make([]byte, 100)
141 params := xapptweaks.NewParams(nil)
144 params.Payload = dummyBuf
145 params.PayloadLen = 100
146 params.Meid = &xapp.RMRMeid{RanName: "TESTPING"}
147 params.Xid = "TESTPING"
152 for ; i <= seconds*2 && status == false; i++ {
154 rmr.GetLogger().Info("SEND TESTPING: %s", params.String())
158 for _, val := range allRmrStubs {
159 if val.IsActive() == false {
167 rmr.GetLogger().Info("Sleep 0.5 secs and try routes again")
168 time.Sleep(500 * time.Millisecond)
172 rmr.GetLogger().Error("Could not initialize routes")