blob: 2c08afba011f964e78709df810046beea0536386 [file] [log] [blame]
Mohamed Abukar34e43832019-11-13 17:57:15 +02001/*
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
20package helm
21
22import (
23 "os"
24 "reflect"
25 "strconv"
26 "testing"
27
28 "gerrit.oran-osc.org/r/ric-plt/appmgr/pkg/appmgr"
29 "gerrit.oran-osc.org/r/ric-plt/appmgr/pkg/models"
30 "gerrit.oran-osc.org/r/ric-plt/appmgr/pkg/util"
31)
32
33var helmStatusOutput = `
34LAST DEPLOYED: Sat Mar 9 06:50:45 2019
35NAMESPACE: default
36STATUS: DEPLOYED
37
38RESOURCES:
39==> v1/Pod(related)
40NAME READY STATUS RESTARTS AGE
41dummy-xapp-8984fc9fd-bkcbp 1/1 Running 0 55m
42dummy-xapp-8984fc9fd-l6xch 1/1 Running 0 55m
43dummy-xapp-8984fc9fd-pp4hg 1/1 Running 0 55m
44
45==> v1/Service
46NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
47dummy-xapp-dummy-xapp-chart ClusterIP 10.102.184.212 <none> 80/TCP 55m
48
49==> v1beta1/Deployment
50NAME READY UP-TO-DATE AVAILABLE AGE
51dummy-xapp 3/3 3 3 55m
52`
53
54var helListOutput = `Next: ""
55Releases:
56- AppVersion: "1.0"
57 Chart: dummy-xapp-chart-0.1.0
58 Name: dummy-xapp
59 Namespace: default
60 Revision: 1
61 Status: DEPLOYED
62 Updated: Mon Mar 11 06:55:05 2019
63- AppVersion: "2.0"
64 Chart: dummy-xapp-chart-0.1.0
65 Name: dummy-xapp2
66 Namespace: default
67 Revision: 1
68 Status: DEPLOYED
69 Updated: Mon Mar 11 06:55:05 2019
70- AppVersion: "1.0"
71 Chart: appmgr-0.0.1
72 Name: appmgr
73 Namespace: default
74 Revision: 1
75 Status: DEPLOYED
76 Updated: Sun Mar 24 07:17:00 2019`
77
78// Test cases
79func TestMain(m *testing.M) {
80 appmgr.Init()
81 appmgr.Logger.SetLevel(0)
82
83 code := m.Run()
84 os.Exit(code)
85}
86
87func TestHelmStatus(t *testing.T) {
Mohamed Abukar34e43832019-11-13 17:57:15 +020088 util.KubectlExec = func(args string) (out []byte, err error) {
89 return []byte("10.102.184.212"), nil
90 }
91 xapp, err := NewHelm().ParseStatus("dummy-xapp", helmStatusOutput)
92 if err != nil {
93 t.Errorf("Helm install failed: %v", err)
94 }
95 x := getXappData()
96 xapp.Version = "1.0"
97
98 if *x.Name != *xapp.Name || x.Status != xapp.Status || x.Version != xapp.Version {
99 t.Errorf("\n%v \n%v", *xapp.Name, *x.Name)
100 }
101
102 if *x.Instances[0].Name != *xapp.Instances[0].Name || x.Instances[0].Status != xapp.Instances[0].Status {
103 t.Errorf("\n1:%v 2:%v", *x.Instances[0].Name, *xapp.Instances[0].Name)
104 }
105
106 if x.Instances[0].IP != xapp.Instances[0].IP || x.Instances[0].Port != xapp.Instances[0].Port {
107 t.Errorf("\n1:%v 2:%v", x.Instances[0].IP, xapp.Instances[0].IP)
108 }
109}
110
111func TestHelmLists(t *testing.T) {
112 names, err := NewHelm().GetNames(helListOutput)
113 if err != nil {
114 t.Errorf("Helm status failed: %v", err)
115 }
116
117 if !reflect.DeepEqual(names, []string{"dummy-xapp", "dummy-xapp2"}) {
118 t.Errorf("Helm status failed: %v", err)
119 }
120}
121
122func TestAddTillerEnv(t *testing.T) {
123 if NewHelm().AddTillerEnv() != nil {
124 t.Errorf("TestAddTillerEnv failed!")
125 }
126}
127
128func TestGetInstallArgs(t *testing.T) {
129 name := "dummy-xapp"
130 x := models.XappDescriptor{XappName: &name, Namespace: "ricxapp"}
131
132 expectedArgs := "install helm-repo/dummy-xapp --namespace=ricxapp --name=dummy-xapp"
133 if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
134 t.Errorf("TestGetInstallArgs failed: expected %v, got %v", expectedArgs, args)
135 }
136
137 x.HelmVersion = "1.2.3"
138 expectedArgs = "install helm-repo/dummy-xapp --namespace=ricxapp --version=1.2.3 --name=dummy-xapp"
139 if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
140 t.Errorf("TestGetInstallArgs failed: expected %v, got %v", expectedArgs, args)
141 }
142
143 x.ReleaseName = "ueec-xapp"
144 expectedArgs = "install helm-repo/dummy-xapp --namespace=ricxapp --version=1.2.3 --name=ueec-xapp"
145 if args := NewHelm().GetInstallArgs(x, false); args != expectedArgs {
146 t.Errorf("TestGetInstallArgs failed: expected %v, got %v", expectedArgs, args)
147 }
148}
149
150func getXappData() (x models.Xapp) {
151 //name1 := "dummy-xapp-8984fc9fd-l6xch"
152 //name2 := "dummy-xapp-8984fc9fd-pp4hg"
153 x = generateXapp("dummy-xapp", "deployed", "1.0", "dummy-xapp-8984fc9fd-bkcbp", "running", "service-ricxapp-dummy-xapp-rmr.ricxapp", "4560")
154 //x.Instances = append(x.Instances, x.Instances[0])
155 //x.Instances = append(x.Instances, x.Instances[0])
156 //x.Instances[1].Name = &name1
157 //x.Instances[2].Name = &name2
158
159 return x
160}
161
162func generateXapp(name, status, ver, iname, istatus, ip, port string) (x models.Xapp) {
163 x.Name = &name
164 x.Status = status
165 x.Version = ver
166 p, _ := strconv.Atoi(port)
Mohamed Abukare71a5a52019-12-05 08:26:30 +0200167 var msgs appmgr.RtmData
Mohamed Abukar34e43832019-11-13 17:57:15 +0200168
169 instance := &models.XappInstance{
170 Name: &iname,
171 Status: istatus,
172 IP: ip,
173 Port: int64(p),
174 TxMessages: msgs.TxMessages,
175 RxMessages: msgs.RxMessages,
176 }
177 x.Instances = append(x.Instances, instance)
178
179 return
180}