blob: 6a32ee5bfd061bc1fb02d5962cd541434913d694 [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/*
khenaidoo2c6f1672018-09-20 23:14:41 -040039Prerequite: These tests require the rw_core to run prior to executing these test cases.
khenaidoob9203542018-09-17 22:56:37 -040040*/
41
khenaidoo2c6f1672018-09-20 23:14:41 -040042
khenaidoobf6e7bb2018-08-14 22:27:29 -040043func setup() {
44 var err error
khenaidoob9203542018-09-17 22:56:37 -040045
46 if err = log.AddPackage(log.JSON, log.WarnLevel, log.Fields{"instanceId": "testing"}); err != nil {
khenaidoobf6e7bb2018-08-14 22:27:29 -040047 log.With(log.Fields{"error": err}).Fatal("Cannot setup logging")
48 }
49 conn, err = grpc.Dial("localhost:50057", grpc.WithInsecure())
50 if err != nil {
51 log.Fatalf("did not connect: %s", err)
52 }
53
54 stub = voltha.NewVolthaServiceClient(conn)
55 testMode = common.TestModeKeys_api_test.String()
56}
57
58func TestGetDevice(t *testing.T) {
59 var id common.ID
60 id.Id = "anyid"
61 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
62 response, err := stub.GetDevice(ctx, &id)
63 assert.Nil(t, response)
64 st, _ := status.FromError(err)
khenaidoob9203542018-09-17 22:56:37 -040065 assert.Equal(t, id.Id, st.Message())
66 assert.Equal(t, codes.NotFound, st.Code())
khenaidoobf6e7bb2018-08-14 22:27:29 -040067}
68
69func TestUpdateLogLevelError(t *testing.T) {
70 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
khenaidoob9203542018-09-17 22:56:37 -040071 level := voltha.Logging{PackageName: "github.com/opencord/voltha-go/rw_core/core", Level: common.LogLevel_ERROR}
khenaidoobf6e7bb2018-08-14 22:27:29 -040072 response, err := stub.UpdateLogLevel(ctx, &level)
73 log.Infow("response", log.Fields{"res": response, "error": err})
74 assert.Equal(t, &empty.Empty{}, response)
75 assert.Nil(t, err)
76}
77
78func TestGetVoltha(t *testing.T) {
79 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
80 response, err := stub.GetVoltha(ctx, &empty.Empty{})
81 assert.Nil(t, response)
82 st, _ := status.FromError(err)
83 assert.Equal(t, "UnImplemented", st.Message())
84}
85
86func TestUpdateLogLevelDebug(t *testing.T) {
87 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
khenaidoob9203542018-09-17 22:56:37 -040088 level := voltha.Logging{PackageName: "github.com/opencord/voltha-go/rw_core/core", Level: common.LogLevel_DEBUG}
khenaidoobf6e7bb2018-08-14 22:27:29 -040089 response, err := stub.UpdateLogLevel(ctx, &level)
90 log.Infow("response", log.Fields{"res": response, "error": err})
91 assert.Equal(t, &empty.Empty{}, response)
92 assert.Nil(t, err)
93}
94
khenaidoobf6e7bb2018-08-14 22:27:29 -040095func TestGetCoreInstance(t *testing.T) {
96 id := &voltha.ID{Id: "getCoreInstance"}
97 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
98 response, err := stub.GetCoreInstance(ctx, id)
99 assert.Nil(t, response)
100 st, _ := status.FromError(err)
101 assert.Equal(t, "UnImplemented", st.Message())
102}
103
104func TestGetLogicalDevice(t *testing.T) {
105 id := &voltha.ID{Id: "getLogicalDevice"}
106 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
107 response, err := stub.GetLogicalDevice(ctx, id)
108 assert.Nil(t, response)
109 st, _ := status.FromError(err)
khenaidoob9203542018-09-17 22:56:37 -0400110 assert.Equal(t, id.Id, st.Message())
111 assert.Equal(t, codes.NotFound, st.Code())
khenaidoobf6e7bb2018-08-14 22:27:29 -0400112}
113
114func TestGetLogicalDevicePort(t *testing.T) {
115 id := &voltha.LogicalPortId{Id: "GetLogicalDevicePort"}
116 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
117 response, err := stub.GetLogicalDevicePort(ctx, id)
118 assert.Nil(t, response)
119 st, _ := status.FromError(err)
120 assert.Equal(t, "UnImplemented", st.Message())
121}
122
123func TestListLogicalDevicePorts(t *testing.T) {
124 id := &voltha.ID{Id: "listLogicalDevicePorts"}
125 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
126 response, err := stub.ListLogicalDevicePorts(ctx, id)
127 assert.Nil(t, response)
128 st, _ := status.FromError(err)
129 assert.Equal(t, "UnImplemented", st.Message())
130}
131
132func TestListLogicalDeviceFlows(t *testing.T) {
133 id := &voltha.ID{Id: "ListLogicalDeviceFlows"}
134 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
135 response, err := stub.ListLogicalDeviceFlows(ctx, id)
136 assert.Nil(t, response)
137 st, _ := status.FromError(err)
138 assert.Equal(t, "UnImplemented", st.Message())
139}
140
141func TestListLogicalDeviceFlowGroups(t *testing.T) {
142 id := &voltha.ID{Id: "ListLogicalDeviceFlowGroups"}
143 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
144 response, err := stub.ListLogicalDeviceFlowGroups(ctx, id)
145 assert.Nil(t, response)
146 st, _ := status.FromError(err)
147 assert.Equal(t, "UnImplemented", st.Message())
148}
149
150func TestListDevices(t *testing.T) {
151 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
khenaidoob9203542018-09-17 22:56:37 -0400152 response, _ := stub.ListDevices(ctx, &empty.Empty{})
153 assert.Equal(t, len(response.Items), 0)
khenaidoobf6e7bb2018-08-14 22:27:29 -0400154}
155
156func TestListAdapters(t *testing.T) {
157 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
158 response, err := stub.ListAdapters(ctx, &empty.Empty{})
159 assert.Nil(t, response)
160 st, _ := status.FromError(err)
161 assert.Equal(t, "UnImplemented", st.Message())
162}
163
164func TestListLogicalDevices(t *testing.T) {
165 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
khenaidoob9203542018-09-17 22:56:37 -0400166 response, _ := stub.ListLogicalDevices(ctx, &empty.Empty{})
167 assert.Equal(t, len(response.Items), 0)
khenaidoobf6e7bb2018-08-14 22:27:29 -0400168}
169
170func TestListCoreInstances(t *testing.T) {
171 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
172 response, err := stub.ListCoreInstances(ctx, &empty.Empty{})
173 assert.Nil(t, response)
174 st, _ := status.FromError(err)
175 assert.Equal(t, "UnImplemented", st.Message())
176}
177
178func TestCreateDevice(t *testing.T) {
179 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
180 device := &voltha.Device{Id: "newdevice"}
181 response, err := stub.CreateDevice(ctx, device)
182 log.Infow("response", log.Fields{"res": response, "error": err})
183 assert.Equal(t, &voltha.Device{Id: "newdevice"}, response)
184 assert.Nil(t, err)
185}
186
187func TestEnableDevice(t *testing.T) {
188 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
189 id := &voltha.ID{Id: "enabledevice"}
190 response, err := stub.EnableDevice(ctx, id)
191 log.Infow("response", log.Fields{"res": response, "error": err})
192 assert.Equal(t, &empty.Empty{}, response)
193 assert.Nil(t, err)
194}
195
196func TestDisableDevice(t *testing.T) {
197 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
198 id := &voltha.ID{Id: "DisableDevice"}
199 response, err := stub.DisableDevice(ctx, id)
200 log.Infow("response", log.Fields{"res": response, "error": err})
201 assert.Equal(t, &empty.Empty{}, response)
202 assert.Nil(t, err)
203}
204
205func TestRebootDevice(t *testing.T) {
206 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
207 id := &voltha.ID{Id: "RebootDevice"}
208 response, err := stub.RebootDevice(ctx, id)
209 log.Infow("response", log.Fields{"res": response, "error": err})
210 assert.Equal(t, &empty.Empty{}, response)
211 assert.Nil(t, err)
212}
213
214func TestDeleteDevice(t *testing.T) {
215 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
216 id := &voltha.ID{Id: "DeleteDevice"}
217 response, err := stub.DeleteDevice(ctx, id)
218 log.Infow("response", log.Fields{"res": response, "error": err})
219 assert.Equal(t, &empty.Empty{}, response)
220 assert.Nil(t, err)
221}
222
223func TestEnableLogicalDevicePort(t *testing.T) {
224 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
225 id := &voltha.LogicalPortId{Id: "EnableLogicalDevicePort"}
226 response, err := stub.EnableLogicalDevicePort(ctx, id)
khenaidoob9203542018-09-17 22:56:37 -0400227 if e, ok := status.FromError(err); ok {
228 log.Infow("response", log.Fields{"error": err, "errorcode": e.Code(), "msg": e.Message()})
229 }
khenaidoobf6e7bb2018-08-14 22:27:29 -0400230 log.Infow("response", log.Fields{"res": response, "error": err})
231 assert.Equal(t, &empty.Empty{}, response)
232 assert.Nil(t, err)
233}
234
235func TestDisableLogicalDevicePort(t *testing.T) {
236 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
237 id := &voltha.LogicalPortId{Id: "DisableLogicalDevicePort"}
238 response, err := stub.DisableLogicalDevicePort(ctx, id)
239 log.Infow("response", log.Fields{"res": response, "error": err})
240 assert.Equal(t, &empty.Empty{}, response)
241 assert.Nil(t, err)
242}
243
244func TestUpdateLogicalDeviceFlowGroupTable(t *testing.T) {
245 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
246 flow := &openflow_13.FlowGroupTableUpdate{Id: "UpdateLogicalDeviceFlowGroupTable"}
247 response, err := stub.UpdateLogicalDeviceFlowGroupTable(ctx, flow)
248 log.Infow("response", log.Fields{"res": response, "error": err})
249 assert.Equal(t, &empty.Empty{}, response)
250 assert.Nil(t, err)
251}
252
253func TestGetImageDownloadStatus(t *testing.T) {
254 ctx := metadata.NewOutgoingContext(context.Background(), metadata.Pairs(testMode, "true"))
255 img := &voltha.ImageDownload{Id: "GetImageDownloadStatus"}
256 response, err := stub.GetImageDownloadStatus(ctx, img)
257 assert.Nil(t, response)
258 st, _ := status.FromError(err)
259 assert.Equal(t, "UnImplemented", st.Message())
260}
261
262// TODO: complete the remaining tests
263
264func shutdown() {
265 conn.Close()
266}
267
268func TestMain(m *testing.M) {
269 setup()
270 code := m.Run()
271 shutdown()
272 os.Exit(code)
273}