cec5395e0ac29baec3ddc82f6f70ae0081514dbc
[multicloud/k8s.git] / src / k8splugin / csar / parser_test.go
1 /*
2 Copyright 2018 Intel Corporation.
3 Licensed under the Apache License, Version 2.0 (the "License");
4 you may not use this file except in compliance with the License.
5 You may obtain a copy of the License at
6     http://www.apache.org/licenses/LICENSE-2.0
7 Unless required by applicable law or agreed to in writing, software
8 distributed under the License is distributed on an "AS IS" BASIS,
9 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10 See the License for the specific language governing permissions and
11 limitations under the License.
12 */
13
14 package csar
15
16 import (
17         "io/ioutil"
18         "k8s.io/client-go/kubernetes"
19         "log"
20         "os"
21         "plugin"
22         "testing"
23
24         pkgerrors "github.com/pkg/errors"
25         "gopkg.in/yaml.v2"
26
27         "k8splugin/krd"
28 )
29
30 func LoadMockPlugins(krdLoadedPlugins *map[string]*plugin.Plugin) error {
31         if _, err := os.Stat("../mock_files/mock_plugins/mockplugin.so"); os.IsNotExist(err) {
32                 return pkgerrors.New("mockplugin.so does not exist. Please compile mockplugin.go to generate")
33         }
34
35         mockPlugin, err := plugin.Open("../mock_files/mock_plugins/mockplugin.so")
36         if err != nil {
37                 return pkgerrors.Cause(err)
38         }
39
40         (*krdLoadedPlugins)["namespace"] = mockPlugin
41         (*krdLoadedPlugins)["deployment"] = mockPlugin
42         (*krdLoadedPlugins)["service"] = mockPlugin
43
44         return nil
45 }
46
47 func TestCreateVNF(t *testing.T) {
48         oldkrdPluginData := krd.LoadedPlugins
49         oldReadMetadataFile := ReadMetadataFile
50
51         defer func() {
52                 krd.LoadedPlugins = oldkrdPluginData
53                 ReadMetadataFile = oldReadMetadataFile
54         }()
55
56         err := LoadMockPlugins(&krd.LoadedPlugins)
57         if err != nil {
58                 t.Fatalf("TestCreateVNF returned an error (%s)", err)
59         }
60
61         ReadMetadataFile = func(yamlFilePath string) (MetadataFile, error) {
62                 var seqFile MetadataFile
63
64                 if _, err := os.Stat(yamlFilePath); err == nil {
65                         rawBytes, err := ioutil.ReadFile("../mock_files/mock_yamls/metadata.yaml")
66                         if err != nil {
67                                 return seqFile, pkgerrors.Wrap(err, "Metadata YAML file read error")
68                         }
69
70                         err = yaml.Unmarshal(rawBytes, &seqFile)
71                         if err != nil {
72                                 return seqFile, pkgerrors.Wrap(err, "Metadata YAML file unmarshall error")
73                         }
74                 }
75
76                 return seqFile, nil
77         }
78
79         kubeclient := kubernetes.Clientset{}
80
81         t.Run("Successfully create VNF", func(t *testing.T) {
82                 externaluuid, data, err := CreateVNF("uuid", "cloudregion1", "test", &kubeclient)
83                 if err != nil {
84                         t.Fatalf("TestCreateVNF returned an error (%s)", err)
85                 }
86
87                 log.Println(externaluuid)
88
89                 if data == nil {
90                         t.Fatalf("TestCreateVNF returned empty data (%s)", data)
91                 }
92         })
93
94 }
95
96 func TestDeleteVNF(t *testing.T) {
97         oldkrdPluginData := krd.LoadedPlugins
98
99         defer func() {
100                 krd.LoadedPlugins = oldkrdPluginData
101         }()
102
103         err := LoadMockPlugins(&krd.LoadedPlugins)
104         if err != nil {
105                 t.Fatalf("TestCreateVNF returned an error (%s)", err)
106         }
107
108         kubeclient := kubernetes.Clientset{}
109
110         t.Run("Successfully delete VNF", func(t *testing.T) {
111                 data := map[string][]string{
112                         "deployment": []string{"cloud1-default-uuid-sisedeploy"},
113                         "service":    []string{"cloud1-default-uuid-sisesvc"},
114                 }
115
116                 err := DestroyVNF(data, "test", &kubeclient)
117                 if err != nil {
118                         t.Fatalf("TestCreateVNF returned an error (%s)", err)
119                 }
120         })
121 }
122
123 func TestReadMetadataFile(t *testing.T) {
124         t.Run("Successfully read Metadata YAML file", func(t *testing.T) {
125                 _, err := ReadMetadataFile("../mock_files//mock_yamls/metadata.yaml")
126                 if err != nil {
127                         t.Fatalf("TestReadMetadataFile returned an error (%s)", err)
128                 }
129         })
130 }