b1f98897f746e32a6f66b861338f578a46910780
[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         //---------------------------------
158         //
159         //---------------------------------
160         tent.Logger.Info("### xapp1 stub run ###")
161         xappConn1 = teststube2ap.CreateNewE2Stub("xappstub1", xapp1src, teststub.RmrRtgSvc{}, "RMRXAPP1STUB", 55555)
162
163         //---------------------------------
164         //
165         //---------------------------------
166         tent.Logger.Info("### xapp2 stub run ###")
167         xappConn2 = teststube2ap.CreateNewE2Stub("xappstub2", xapp2src, teststub.RmrRtgSvc{}, "RMRXAPP2STUB", 55555)
168
169         //---------------------------------
170         //
171         //---------------------------------
172         tent.Logger.Info("### e2term1 stub run ###")
173         e2termConn1 = teststube2ap.CreateNewE2termStub("e2termstub1", e2term1src, teststub.RmrRtgSvc{}, "RMRE2TERMSTUB1", 55555)
174
175         //---------------------------------
176         //
177         //---------------------------------
178         tent.Logger.Info("### e2term2 stub run ###")
179         e2termConn2 = teststube2ap.CreateNewE2termStub("e2termstub2", e2term2src, teststub.RmrRtgSvc{}, "RMRE2TERMSTUB2", 55555)
180
181         //---------------------------------
182         // Just to test dummy stub
183         //---------------------------------
184         tent.Logger.Info("### dummy stub run ###")
185         dummystub = teststubdummy.CreateNewRmrDummyStub("dummystub", dummysrc, teststub.RmrRtgSvc{}, "DUMMYSTUB", 55555)
186
187         //---------------------------------
188         // Testing message sending
189         //---------------------------------
190         if teststub.RmrStubControlWaitAlive(10, 55555, mainCtrl.c) == false {
191                 os.Exit(1)
192         }
193 }
194
195 //-----------------------------------------------------------------------------
196 //
197 //-----------------------------------------------------------------------------
198 func TestMain(m *testing.M) {
199         CaseBegin("TestMain start")
200         ut_test_init()
201         code := m.Run()
202         os.Exit(code)
203 }