1 package org.onap.ccsdk.sli.northbound.uebclient;
3 import static org.junit.Assert.assertTrue;
4 import static org.mockito.Mockito.*;
7 import java.io.InputStream;
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;
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;
28 import ch.vorburger.mariadb4j.DB;
29 import ch.vorburger.mariadb4j.DBConfigurationBuilder;
31 public class TestSdncUebCallback {
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" +
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" +
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" +
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" +
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" +
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" +
152 private static final Logger LOG = LoggerFactory
153 .getLogger(TestSdncUebCallback.class);
154 SdncUebConfiguration config;
155 DBResourceManager dblibSvc;
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;
168 public void setUp() throws Exception {
169 config = new SdncUebConfiguration("src/test/resources");
172 URL propUrl = getClass().getResource("/dblib.properties");
174 InputStream propStr = getClass().getResourceAsStream("/dblib.properties");
176 Properties props = new Properties();
181 // Start MariaDB4j database
182 DBConfigurationBuilder config = DBConfigurationBuilder.newBuilder();
183 config.setPort(0); // 0 => autom. detect free port
184 db = DB.newEmbeddedDB(config.build());
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"));
193 // Create dblib connection
194 dblibSvc = new DBResourceManager(props);
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);
204 processLevelArtifactList = new ArrayList<>();
205 serviceLevelArtifactList = new ArrayList<>();
206 resourceList = new ArrayList<>();
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);
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);
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);
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);
238 resource = mock(IResourceInstance.class);
242 public void tearDown() throws Exception {
243 // Move anything in archive back to incoming
244 String curFileName = "";
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);
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);
265 IDistributionClient iDistClient = mock(IDistributionClient.class);
266 SdncUebCallback cb = new SdncUebCallback(iDistClient, config);
267 cb.setJdbcDataSource(dblibSvc);
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);*/
276 when(iData.getServiceName()).thenReturn("testServiceName");
277 //when(iData.getServiceArtifacts()).thenReturn(artifactInfoList);
278 cb.deployDownloadedFiles(null, null, null);
279 cb.activateCallback(iData);
286 public void testServiceAndProcessArtifactsactivateCallback() {
289 processLevelArtifactList.add(mockProcessArtifact1);
290 processLevelArtifactList.add(mockProcessArtifact2);
291 processLevelArtifactList.add(mockProcessArtifact3);
293 resourceList.add(resource);
294 serviceLevelArtifactList.add(mockServiceArtifact1);
295 when(resource.getArtifacts()).thenReturn(serviceLevelArtifactList);
296 when(resource.getResourceName()).thenReturn("Resource_service_name");
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);
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);
311 //when(mockData.getServiceName()).thenReturn("testServiceName");
312 when(mockData.getServiceArtifacts()).thenReturn(artifactInfoList);*/
315 SdncUebCallback cb1 = new SdncUebCallback(iDistClient1, config);
316 cb1.activateCallback(mockData);
318 } catch (Exception e) {