Improve ueb-listener test coverage
[ccsdk/sli/northbound.git] / ueb-listener / src / test / java / org / onap / ccsdk / sli / northbound / uebclient / TestSdncUebCallback.java
1 package org.onap.ccsdk.sli.northbound.uebclient;
2
3 import static org.junit.Assert.assertTrue;
4 import static org.mockito.Mockito.*;
5
6 import java.io.File;
7 import java.io.InputStream;
8 import java.net.URL;
9 import java.nio.file.DirectoryStream;
10 import java.nio.file.Files;
11 import java.nio.file.Path;
12 import java.nio.file.StandardCopyOption;
13 import java.util.ArrayList;
14 import java.util.List;
15 import java.util.Properties;
16
17 import org.junit.After;
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.onap.ccsdk.sli.core.dblib.DBResourceManager;
21 import org.onap.sdc.api.IDistributionClient;
22 import org.onap.sdc.api.notification.IArtifactInfo;
23 import org.onap.sdc.api.notification.INotificationData;
24 import org.onap.sdc.api.notification.IResourceInstance;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
27
28 import ch.vorburger.mariadb4j.DB;
29 import ch.vorburger.mariadb4j.DBConfigurationBuilder;
30
31 public class TestSdncUebCallback {
32
33
34         private static final String CRTBL_SERVICE_MODEL = "CREATE TABLE `SERVICE_MODEL` (\n" +
35                         "  `service_uuid` varchar(255) NOT NULL,\n" +
36                         "  `model_yaml` longblob,\n" +
37                         "  `invariant_uuid` varchar(255) DEFAULT NULL,\n" +
38                         "  `version` varchar(255) DEFAULT NULL,\n" +
39                         "  `name` varchar(255) DEFAULT NULL,\n" +
40                         "  `description` varchar(1024) DEFAULT NULL,\n" +
41                         "  `type` varchar(255) DEFAULT NULL,\n" +
42                         "  `category` varchar(255) DEFAULT NULL,\n" +
43                         "  `ecomp_naming` char(1) DEFAULT NULL,\n" +
44                         "  `service_instance_name_prefix` varchar(255) DEFAULT NULL,\n" +
45                         "  `filename` varchar(100) DEFAULT NULL,\n" +
46                         "  `naming_policy` varchar(255) DEFAULT NULL,\n" +
47                         "  PRIMARY KEY (`service_uuid`)\n" +
48                         ") ";
49
50         private static final String CRTBL_NETWORK_MODEL = "CREATE TABLE `NETWORK_MODEL` (\n" +
51                         "  `customization_uuid` varchar(255) NOT NULL,\n" +
52                         "  `service_uuid` varchar(255) NOT NULL,\n" +
53                         "  `model_yaml` longblob,\n" +
54                         "  `invariant_uuid` varchar(255) DEFAULT NULL,\n" +
55                         "  `uuid` varchar(255) DEFAULT NULL,\n" +
56                         "  `network_type` varchar(255) DEFAULT NULL,\n" +
57                         "  `network_role` varchar(255) DEFAULT NULL,\n" +
58                         "  `network_technology` varchar(255) DEFAULT NULL,\n" +
59                         "  `network_scope` varchar(255) DEFAULT NULL,\n" +
60                         "  `naming_policy` varchar(255) DEFAULT NULL,\n" +
61                         "  `ecomp_generated_naming` char(1) DEFAULT NULL,\n" +
62                         "  `is_shared_network` char(1) DEFAULT NULL,\n" +
63                         "  `is_external_network` char(1) DEFAULT NULL,\n" +
64                         "  `is_provider_network` char(1) DEFAULT NULL,\n" +
65                         "  `physical_network_name` varchar(255) DEFAULT NULL,\n" +
66                         "  `is_bound_to_vpn` char(1) DEFAULT NULL,\n" +
67                         "  `vpn_binding` varchar(255) DEFAULT NULL,\n" +
68                         "  `use_ipv4` char(1) DEFAULT NULL,\n" +
69                         "  `ipv4_dhcp_enabled` char(1) DEFAULT NULL,\n" +
70                         "  `ipv4_ip_version` char(1) DEFAULT NULL,\n" +
71                         "  `ipv4_cidr_mask` varchar(255) DEFAULT NULL,\n" +
72                         "  `eipam_v4_address_plan` varchar(255) DEFAULT NULL,\n" +
73                         "  `use_ipv6` char(1) DEFAULT NULL,\n" +
74                         "  `ipv6_dhcp_enabled` char(1) DEFAULT NULL,\n" +
75                         "  `ipv6_ip_version` char(1) DEFAULT NULL,\n" +
76                         "  `ipv6_cidr_mask` varchar(255) DEFAULT NULL,\n" +
77                         "  `eipam_v6_address_plan` varchar(255) DEFAULT NULL,\n" +
78                         "  `version` varchar(255) DEFAULT NULL,\n" +
79                         "  PRIMARY KEY (`customization_uuid`),\n" +
80                         "  KEY `FK_NETWORK_MODEL` (`service_uuid`),\n" +
81                         "  CONSTRAINT `FK_NETWORK_MODEL` FOREIGN KEY (`service_uuid`) REFERENCES `SERVICE_MODEL` (`service_uuid`) ON DELETE NO ACTION ON UPDATE NO ACTION\n" +
82                         ")";
83
84         private static final String CRTBL_ALLOTTED_RESOURCE_MODEL = "CREATE TABLE `ALLOTTED_RESOURCE_MODEL` (\n" +
85                         "  `customization_uuid` varchar(255) NOT NULL,\n" +
86                         "  `model_yaml` longblob,\n" +
87                         "  `invariant_uuid` varchar(255) DEFAULT NULL,\n" +
88                         "  `uuid` varchar(255) DEFAULT NULL,\n" +
89                         "  `version` varchar(255) DEFAULT NULL,\n" +
90                         "  `naming_policy` varchar(255) DEFAULT NULL,\n" +
91                         "  `ecomp_generated_naming` char(1) DEFAULT NULL,\n" +
92                         "  `depending_service` varchar(255) DEFAULT NULL,\n" +
93                         "  `role` varchar(255) DEFAULT NULL,\n" +
94                         "  `type` varchar(255) DEFAULT NULL,\n" +
95                         "  `service_dependency` varchar(255) DEFAULT NULL,\n" +
96                         "  `allotted_resource_type` varchar(255) DEFAULT NULL,\n" +
97                         "  PRIMARY KEY (`customization_uuid`)\n" +
98                         ") ";
99
100         private static final String CRTBL_VFC_MODEL = "CREATE TABLE `VFC_MODEL` (\n" +
101                         "  `customization_uuid` varchar(255) NOT NULL,\n" +
102                         "  `model_yaml` longblob,\n" +
103                         "  `invariant_uuid` varchar(255) DEFAULT NULL,\n" +
104                         "  `uuid` varchar(255) DEFAULT NULL,\n" +
105                         "  `version` varchar(255) DEFAULT NULL,\n" +
106                         "  `naming_policy` varchar(255) DEFAULT NULL,\n" +
107                         "  `ecomp_generated_naming` char(1) DEFAULT NULL,\n" +
108                         "  `nfc_function` varchar(255) DEFAULT NULL,\n" +
109                         "  `nfc_naming_code` varchar(255) DEFAULT NULL,\n" +
110                         "  `vm_type` varchar(255) DEFAULT NULL,\n" +
111                         "  `vm_type_tag` varchar(255) DEFAULT NULL,\n" +
112                         "  `vm_image_name` varchar(255) DEFAULT NULL,\n" +
113                         "  `vm_flavor_name` varchar(255) DEFAULT NULL,\n" +
114                         "  `high_availability` varchar(255) DEFAULT NULL,\n" +
115                         "  `nfc_naming` varchar(255) DEFAULT NULL,\n" +
116                         "  `min_instances` int(11) DEFAULT NULL,\n" +
117                         "  `max_instances` int(11) DEFAULT NULL,\n" +
118                         "  PRIMARY KEY (`customization_uuid`)\n" +
119                         ") ";
120
121         private static final String CRTBL_VF_MODEL = "CREATE TABLE `VF_MODEL` (\n" +
122                         "  `customization_uuid` varchar(255) NOT NULL,\n" +
123                         "  `model_yaml` longblob,\n" +
124                         "  `invariant_uuid` varchar(255) DEFAULT NULL,\n" +
125                         "  `uuid` varchar(255) DEFAULT NULL,\n" +
126                         "  `version` varchar(255) DEFAULT NULL,\n" +
127                         "  `name` varchar(255) DEFAULT NULL,\n" +
128                         "  `naming_policy` varchar(255) DEFAULT NULL,\n" +
129                         "  `ecomp_generated_naming` char(1) DEFAULT NULL,\n" +
130                         "  `avail_zone_max_count` int(11) DEFAULT NULL,\n" +
131                         "  `nf_function` varchar(255) DEFAULT NULL,\n" +
132                         "  `nf_code` varchar(255) DEFAULT NULL,\n" +
133                         "  `nf_type` varchar(255) DEFAULT NULL,\n" +
134                         "  `nf_role` varchar(255) DEFAULT NULL,\n" +
135                         "  `vendor` varchar(255) DEFAULT NULL,\n" +
136                         "  `vendor_version` varchar(255) DEFAULT NULL,\n" +
137                         "  PRIMARY KEY (`customization_uuid`)\n" +
138                         ")";
139
140         private static final String CRTBL_VF_MODULE_MODEL = "CREATE TABLE `VF_MODULE_MODEL` (\n" +
141                         "  `customization_uuid` varchar(255) NOT NULL,\n" +
142                         "  `model_yaml` longblob,\n" +
143                         "  `invariant_uuid` varchar(255) DEFAULT NULL,\n" +
144                         "  `uuid` varchar(255) DEFAULT NULL,\n" +
145                         "  `version` varchar(255) DEFAULT NULL,\n" +
146                         "  `vf_module_type` varchar(255) DEFAULT NULL,\n" +
147                         "  `availability_zone_count` int(11) DEFAULT NULL,\n" +
148                         "  `ecomp_generated_vm_assignments` char(1) DEFAULT NULL,\n" +
149                         "  PRIMARY KEY (`customization_uuid`)\n" +
150                         ")";
151
152          private static final Logger LOG = LoggerFactory
153                     .getLogger(TestSdncUebCallback.class);
154         SdncUebConfiguration config;
155         DBResourceManager dblibSvc;
156         DB db;
157         List<IArtifactInfo > processLevelArtifactList;
158         List<IArtifactInfo > serviceLevelArtifactList;
159         ArrayList<IResourceInstance> resourceList;
160         IArtifactInfo mockProcessArtifact1;
161         IArtifactInfo mockProcessArtifact2;
162         IArtifactInfo mockProcessArtifact3;
163         IArtifactInfo mockServiceArtifact1;
164         IResourceInstance resource;
165         
166
167         @Before
168         public void setUp() throws Exception {
169                 config = new SdncUebConfiguration("src/test/resources");
170
171
172                 URL propUrl = getClass().getResource("/dblib.properties");
173
174                 InputStream propStr = getClass().getResourceAsStream("/dblib.properties");
175
176                 Properties props = new Properties();
177
178                 props.load(propStr);
179
180
181                 // Start MariaDB4j database
182                 DBConfigurationBuilder config = DBConfigurationBuilder.newBuilder();
183                 config.setPort(0); // 0 => autom. detect free port
184                 db = DB.newEmbeddedDB(config.build());
185                 db.start();
186
187
188                 // Override jdbc URL and database name
189                 props.setProperty("org.onap.ccsdk.sli.jdbc.database", "test");
190                 props.setProperty("org.onap.ccsdk.sli.jdbc.url", config.getURL("test"));
191
192
193                 // Create dblib connection
194                 dblibSvc = new DBResourceManager(props);
195
196                 // Create TOSCA tables
197                 dblibSvc.writeData(CRTBL_SERVICE_MODEL, null, null);
198                 dblibSvc.writeData(CRTBL_NETWORK_MODEL, null, null);
199                 dblibSvc.writeData(CRTBL_VFC_MODEL, null, null);
200                 dblibSvc.writeData(CRTBL_VF_MODEL, null, null);
201                 dblibSvc.writeData(CRTBL_VF_MODULE_MODEL, null, null);
202                 dblibSvc.writeData(CRTBL_ALLOTTED_RESOURCE_MODEL, null, null);
203                 
204                 processLevelArtifactList = new ArrayList<>();
205                 serviceLevelArtifactList = new ArrayList<>();
206                 resourceList = new ArrayList<>();
207
208                 
209                 mockProcessArtifact1 = mock(IArtifactInfo.class);
210                 when(mockProcessArtifact1.getArtifactName()).thenReturn("mockProcessArtifact1");
211                 when(mockProcessArtifact1.getArtifactType()).thenReturn("HEAT");
212                 when(mockProcessArtifact1.getArtifactURL()).thenReturn("https://asdc.sdc.com/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml");
213                 when(mockProcessArtifact1.getArtifactChecksum()).thenReturn("123tfg123 1234ftg");
214                 when(mockProcessArtifact1.getArtifactTimeout()).thenReturn(110);
215                 
216                 mockProcessArtifact2 = mock(IArtifactInfo.class);
217                 when(mockProcessArtifact2.getArtifactName()).thenReturn("mockProcessArtifact2");
218                 when(mockProcessArtifact2.getArtifactType()).thenReturn("DG_XML");
219                 when(mockProcessArtifact2.getArtifactURL()).thenReturn("https://asdc.sdc.com/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml");
220                 when(mockProcessArtifact2.getArtifactChecksum()).thenReturn("456jhgt 1234ftg");
221                 when(mockProcessArtifact2.getArtifactTimeout()).thenReturn(110);
222                 
223                 mockProcessArtifact3 = mock(IArtifactInfo.class);
224                 when(mockProcessArtifact3.getArtifactName()).thenReturn("mockProcessArtifact3");
225                 when(mockProcessArtifact3.getArtifactType()).thenReturn("HEAT");
226                 when(mockProcessArtifact3.getArtifactURL()).thenReturn("https://asdc.sdc.com/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml");
227                 when(mockProcessArtifact3.getArtifactChecksum()).thenReturn("123tfg123 543gtd");
228                 when(mockProcessArtifact3.getArtifactTimeout()).thenReturn(110);
229                 
230                 
231                 mockServiceArtifact1 = mock(IArtifactInfo.class);
232                 when(mockServiceArtifact1.getArtifactName()).thenReturn("mockProcessArtifact4");
233                 when(mockServiceArtifact1.getArtifactType()).thenReturn("HEAT");
234                 when(mockServiceArtifact1.getArtifactURL()).thenReturn("https://asdc.sdc.com/v1/catalog/services/srv1/2.0/resources/aaa/1.0/artifacts/aaa.yml");
235                 when(mockServiceArtifact1.getArtifactChecksum()).thenReturn("123t3455 543gtd");
236                 when(mockServiceArtifact1.getArtifactTimeout()).thenReturn(110);
237                 
238                 resource = mock(IResourceInstance.class);
239         }
240
241         @After
242         public void tearDown() throws Exception {
243                 // Move anything in archive back to incoming
244         String curFileName = "";
245
246         Path incomingPath = new File(config.getIncomingDir()).toPath();
247         File archiveDir = new File(config.getArchiveDir());
248         try (DirectoryStream<Path> stream = Files.newDirectoryStream(archiveDir.toPath())) {
249             for (Path file: stream) {
250                         Files.move(file, incomingPath.resolve(file.getFileName()), StandardCopyOption.REPLACE_EXISTING);
251             }
252         } catch (Exception x) {
253             // IOException can never be thrown by the iteration.
254             // In this snippet, it can only be thrown by newDirectoryStream.
255             LOG.warn("Cannot replace spool file {}", curFileName, x);
256         }
257
258         db.stop();
259
260         }
261
262         @Test
263         public void test() {
264
265                 IDistributionClient iDistClient = mock(IDistributionClient.class);
266                 SdncUebCallback cb = new SdncUebCallback(iDistClient, config);
267                 cb.setJdbcDataSource(dblibSvc);
268
269                 INotificationData iData = mock(INotificationData.class);
270                 /*IArtifactInfo iArtifactInfo = mock(IArtifactInfo.class);
271                 when(iArtifactInfo.getArtifactName()).thenReturn("testArtifact1");
272                 when(iArtifactInfo.getArtifactType()).thenReturn("TOSCA_CSAR");
273                 List artifactInfoList = new ArrayList();
274                 artifactInfoList.add(iArtifactInfo);*/
275                 
276                 when(iData.getServiceName()).thenReturn("testServiceName");
277                 //when(iData.getServiceArtifacts()).thenReturn(artifactInfoList);
278                 cb.deployDownloadedFiles(null, null, null);
279                 cb.activateCallback(iData);
280
281         }
282         
283         
284         
285         @Test
286         public void testServiceAndProcessArtifactsactivateCallback() {
287
288                 try {
289                 processLevelArtifactList.add(mockProcessArtifact1);
290                 processLevelArtifactList.add(mockProcessArtifact2);
291                 processLevelArtifactList.add(mockProcessArtifact3);
292                 
293                 resourceList.add(resource);
294                 serviceLevelArtifactList.add(mockServiceArtifact1);
295                 when(resource.getArtifacts()).thenReturn(serviceLevelArtifactList);
296                 when(resource.getResourceName()).thenReturn("Resource_service_name");
297
298
299                 IDistributionClient iDistClient1 = mock(IDistributionClient.class);
300                 INotificationData mockData = mock(INotificationData.class);
301                 when(mockData.getResources()).thenReturn(resourceList);
302                 when(mockData.getServiceName()).thenReturn("Test_service_name");
303                 when(mockData.getServiceArtifacts()).thenReturn(processLevelArtifactList);
304                 
305                 /*IArtifactInfo iArtifactInfo = mock(IArtifactInfo.class);
306                 when(iArtifactInfo.getArtifactName()).thenReturn("testArtifact1");
307                 when(iArtifactInfo.getArtifactType()).thenReturn("TOSCA_CSAR");
308                 List artifactInfoList = new ArrayList();
309                 artifactInfoList.add(iArtifactInfo);
310                 
311                 //when(mockData.getServiceName()).thenReturn("testServiceName");
312                 when(mockData.getServiceArtifacts()).thenReturn(artifactInfoList);*/
313
314                 
315                 SdncUebCallback cb1 = new SdncUebCallback(iDistClient1, config);
316                 cb1.activateCallback(mockData);
317                 assertTrue(true);
318                 } catch (Exception e) {
319                         assertTrue(false);
320                 }
321         }
322
323 }