2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.vendorsoftwareproduct.dao;
23 import com.amdocs.zusammen.adaptor.inbound.api.types.item.*;
24 import com.amdocs.zusammen.commons.health.data.HealthInfo;
25 import com.amdocs.zusammen.datatypes.Id;
26 import com.amdocs.zusammen.datatypes.SessionContext;
27 import com.amdocs.zusammen.datatypes.item.*;
28 import com.amdocs.zusammen.datatypes.itemversion.ItemVersionRevisions;
29 import com.amdocs.zusammen.datatypes.itemversion.Tag;
30 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
31 import org.onap.sdc.tosca.services.YamlUtil;
32 import org.openecomp.core.utilities.CommonMethods;
33 import org.openecomp.core.utilities.file.FileContentHandler;
34 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
35 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
36 import org.openecomp.sdc.datatypes.model.ElementType;
37 import org.openecomp.sdc.model.impl.zusammen.ServiceModelDaoZusammenImpl;
38 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
39 import org.openecomp.sdc.versioning.dao.types.Version;
40 import org.testng.Assert;
41 import org.testng.annotations.AfterMethod;
42 import org.testng.annotations.BeforeMethod;
43 import org.testng.annotations.Test;
45 import java.io.ByteArrayInputStream;
48 public class ServiceModelDaoFactoryTest {
50 private static final String vspId = CommonMethods.nextUuId();
51 private static final Version version = Version.valueOf("1.0");
52 private static final String baseServiceTemplateName = "baseYaml.yaml";
53 private static String artifact001;
54 private static final String tenant = "dox";
58 SessionContextProviderFactory.getInstance().createInterface().create("test", tenant);
62 public void tearDaown(){
63 SessionContextProviderFactory.getInstance().createInterface().close();
67 public void storeServiceModelTest() {
69 ItemVersion itemVersionmock = new ItemVersion();
70 itemVersionmock.setId(new Id());
72 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
73 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
76 zusammenAdaptor.setItemVersion(itemVersionmock);
77 ToscaServiceModel model = getToscaServiceModel();
78 serviceModelDaoZusammen.storeServiceModel(vspId, version, model);
82 public void getServiceModelTest() {
84 ItemVersion itemVersionmock = new ItemVersion();
85 itemVersionmock.setId(new Id());
87 ElementInfo elementInfo = new ElementInfo();
88 Info info = new Info();
89 info.addProperty("base", "baseElement");
90 elementInfo.setInfo(info);
92 ElementInfo artifactElementInfo = new ElementInfo();
93 artifactElementInfo.setInfo(new Info());
94 artifactElementInfo.getInfo().setName(ElementType.Artifacts.name());
95 ElementInfo templateElementInfo = new ElementInfo();
96 templateElementInfo.setInfo(new Info());
97 templateElementInfo.getInfo().setName(ElementType.Templates.name());
99 ElementInfo serviceModelElementInfo = new ElementInfo();
100 serviceModelElementInfo.setInfo(new Info());
101 serviceModelElementInfo.getInfo().setName(ElementType.ServiceModel.name());
102 ZusammenElement element = new ZusammenElement();
103 ServiceTemplate serviceTemplate = new ServiceTemplate();
104 YamlUtil yamlUtil = new YamlUtil();
105 element.setData(new ByteArrayInputStream(yamlUtil.objectToYaml(serviceTemplate).getBytes()));
107 info.setName("dataFileName");
108 element.setInfo(info);
109 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
110 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
113 zusammenAdaptor.setItemVersion(itemVersionmock);
114 zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(), elementInfo);
115 zusammenAdaptor.addElementInfo("null" + ElementType.Artifacts.name(), artifactElementInfo);
116 zusammenAdaptor.addElementInfo("null" + ElementType.Templates.name(), templateElementInfo);
117 zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(),
118 serviceModelElementInfo);
119 zusammenAdaptor.addElement(element);
121 ToscaServiceModel model =
122 serviceModelDaoZusammen.getServiceModel(vspId, version);
123 Assert.assertNotNull(model);
126 Assert.assertEquals(artifact001,"dataFileName");
130 private static void setArtifact(ToscaServiceModel model) {
132 (String) (model).getArtifactFiles().getFileList().toArray()[0];
135 private ToscaServiceModel getToscaServiceModel() {
137 Map<String, ServiceTemplate> serviceTemplates = getServiceTemplates(baseServiceTemplateName);
138 FileContentHandler artifacts = getArtifacts();
139 return new ToscaServiceModel(artifacts, serviceTemplates, baseServiceTemplateName);
143 private Map<String, ServiceTemplate> getServiceTemplates(String base) {
145 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
147 serviceTemplates.put(base, getServiceTemplate());
148 serviceTemplates.put("SERV1", getServiceTemplate());
149 serviceTemplates.put("SERV2", getServiceTemplate());
150 serviceTemplates.put("SERV3", getServiceTemplate());
151 serviceTemplates.put("SERV4", getServiceTemplate());
153 return serviceTemplates;
156 public FileContentHandler getArtifacts() {
157 Map<String, byte[]> artifacts = new HashMap<>();
158 artifacts.put("art1", "this is art1".getBytes());
159 artifacts.put("art2", ("this is art2 desc:" + CommonMethods.nextUuId()).getBytes());
160 artifacts.put("art3", ("this is art3 desc:" + CommonMethods.nextUuId()).getBytes());
161 artifacts.put("art4", ("this is art4 desc:" + CommonMethods.nextUuId()).getBytes());
163 FileContentHandler fileContentHandler = new FileContentHandler();
164 fileContentHandler.putAll(artifacts);
165 return fileContentHandler;
168 private ServiceTemplate getServiceTemplate() {
169 ServiceTemplate serviceTemplate = new ServiceTemplate();
170 serviceTemplate.setTosca_definitions_version("version 1.0");
171 serviceTemplate.setDescription(CommonMethods.nextUuId());
172 return serviceTemplate;
175 private class ZusammenAdaptorMock implements ZusammenAdaptor {
177 private ItemVersion itemVersion;
178 private Map<String, ElementInfo> elementInfoMap = new HashMap<>();
179 private Collection<Element> elements = new ArrayList<>();
181 private void setItemVersion(ItemVersion itemVersion) {
182 this.itemVersion = itemVersion;
185 private void addElementInfo(String key, ElementInfo elementInfo) {
186 elementInfoMap.put(key, elementInfo);
189 private void addElement(Element element) {
190 elements.add(element);
194 public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
199 public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
204 public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
206 return Optional.empty();
210 public Optional<Element> getElementByName(SessionContext context,
211 ElementContext elementContext,
212 Id parentElementId, String elementName) {
213 return Optional.empty();
217 public Collection<ElementInfo> listElements(SessionContext context,
218 ElementContext elementContext,
219 Id parentElementId) {
224 public Collection<Element> listElementData(SessionContext context,
225 ElementContext elementContext,
226 Id parentElementId) {
231 public Collection<ElementInfo> listElementsByName(SessionContext context,
232 ElementContext elementContext,
233 Id parentElementId, String elementName) {
235 if (elementName.equals(ElementType.VspModel.name())) {
236 return elementInfoMap.values();
243 public Optional<ElementInfo> getElementInfoByName(SessionContext context,
244 ElementContext elementContext,
245 Id parentElementId, String elementName) {
247 if (elementName.equals(ElementType.Templates.name())) {
248 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
249 } else if (elementName.equals(ElementType.Artifacts.name())) {
250 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
253 return Optional.empty();
257 public Element saveElement(SessionContext context, ElementContext elementContext,
258 ZusammenElement element, String message) {
263 public void resolveElementConflict(SessionContext context, ElementContext elementContext,
264 ZusammenElement element, Resolution resolution) {
269 public Collection<HealthInfo> checkHealth(SessionContext context) {
274 public Id createItem(SessionContext context, Info info) {
279 public void updateItem(SessionContext context, Id itemId, Info info) {
284 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
285 ItemVersionData itemVersionData) {
290 public void updateVersion(SessionContext context, Id itemId, Id versionId,
291 ItemVersionData itemVersionData) {
296 public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
301 public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
306 public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
311 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
316 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
323 public void revertVersionToRevision(SessionContext context, Id itemId, Id versionId,
329 public ItemVersionRevisions listVersionRevisions(SessionContext context, Id itemId,
335 public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
340 public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
345 public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
350 public void cleanVersion(SessionContext sessionContext, Id itemId, Id versionId) {
355 public Optional<ElementInfo> getElementInfo(SessionContext context,
356 ElementContext elementContext,
358 return Optional.empty();
362 public String getVersion(SessionContext sessionContext) {
367 public void revert(SessionContext sessionContext, Id itemId, Id versionId,
373 public ItemVersionRevisions listRevisions(SessionContext sessionContext, Id itemId,
379 public Optional<ElementConflict> getElementConflict(SessionContext context,
380 ElementContext elementContext,
382 return Optional.empty();
386 public Collection<Item> listItems(SessionContext context) {
391 public Item getItem(SessionContext context, Id itemId) {
396 public void deleteItem(SessionContext context, Id itemId) {