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 ==================================================================================
25 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
32 //-----------------------------------------------------------------------------
34 //-----------------------------------------------------------------------------
35 type testingControl struct {
37 syncChan chan struct{}
40 func (tc *testingControl) ReadyCB(data interface{}) {
41 xapp.Logger.Info("testingControl(%s) ReadyCB", tc.desc)
42 tc.syncChan <- struct{}{}
46 //-----------------------------------------------------------------------------
48 //-----------------------------------------------------------------------------
49 type testingRmrControl struct {
51 rmrClientTest *xapp.RMRClient
52 rmrConChan chan *xapp.RMRParams
55 func (tc *testingRmrControl) Consume(msg *xapp.RMRParams) (err error) {
56 xapp.Logger.Info("testingRmrControl(%s) Consume", tc.desc)
61 func (tc *testingRmrControl) RmrSend(params *xapp.RMRParams) (err error) {
63 //NOTE: Do this way until xapp-frame sending is improved
67 for ; i <= 10 && status == false; i++ {
68 status = tc.rmrClientTest.SendMsg(params)
70 xapp.Logger.Info("rmr.Send() failed. Retry count %v, Mtype: %v, SubId: %v, Xid %s", i, params.Mtype, params.SubId, params.Xid)
71 time.Sleep(500 * time.Millisecond)
75 err = errors.New("rmr.Send() failed")
76 tc.rmrClientTest.Free(params.Mbuf)
81 func createNewRmrControl(desc string, rtfile string, port string, stat string) *testingRmrControl {
82 os.Setenv("RMR_SEED_RT", rtfile)
83 os.Setenv("RMR_SRC_ID", "localhost:"+port)
84 xapp.Logger.Info("Using rt file %s", os.Getenv("RMR_SEED_RT"))
85 xapp.Logger.Info("Using src id %s", os.Getenv("RMR_SRC_ID"))
86 newConn := &testingRmrControl{}
88 newConn.syncChan = make(chan struct{})
89 newConn.rmrClientTest = xapp.NewRMRClientWithParams("tcp:"+port, 4096, 1, stat)
90 newConn.rmrConChan = make(chan *xapp.RMRParams)
91 newConn.rmrClientTest.SetReadyCB(newConn.ReadyCB, nil)
92 go newConn.rmrClientTest.Start(newConn)
97 //-----------------------------------------------------------------------------
99 //-----------------------------------------------------------------------------
101 func testError(t *testing.T, pattern string, args ...interface{}) {
102 xapp.Logger.Error(fmt.Sprintf(pattern, args...))
103 t.Errorf(fmt.Sprintf(pattern, args...))
106 func testCreateTmpFile(str string) (string, error) {
107 file, err := ioutil.TempFile("/tmp", "*.rt")
111 _, err = file.WriteString(str)
116 return file.Name(), nil
119 //-----------------------------------------------------------------------------
121 //-----------------------------------------------------------------------------
123 var xappConn *testingRmrControl
124 var e2termConn *testingRmrControl
126 func TestMain(m *testing.M) {
127 xapp.Logger.Info("TestMain start")
130 //Cfg creation won't work like this as xapp-frame reads it during init.
141 "protPort": "tcp:14560",
144 "txMessages": ["RIC_SUB_REQ", "RIC_SUB_DEL_REQ"],
145 "rxMessages": ["RIC_SUB_RESP", "RIC_SUB_FAILURE", "RIC_SUB_DEL_RESP", "RIC_SUB_DEL_FAILURE", "RIC_INDICATION"]
150 "namespaces": ["sdl", "rnib"]
154 cfgfilename,_ := testCreateTmpFile(cfgstr)
155 defer os.Remove(cfgfilename)
156 os.Setenv("CFG_FILE", cfgfilename)
158 xapp.Logger.Info("Using cfg file %s", os.Getenv("CFG_FILE"))
160 //---------------------------------
162 //---------------------------------
163 xapp.Logger.Info("### submgr main run ###")
165 subsrt := `newrt|start
166 mse|12010|-1|localhost:14560
167 mse|12010,localhost:14560|-1|localhost:15560
168 mse|12011,localhost:15560|-1|localhost:14560
169 mse|12011|-1|localhost:13560
170 mse|12012,localhost:15560|-1|localhost:14560
171 mse|12012|-1|localhost:13560
172 mse|12020|-1|localhost:14560
173 mse|12020,localhost:14560|-1|localhost:15560
174 mse|12021,localhost:15560|-1|localhost:14560
175 mse|12021|-1|localhost:13560
176 mse|12022,localhost:15560|-1|localhost:14560
177 mse|12022|-1|localhost:13560
181 subrtfilename, _ := testCreateTmpFile(subsrt)
182 defer os.Remove(subrtfilename)
183 os.Setenv("RMR_SEED_RT", subrtfilename)
184 xapp.Logger.Info("Using rt file %s", os.Getenv("RMR_SEED_RT"))
186 mainCtrl := &testingControl{}
187 mainCtrl.desc = "main"
188 mainCtrl.syncChan = make(chan struct{})
190 os.Setenv("RMR_SRC_ID", "localhost:14560")
192 c.skipRouteUpdate = true
193 xapp.SetReadyCB(mainCtrl.ReadyCB, nil)
194 go xapp.RunWithParams(c, false)
197 //---------------------------------
199 //---------------------------------
200 xapp.Logger.Info("### xapp rmr run ###")
202 xapprt := `newrt|start
203 mse|12010|-1|localhost:14560
204 mse|12011|-1|localhost:13560
205 mse|12012|-1|localhost:13560
206 mse|12020|-1|localhost:14560
207 mse|12021|-1|localhost:13560
208 mse|12022|-1|localhost:13560
212 xapprtfilename, _ := testCreateTmpFile(xapprt)
213 defer os.Remove(xapprtfilename)
214 xappConn = createNewRmrControl("xappConn", xapprtfilename, "13560", "RMRXAPPSTUB")
216 //---------------------------------
218 //---------------------------------
219 xapp.Logger.Info("### e2term rmr run ###")
221 e2termrt := `newrt|start
222 mse|12010|-1|localhost:15560
223 mse|12011|-1|localhost:14560
224 mse|12012|-1|localhost:14560
225 mse|12020|-1|localhost:15560
226 mse|12021|-1|localhost:14560
227 mse|12022|-1|localhost:14560
231 e2termrtfilename, _ := testCreateTmpFile(e2termrt)
232 defer os.Remove(e2termrtfilename)
233 e2termConn = createNewRmrControl("e2termConn", e2termrtfilename, "15560", "RMRE2TERMSTUB")