blob: 721271e2c4052d578571b0d6470f6ccc84772704 [file] [log] [blame]
khenaidoobf6e7bb2018-08-14 22:27:29 -04001/*
2 * Copyright 2018-present Open Networking Foundation
3
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7
8 * http://www.apache.org/licenses/LICENSE-2.0
9
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
khenaidoob9203542018-09-17 22:56:37 -040016package core
khenaidoobf6e7bb2018-08-14 22:27:29 -040017
18import (
19 "context"
20 "github.com/golang/protobuf/ptypes/empty"
21 "github.com/opencord/voltha-go/common/log"
22 "github.com/opencord/voltha-go/protos/common"
23 "github.com/opencord/voltha-go/protos/openflow_13"
24 "github.com/opencord/voltha-go/protos/voltha"
25 "github.com/stretchr/testify/assert"
26 "google.golang.org/grpc"
khenaidoob9203542018-09-17 22:56:37 -040027 "google.golang.org/grpc/codes"
khenaidoobf6e7bb2018-08-14 22:27:29 -040028 "google.golang.org/grpc/metadata"
29 "google.golang.org/grpc/status"
30 "os"
31 "testing"
32)
33
34var conn *grpc.ClientConn
35var stub voltha.VolthaServiceClient
36var testMode string
37
khenaidoob9203542018-09-17 22:56:37 -040038/*
39NOTE: These tests require the rw_core to run prior to executing these test cases
40*/
41
khenaidoobf6e7bb2018-08-14 22:27:29 -040042func setup() {
43 var err error
khenaidoob9203542018-09-17 22:56:37 -040044
45 if err = log.AddPackage(log.JSON, log.WarnLevel, log.Fields{"instanceId": "testing"}); err != nil {
khenaidoobf6e7bb2018-08-14 22:27:29 -040046 log.With(log.Fields{"error": err}).Fatal("Cannot setup logging")
47 }
48 conn, err = grpc.Dial("localhost:50057", grpc.WithInsecure())
49 if err != nil {
50 log.Fatalf("did not connect: %s", err)
51 }
52
53 stub = voltha.NewVolthaServiceClient(conn)
54 testMode = common.TestModeKeys_api_test.String()
55}
56
57func TestGetDevice(t *testing.T) {
58 var id common.ID
59 id.Id = "anyid"
60 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
61 response, err := stub.GetDevice(ctx, &id)
62 assert.Nil(t, response)
63 st, _ := status.FromError(err)
khenaidoob9203542018-09-17 22:56:37 -040064 assert.Equal(t, id.Id, st.Message())
65 assert.Equal(t, codes.NotFound, st.Code())
khenaidoobf6e7bb2018-08-14 22:27:29 -040066}
67
68func TestUpdateLogLevelError(t *testing.T) {
69 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
khenaidoob9203542018-09-17 22:56:37 -040070 level := voltha.Logging{PackageName: "github.com/opencord/voltha-go/rw_core/core", Level: common.LogLevel_ERROR}
khenaidoobf6e7bb2018-08-14 22:27:29 -040071 response, err := stub.UpdateLogLevel(ctx, &level)
72 log.Infow("response", log.Fields{"res": response, "error": err})
73 assert.Equal(t, &empty.Empty{}, response)
74 assert.Nil(t, err)
75}
76
77func TestGetVoltha(t *testing.T) {
78 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
79 response, err := stub.GetVoltha(ctx, &empty.Empty{})
80 assert.Nil(t, response)
81 st, _ := status.FromError(err)
82 assert.Equal(t, "UnImplemented", st.Message())
83}
84
85func TestUpdateLogLevelDebug(t *testing.T) {
86 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
khenaidoob9203542018-09-17 22:56:37 -040087 level := voltha.Logging{PackageName: "github.com/opencord/voltha-go/rw_core/core", Level: common.LogLevel_DEBUG}
khenaidoobf6e7bb2018-08-14 22:27:29 -040088 response, err := stub.UpdateLogLevel(ctx, &level)
89 log.Infow("response", log.Fields{"res": response, "error": err})
90 assert.Equal(t, &empty.Empty{}, response)
91 assert.Nil(t, err)
92}
93
khenaidoobf6e7bb2018-08-14 22:27:29 -040094func TestGetCoreInstance(t *testing.T) {
95 id := &voltha.ID{Id: "getCoreInstance"}
96 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
97 response, err := stub.GetCoreInstance(ctx, id)
98 assert.Nil(t, response)
99 st, _ := status.FromError(err)
100 assert.Equal(t, "UnImplemented", st.Message())
101}
102
103func TestGetLogicalDevice(t *testing.T) {
104 id := &voltha.ID{Id: "getLogicalDevice"}
105 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
106 response, err := stub.GetLogicalDevice(ctx, id)
107 assert.Nil(t, response)
108 st, _ := status.FromError(err)
khenaidoob9203542018-09-17 22:56:37 -0400109 assert.Equal(t, id.Id, st.Message())
110 assert.Equal(t, codes.NotFound, st.Code())
khenaidoobf6e7bb2018-08-14 22:27:29 -0400111}
112
113func TestGetLogicalDevicePort(t *testing.T) {
114 id := &voltha.LogicalPortId{Id: "GetLogicalDevicePort"}
115 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
116 response, err := stub.GetLogicalDevicePort(ctx, id)
117 assert.Nil(t, response)
118 st, _ := status.FromError(err)
119 assert.Equal(t, "UnImplemented", st.Message())
120}
121
122func TestListLogicalDevicePorts(t *testing.T) {
123 id := &voltha.ID{Id: "listLogicalDevicePorts"}
124 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
125 response, err := stub.ListLogicalDevicePorts(ctx, id)
126 assert.Nil(t, response)
127 st, _ := status.FromError(err)
128 assert.Equal(t, "UnImplemented", st.Message())
129}
130
131func TestListLogicalDeviceFlows(t *testing.T) {
132 id := &voltha.ID{Id: "ListLogicalDeviceFlows"}
133 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
134 response, err := stub.ListLogicalDeviceFlows(ctx, id)
135 assert.Nil(t, response)
136 st, _ := status.FromError(err)
137 assert.Equal(t, "UnImplemented", st.Message())
138}
139
140func TestListLogicalDeviceFlowGroups(t *testing.T) {
141 id := &voltha.ID{Id: "ListLogicalDeviceFlowGroups"}
142 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
143 response, err := stub.ListLogicalDeviceFlowGroups(ctx, id)
144 assert.Nil(t, response)
145 st, _ := status.FromError(err)
146 assert.Equal(t, "UnImplemented", st.Message())
147}
148
149func TestListDevices(t *testing.T) {
150 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
khenaidoob9203542018-09-17 22:56:37 -0400151 response, _ := stub.ListDevices(ctx, &empty.Empty{})
152 assert.Equal(t, len(response.Items), 0)
khenaidoobf6e7bb2018-08-14 22:27:29 -0400153}
154
155func TestListAdapters(t *testing.T) {
156 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
157 response, err := stub.ListAdapters(ctx, &empty.Empty{})
158 assert.Nil(t, response)
159 st, _ := status.FromError(err)
160 assert.Equal(t, "UnImplemented", st.Message())
161}
162
163func TestListLogicalDevices(t *testing.T) {
164 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
khenaidoob9203542018-09-17 22:56:37 -0400165 response, _ := stub.ListLogicalDevices(ctx, &empty.Empty{})
166 assert.Equal(t, len(response.Items), 0)
khenaidoobf6e7bb2018-08-14 22:27:29 -0400167}
168
169func TestListCoreInstances(t *testing.T) {
170 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
171 response, err := stub.ListCoreInstances(ctx, &empty.Empty{})
172 assert.Nil(t, response)
173 st, _ := status.FromError(err)
174 assert.Equal(t, "UnImplemented", st.Message())
175}
176
177func TestCreateDevice(t *testing.T) {
178 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
179 device := &voltha.Device{Id: "newdevice"}
180 response, err := stub.CreateDevice(ctx, device)
181 log.Infow("response", log.Fields{"res": response, "error": err})
182 assert.Equal(t, &voltha.Device{Id: "newdevice"}, response)
183 assert.Nil(t, err)
184}
185
186func TestEnableDevice(t *testing.T) {
187 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
188 id := &voltha.ID{Id: "enabledevice"}
189 response, err := stub.EnableDevice(ctx, id)
190 log.Infow("response", log.Fields{"res": response, "error": err})
191 assert.Equal(t, &empty.Empty{}, response)
192 assert.Nil(t, err)
193}
194
195func TestDisableDevice(t *testing.T) {
196 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
197 id := &voltha.ID{Id: "DisableDevice"}
198 response, err := stub.DisableDevice(ctx, id)
199 log.Infow("response", log.Fields{"res": response, "error": err})
200 assert.Equal(t, &empty.Empty{}, response)
201 assert.Nil(t, err)
202}
203
204func TestRebootDevice(t *testing.T) {
205 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
206 id := &voltha.ID{Id: "RebootDevice"}
207 response, err := stub.RebootDevice(ctx, id)
208 log.Infow("response", log.Fields{"res": response, "error": err})
209 assert.Equal(t, &empty.Empty{}, response)
210 assert.Nil(t, err)
211}
212
213func TestDeleteDevice(t *testing.T) {
214 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
215 id := &voltha.ID{Id: "DeleteDevice"}
216 response, err := stub.DeleteDevice(ctx, id)
217 log.Infow("response", log.Fields{"res": response, "error": err})
218 assert.Equal(t, &empty.Empty{}, response)
219 assert.Nil(t, err)
220}
221
222func TestEnableLogicalDevicePort(t *testing.T) {
223 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
224 id := &voltha.LogicalPortId{Id: "EnableLogicalDevicePort"}
225 response, err := stub.EnableLogicalDevicePort(ctx, id)
khenaidoob9203542018-09-17 22:56:37 -0400226 if e, ok := status.FromError(err); ok {
227 log.Infow("response", log.Fields{"error": err, "errorcode": e.Code(), "msg": e.Message()})
228 }
khenaidoobf6e7bb2018-08-14 22:27:29 -0400229 log.Infow("response", log.Fields{"res": response, "error": err})
230 assert.Equal(t, &empty.Empty{}, response)
231 assert.Nil(t, err)
232}
233
234func TestDisableLogicalDevicePort(t *testing.T) {
235 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
236 id := &voltha.LogicalPortId{Id: "DisableLogicalDevicePort"}
237 response, err := stub.DisableLogicalDevicePort(ctx, id)
238 log.Infow("response", log.Fields{"res": response, "error": err})
239 assert.Equal(t, &empty.Empty{}, response)
240 assert.Nil(t, err)
241}
242
243func TestUpdateLogicalDeviceFlowGroupTable(t *testing.T) {
244 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
245 flow := &openflow_13.FlowGroupTableUpdate{Id: "UpdateLogicalDeviceFlowGroupTable"}
246 response, err := stub.UpdateLogicalDeviceFlowGroupTable(ctx, flow)
247 log.Infow("response", log.Fields{"res": response, "error": err})
248 assert.Equal(t, &empty.Empty{}, response)
249 assert.Nil(t, err)
250}
251
252func TestGetImageDownloadStatus(t *testing.T) {
253 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
254 img := &voltha.ImageDownload{Id: "GetImageDownloadStatus"}
255 response, err := stub.GetImageDownloadStatus(ctx, img)
256 assert.Nil(t, response)
257 st, _ := status.FromError(err)
258 assert.Equal(t, "UnImplemented", st.Message())
259}
260
261// TODO: complete the remaining tests
262
263func shutdown() {
264 conn.Close()
265}
266
267func TestMain(m *testing.M) {
268 setup()
269 code := m.Run()
270 shutdown()
271 os.Exit(code)
272}