85a300c65fc9c35eb715b96cf735ff6b1ecf0b09
[ric-plt/rtmgr.git] / pkg / sbi / nngpub_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         Mnemonic:       nngpub_test.go
21         Abstract:
22         Date:           25 April 2019
23 */
24 package sbi
25
26 import (
27         "errors"
28         "routing-manager/pkg/rtmgr"
29         "routing-manager/pkg/stub"
30         "testing"
31 )
32
33 /*
34 Returns an error free Socket instance
35 */
36 func createNewStubPubSocket() (NngSocket, error) {
37         socket := stub.MangosSocket{}
38         return socket, nil
39 }
40
41 /*
42 Returns a SocketError
43 */
44 func createNewStubPubSocketError() (NngSocket, error) {
45         return nil, errors.New("stub generated Create Socket error")
46 }
47
48 /*
49 Returns a Socket which always generates error on Close()
50 */
51 func createNewStubPubSocketCloseError() (NngSocket, error) {
52         socket := stub.MangosSocket{}
53         socket.GenerateSocketCloseError = true
54         return socket, nil
55 }
56
57 /*
58 Returns a Socket which always generates error on Listen()
59 */
60 func createNewStubPubSocketListenError() (NngSocket, error) {
61         socket := stub.MangosSocket{}
62         socket.GenerateSocketListenError = true
63         return socket, nil
64 }
65
66 /*
67 Returns a Socket which always generates error on Send()
68 */
69 func createNewStubPubSocketSendError() (NngSocket, error) {
70         socket := stub.MangosSocket{}
71         socket.GenerateSocketSendError = true
72         return socket, nil
73 }
74
75 /*
76 Resets the EndpointList according to argumnets
77 */
78 func resetTestPubDataset(instance NngPub, testdata []rtmgr.Endpoint) {
79         rtmgr.Eps = make(map[string]*rtmgr.Endpoint)
80         for _, endpoint := range testdata {
81                 ep := endpoint
82                 ep.Socket, _ = instance.NewSocket()
83                 rtmgr.Eps[ep.Uuid] = &ep
84         }
85 }
86
87 /*
88 nngPub.Initialize() method is tested for happy path case
89 */
90 func TestNngPubInitialize(t *testing.T) {
91         var nngpub = NngPub{}
92         nngpub.NewSocket = createNewStubPubSocket
93
94         err := nngpub.Initialize("")
95         if err != nil {
96                 t.Errorf("nngPub.Initialize() was incorrect, got: %v, want: %v.", err, nil)
97         }
98 }
99
100 /*
101 nngPub.Initialize() is tested for Socket creating error case
102 */
103 func TestNngPubInitializeWithSocketError(t *testing.T) {
104         var nngpub = NngPub{}
105         nngpub.NewSocket = createNewStubPubSocketError
106
107         err := nngpub.Initialize("")
108         if err == nil {
109                 t.Errorf("nngPub.Initialize() was incorrect, got: %v, want: %v.", nil, "error")
110         }
111 }
112
113 /*
114 nngPub.Initialize() is tested for Socket listening error case
115 */
116 func TestNngPubInitializeWithSocketListenError(t *testing.T) {
117         var nngpub = NngPub{}
118         nngpub.NewSocket = createNewStubPubSocketListenError
119
120         err := nngpub.Initialize("")
121         if err == nil {
122                 t.Errorf("nngPub.Initialize() was incorrect, got: %v, want: %v.", nil, "error")
123         }
124 }
125
126 /*
127 nngPub.Terminate() method is empty, nothing to be tested
128 */
129 func TestNngPubTerminate(t *testing.T) {
130         var nngpub = NngPub{}
131         nngpub.NewSocket = createNewStubPubSocket
132         nngpub.Initialize("")
133
134         err := nngpub.Terminate()
135         if err != nil {
136                 t.Errorf("nngPub.Terminate() was incorrect, got: %v, want: %v.", err, nil)
137         }
138 }
139
140 /*
141 nngPub.Terminate() is tested for Socket closing error case
142 */
143 func TestNngPubTerminateWithSocketCloseError(t *testing.T) {
144         var nngpub = NngPub{}
145         nngpub.NewSocket = createNewStubPubSocketCloseError
146         nngpub.Initialize("")
147
148         err := nngpub.Terminate()
149         if err == nil {
150                 t.Errorf("nngPub.Terminate() was incorrect, got: %v, want: %v.", nil, "error")
151         }
152 }
153
154 /*
155 nngPub.UpdateEndpoints() is testd against stub.ValidXapps dataset
156 */
157 func TestNngPubUpdateEndpoints(t *testing.T) {
158         var nngpub = NngPub{}
159         nngpub.NewSocket = createNewStubPubSocket
160         nngpub.Initialize("")
161         rtmgr.Eps = make(rtmgr.Endpoints)
162         nngpub.UpdateEndpoints(&stub.ValidRicComponents)
163         if rtmgr.Eps == nil {
164                 t.Errorf("nngPub.UpdateEndpoints() result was incorrect, got: %v, want: %v.", nil, "rtmgr.Endpoints")
165         }
166 }
167
168 /*
169 nngPub.AddEndpoint() method is empty, nothing to be tested
170 */
171 func TestNngPubAddEndpoint(t *testing.T) {
172         var nngpub = NngPub{}
173         nngpub.NewSocket = createNewStubPubSocket
174
175         _ = nngpub.AddEndpoint(new(rtmgr.Endpoint))
176 }
177
178 /*
179 nngPub.DeleteEndpoint() method is empty, nothing to be tested
180 */
181 func TestNngPubDeleteEndpoint(t *testing.T) {
182         var nngpub = NngPub{}
183         nngpub.NewSocket = createNewStubPubSocket
184
185         _ = nngpub.DeleteEndpoint(new(rtmgr.Endpoint))
186 }
187
188 /*
189 nngPub.DistributeAll() is tested for happy path case
190 */
191 func TestNngPubDistributeAll(t *testing.T) {
192         var nngpub = NngPub{}
193         nngpub.NewSocket = createNewStubPubSocket
194         nngpub.Initialize("")
195         resetTestPubDataset(nngpub, stub.ValidEndpoints)
196
197         err := nngpub.DistributeAll(stub.ValidPolicies)
198         if err != nil {
199                 t.Errorf("nngPub.DistributeAll(policies) was incorrect, got: %v, want: %v.", err, nil)
200         }
201 }
202
203 /*
204 nngPub.DistributeAll() is tested for Sending error case
205 */
206 func TestNngPubDistributeAllSocketSendError(t *testing.T) {
207         var nngpub = NngPub{}
208         nngpub.NewSocket = createNewStubPubSocketSendError
209         nngpub.Initialize("")
210         resetTestPubDataset(nngpub, stub.ValidEndpoints)
211
212         err := nngpub.DistributeAll(stub.ValidPolicies)
213         if err == nil {
214                 t.Errorf("nngPub.DistributeAll(policies) was incorrect, got: %v, want: %v.", nil, "error")
215         }
216 }