RIC-208 - KA Decision: ask K8S to restart E2T instance - comment code of kubernetes
[ric-plt/e2mgr.git] / E2Manager / managers / kubernetes_manager_test.go
1 //
2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //      http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)
19 //  platform project (RICP).
20
21 package managers
22 /*
23
24 import (
25         "e2mgr/configuration"
26         "e2mgr/logger"
27         "github.com/stretchr/testify/assert"
28         "k8s.io/api/core/v1"
29         metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
30         "k8s.io/apimachinery/pkg/runtime"
31         "k8s.io/client-go/kubernetes/fake"
32         "testing"
33 )
34
35 type TestStruct struct {
36         description string
37         namespace   string
38         expected    []string
39         objs        []runtime.Object
40 }
41
42 func initKubernetesManagerTest(t *testing.T) *KubernetesManager {
43         logger, err := logger.InitLogger(logger.DebugLevel)
44         if err != nil {
45                 t.Errorf("#... - failed to initialize logger, error: %s", err)
46         }
47         config := &configuration.Configuration{}
48         config.Kubernetes.KubeNamespace = "oran"
49         config.Kubernetes.ConfigPath = "somePath"
50
51         kubernetesManager := NewKubernetesManager(logger, config)
52
53         return kubernetesManager
54 }
55
56 func TestDelete_NoPodName(t *testing.T) {
57         test := TestStruct{
58                 description: "2 namespace, 2 pods in oran",
59                 namespace:   "oran",
60                 objs:        []runtime.Object{pod("oran", "POD_Test_1"), pod("oran", "POD_Test_2"), pod("some-namespace", "POD_Test_1")},
61         }
62
63         kubernetesManager := initKubernetesManagerTest(t)
64
65         t.Run(test.description, func(t *testing.T) {
66                 kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...)
67
68                 err := kubernetesManager.DeletePod("")
69                 assert.NotNil(t, err)
70         })
71 }
72
73 func TestDelete_NoPods(t *testing.T) {
74         test := TestStruct{
75                 description: "no pods",
76                 namespace:   "oran",
77                 expected:    nil,
78                 objs:        nil,
79         }
80
81         kubernetesManager := initKubernetesManagerTest(t)
82
83         t.Run(test.description, func(t *testing.T) {
84                 kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...)
85
86                 err := kubernetesManager.DeletePod("POD_Test")
87                 assert.NotNil(t, err)
88         })
89 }
90
91 func TestDelete_PodExists(t *testing.T) {
92         test := TestStruct{
93                 description: "2 namespace, 2 pods in oran",
94                 namespace:   "oran",
95                 objs:        []runtime.Object{pod("oran", "POD_Test_1"), pod("oran", "POD_Test_2"), pod("some-namespace", "POD_Test_1")},
96         }
97
98         kubernetesManager := initKubernetesManagerTest(t)
99
100         t.Run(test.description, func(t *testing.T) {
101                 kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...)
102
103                 err := kubernetesManager.DeletePod("POD_Test_1")
104                 assert.Nil(t, err)
105         })
106 }
107
108 func TestDelete_NoPodInNamespace(t *testing.T) {
109         test := TestStruct{
110                 description: "2 namespace, 2 pods in oran",
111                 namespace:   "oran",
112                 objs:        []runtime.Object{pod("oran", "POD_Test_1"), pod("oran", "POD_Test_2"), pod("some-namespace", "POD_Test")},
113         }
114
115         kubernetesManager := initKubernetesManagerTest(t)
116
117         t.Run(test.description, func(t *testing.T) {
118                 kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...)
119
120                 err := kubernetesManager.DeletePod("POD_Test")
121                 assert.NotNil(t, err)
122         })
123 }
124
125 func TestDelete_NoNamespace(t *testing.T) {
126         test := TestStruct{
127                 description: "No oran namespace",
128                 namespace:   "oran",
129                 objs:        []runtime.Object{pod("some-namespace", "POD_Test_1"), pod("some-namespace", "POD_Test_2"), pod("some-namespace", "POD_Test")},
130         }
131
132         kubernetesManager := initKubernetesManagerTest(t)
133
134         t.Run(test.description, func(t *testing.T) {
135                 kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...)
136
137                 err := kubernetesManager.DeletePod("POD_Test")
138                 assert.NotNil(t, err)
139         })
140 }
141
142 func pod(namespace, image string) *v1.Pod {
143
144         return &v1.Pod{
145                 ObjectMeta: metaV1.ObjectMeta{
146                         Name:        image,
147                         Namespace:   namespace,
148                         Annotations: map[string]string{},
149                 },
150         }
151 }
152 */