xapp-frame and rmr update
[ric-plt/submgr.git] / pkg / control / ut_test.go
1 /*
2 ==================================================================================
3   Copyright (c) 2019 AT&T Intellectual Property.
4   Copyright (c) 2019 Nokia
5
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
9
10        http://www.apache.org/licenses/LICENSE-2.0
11
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 ==================================================================================
18 */
19
20 package control
21
22 import (
23         "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/teststub"
24         "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/teststubdummy"
25         "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/teststube2ap"
26         "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/xapptweaks"
27         "os"
28         "testing"
29 )
30
31 //-----------------------------------------------------------------------------
32 //
33 //-----------------------------------------------------------------------------
34 func CaseBegin(desc string) *teststub.TestWrapper {
35         tent := teststub.NewTestWrapper(desc)
36         tent.Logger.Info(desc)
37         return tent
38 }
39
40 //-----------------------------------------------------------------------------
41 //
42 //-----------------------------------------------------------------------------
43
44 var xappConn1 *teststube2ap.E2Stub
45 var xappConn2 *teststube2ap.E2Stub
46 var e2termConn1 *teststube2ap.E2Stub
47 var e2termConn2 *teststube2ap.E2Stub
48 var rtmgrHttp *testingHttpRtmgrStub
49 var mainCtrl *testingSubmgrControl
50
51 var dummystub *teststubdummy.RmrDummyStub
52
53 func ut_test_init() {
54         tent := CaseBegin("ut_test_init")
55
56         //---------------------------------
57         //
58         //---------------------------------
59         rtmgrHttp = createNewHttpRtmgrStub("RTMGRSTUB", "8989")
60         go rtmgrHttp.run()
61
62         //---------------------------------
63         //
64         //---------------------------------
65
66         //
67         //Cfg creation won't work like this as xapp-frame reads it during init.
68         //
69         /*
70             cfgstr:=`{
71               "local": {
72                   "host": ":8080"
73               },
74               "logger": {
75                   "level": 4
76               },
77               "rmr": {
78                  "protPort": "tcp:14560",
79                  "maxSize": 4096,
80                  "numWorkers": 1,
81                  "txMessages": ["RIC_SUB_REQ", "RIC_SUB_DEL_REQ"],
82                  "rxMessages": ["RIC_SUB_RESP", "RIC_SUB_FAILURE", "RIC_SUB_DEL_RESP", "RIC_SUB_DEL_FAILURE", "RIC_INDICATION"]
83               },
84               "db": {
85                   "host": "localhost",
86                   "port": 6379,
87                   "namespaces": ["sdl", "rnib"]
88               },
89                  "rtmgr" : {
90                    "HostAddr" : "localhost",
91                    "port" : "8989",
92                    "baseUrl" : "/"
93                  }
94            `
95
96            cfgfilename,_ := testCreateTmpFile(cfgstr)
97            defer os.Remove(cfgfilename)
98            os.Setenv("CFG_FILE", cfgfilename)
99         */
100         tent.Logger.Info("Using cfg file %s", os.Getenv("CFG_FILE"))
101
102         //---------------------------------
103         // Static routetable for rmr
104         //
105         // NOTE: Routing table is configured so, that responses
106         //       are duplicated to xapp1 and xapp2 instances.
107         //       If XID is not matching xapp stub will just
108         //       drop message. (Messages 12011, 12012, 12021, 12022)
109         //
110         // NOTE2: 55555 message type is for stub rmr connectivity probing
111         //
112         // NOTE3: Ports per entity:
113         //
114         // Entity
115         // -------------------
116
117         mainsrc := teststub.RmrSrcId{xapptweaks.RmrEndpoint{"localhost", 14560}}
118         xapp1src := teststub.RmrSrcId{xapptweaks.RmrEndpoint{"localhost", 13560}}
119         xapp2src := teststub.RmrSrcId{xapptweaks.RmrEndpoint{"localhost", 13660}}
120         e2term1src := teststub.RmrSrcId{xapptweaks.RmrEndpoint{"localhost", 15560}}
121         e2term2src := teststub.RmrSrcId{xapptweaks.RmrEndpoint{"localhost", 15660}}
122         dummysrc := teststub.RmrSrcId{xapptweaks.RmrEndpoint{"localhost", 16560}}
123
124         //---------------------------------
125         rt := &teststub.RmrRouteTable{}
126         rt.AddRoute(12010, "", -1, mainsrc.String())
127         rt.AddRoute(12010, mainsrc.String(), -1, "%meid")
128         rt.AddRoute(12011, e2term1src.String(), -1, mainsrc.String())
129         rt.AddRoute(12012, e2term1src.String(), -1, mainsrc.String())
130         rt.AddRoute(12011, e2term2src.String(), -1, mainsrc.String())
131         rt.AddRoute(12012, e2term2src.String(), -1, mainsrc.String())
132         rt.AddRoute(12011, mainsrc.String(), -1, xapp2src.String()+";"+xapp1src.String())
133         rt.AddRoute(12012, mainsrc.String(), -1, xapp2src.String()+";"+xapp1src.String())
134         rt.AddRoute(12020, "", -1, mainsrc.String())
135         rt.AddRoute(12020, mainsrc.String(), -1, "%meid")
136         rt.AddRoute(12021, e2term1src.String(), -1, mainsrc.String())
137         rt.AddRoute(12022, e2term1src.String(), -1, mainsrc.String())
138         rt.AddRoute(12021, e2term2src.String(), -1, mainsrc.String())
139         rt.AddRoute(12022, e2term2src.String(), -1, mainsrc.String())
140         rt.AddRoute(12021, mainsrc.String(), -1, xapp2src.String()+";"+xapp1src.String())
141         rt.AddRoute(12022, mainsrc.String(), -1, xapp2src.String()+";"+xapp1src.String())
142         rt.AddRoute(55555, "", -1, xapp2src.String()+";"+xapp1src.String()+";"+e2term1src.String()+";"+e2term2src.String()+";"+dummysrc.String())
143
144         rt.AddMeid(e2term1src.String(), []string{"RAN_NAME_1", "RAN_NAME_2"})
145         rt.AddMeid(e2term2src.String(), []string{"RAN_NAME_11", "RAN_NAME_12"})
146
147         rt.Enable()
148         defer rt.Disable()
149         tent.Logger.Info("rttable[%s]", rt.Table())
150
151         //---------------------------------
152         //
153         //---------------------------------
154         tent.Logger.Info("### submgr ctrl run ###")
155         mainCtrl = createSubmgrControl(mainsrc, teststub.RmrRtgSvc{})
156
157         //xapp-frame inits alarms when readycb is coming from xapps rmr
158         //alarm will make new rmr instance and overrides RMR_SEED_RT and RMR_RTG_SVC
159         //env variables. Re-create rt info.
160         rt.Disable()
161         rt.Enable()
162
163         //---------------------------------
164         //
165         //---------------------------------
166         tent.Logger.Info("### xapp1 stub run ###")
167         xappConn1 = teststube2ap.CreateNewE2Stub("xappstub1", xapp1src, teststub.RmrRtgSvc{}, "RMRXAPP1STUB", 55555)
168
169         //---------------------------------
170         //
171         //---------------------------------
172         tent.Logger.Info("### xapp2 stub run ###")
173         xappConn2 = teststube2ap.CreateNewE2Stub("xappstub2", xapp2src, teststub.RmrRtgSvc{}, "RMRXAPP2STUB", 55555)
174
175         //---------------------------------
176         //
177         //---------------------------------
178         tent.Logger.Info("### e2term1 stub run ###")
179         e2termConn1 = teststube2ap.CreateNewE2termStub("e2termstub1", e2term1src, teststub.RmrRtgSvc{}, "RMRE2TERMSTUB1", 55555)
180
181         //---------------------------------
182         //
183         //---------------------------------
184         tent.Logger.Info("### e2term2 stub run ###")
185         e2termConn2 = teststube2ap.CreateNewE2termStub("e2termstub2", e2term2src, teststub.RmrRtgSvc{}, "RMRE2TERMSTUB2", 55555)
186
187         //---------------------------------
188         // Just to test dummy stub
189         //---------------------------------
190         tent.Logger.Info("### dummy stub run ###")
191         dummystub = teststubdummy.CreateNewRmrDummyStub("dummystub", dummysrc, teststub.RmrRtgSvc{}, "DUMMYSTUB", 55555)
192
193         //---------------------------------
194         // Testing message sending
195         //---------------------------------
196         if teststub.RmrStubControlWaitAlive(10, 55555, mainCtrl.c) == false {
197                 os.Exit(1)
198         }
199 }
200
201 //-----------------------------------------------------------------------------
202 //
203 //-----------------------------------------------------------------------------
204 func TestMain(m *testing.M) {
205         CaseBegin("TestMain start")
206         ut_test_init()
207         code := m.Run()
208         os.Exit(code)
209 }