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.Element;
24 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementConflict;
25 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
26 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict;
27 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ZusammenElement;
28 import com.amdocs.zusammen.commons.health.data.HealthInfo;
29 import com.amdocs.zusammen.datatypes.Id;
30 import com.amdocs.zusammen.datatypes.SessionContext;
31 import com.amdocs.zusammen.datatypes.item.ElementContext;
32 import com.amdocs.zusammen.datatypes.item.Info;
33 import com.amdocs.zusammen.datatypes.item.Item;
34 import com.amdocs.zusammen.datatypes.item.ItemVersion;
35 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
36 import com.amdocs.zusammen.datatypes.item.ItemVersionStatus;
37 import com.amdocs.zusammen.datatypes.item.Resolution;
38 import com.amdocs.zusammen.datatypes.itemversion.ItemVersionRevisions;
39 import com.amdocs.zusammen.datatypes.itemversion.Tag;
40 import org.openecomp.core.utilities.CommonMethods;
41 import org.openecomp.core.utilities.file.FileContentHandler;
42 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
43 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
44 import org.openecomp.sdc.datatypes.model.ElementType;
45 import org.openecomp.sdc.model.impl.zusammen.ServiceModelDaoZusammenImpl;
46 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
47 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
48 import org.openecomp.sdc.tosca.services.YamlUtil;
49 import org.openecomp.sdc.versioning.dao.types.Version;
50 import org.testng.Assert;
51 import org.testng.annotations.AfterMethod;
52 import org.testng.annotations.BeforeMethod;
53 import org.testng.annotations.Test;
55 import java.io.ByteArrayInputStream;
56 import java.util.ArrayList;
57 import java.util.Collection;
58 import java.util.HashMap;
60 import java.util.Optional;
62 public class ServiceModelDaoFactoryTest {
64 private static final String vspId = CommonMethods.nextUuId();
65 private static final Version version = Version.valueOf("1.0");
66 private static final String baseServiceTemplateName = "baseYaml.yaml";
67 private static String artifact001;
71 SessionContextProviderFactory.getInstance().createInterface().create("test");
75 public void tearDaown(){
76 SessionContextProviderFactory.getInstance().createInterface().close();
80 public void storeServiceModelTest() {
82 ItemVersion itemVersionmock = new ItemVersion();
83 itemVersionmock.setId(new Id());
85 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
86 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
89 zusammenAdaptor.setItemVersion(itemVersionmock);
90 ToscaServiceModel model = getToscaServiceModel();
91 serviceModelDaoZusammen.storeServiceModel(vspId, version, model);
95 public void getServiceModelTest() {
97 ItemVersion itemVersionmock = new ItemVersion();
98 itemVersionmock.setId(new Id());
100 ElementInfo elementInfo = new ElementInfo();
101 Info info = new Info();
102 info.addProperty("base", "baseElement");
103 elementInfo.setInfo(info);
105 ElementInfo artifactElementInfo = new ElementInfo();
106 artifactElementInfo.setInfo(new Info());
107 artifactElementInfo.getInfo().setName(ElementType.Artifacts.name());
108 ElementInfo templateElementInfo = new ElementInfo();
109 templateElementInfo.setInfo(new Info());
110 templateElementInfo.getInfo().setName(ElementType.Templates.name());
112 ElementInfo serviceModelElementInfo = new ElementInfo();
113 serviceModelElementInfo.setInfo(new Info());
114 serviceModelElementInfo.getInfo().setName(ElementType.ServiceModel.name());
115 ZusammenElement element = new ZusammenElement();
116 ServiceTemplate serviceTemplate = new ServiceTemplate();
117 YamlUtil yamlUtil = new YamlUtil();
118 element.setData(new ByteArrayInputStream(yamlUtil.objectToYaml(serviceTemplate).getBytes()));
120 info.setName("dataFileName");
121 element.setInfo(info);
122 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
123 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
126 zusammenAdaptor.setItemVersion(itemVersionmock);
127 zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(), elementInfo);
128 zusammenAdaptor.addElementInfo("null" + ElementType.Artifacts.name(), artifactElementInfo);
129 zusammenAdaptor.addElementInfo("null" + ElementType.Templates.name(), templateElementInfo);
130 zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(),
131 serviceModelElementInfo);
132 zusammenAdaptor.addElement(element);
134 ToscaServiceModel model =
135 serviceModelDaoZusammen.getServiceModel(vspId, version);
136 Assert.assertNotNull(model);
139 Assert.assertEquals(artifact001,"dataFileName");
143 private static void setArtifact(ToscaServiceModel model) {
145 (String) (model).getArtifactFiles().getFileList().toArray()[0];
148 private ToscaServiceModel getToscaServiceModel() {
150 Map<String, ServiceTemplate> serviceTemplates = getServiceTemplates(baseServiceTemplateName);
151 FileContentHandler artifacts = getArtifacts();
152 return new ToscaServiceModel(artifacts, serviceTemplates, baseServiceTemplateName);
156 private Map<String, ServiceTemplate> getServiceTemplates(String base) {
158 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
160 serviceTemplates.put(base, getServiceTemplate());
161 serviceTemplates.put("SERV1", getServiceTemplate());
162 serviceTemplates.put("SERV2", getServiceTemplate());
163 serviceTemplates.put("SERV3", getServiceTemplate());
164 serviceTemplates.put("SERV4", getServiceTemplate());
166 return serviceTemplates;
169 public FileContentHandler getArtifacts() {
170 Map<String, byte[]> artifacts = new HashMap<>();
171 artifacts.put("art1", "this is art1".getBytes());
172 artifacts.put("art2", ("this is art2 desc:" + CommonMethods.nextUuId()).getBytes());
173 artifacts.put("art3", ("this is art3 desc:" + CommonMethods.nextUuId()).getBytes());
174 artifacts.put("art4", ("this is art4 desc:" + CommonMethods.nextUuId()).getBytes());
176 FileContentHandler fileContentHandler = new FileContentHandler();
177 fileContentHandler.putAll(artifacts);
178 return fileContentHandler;
181 private ServiceTemplate getServiceTemplate() {
182 ServiceTemplate serviceTemplate = new ServiceTemplate();
183 serviceTemplate.setTosca_definitions_version("version 1.0");
184 serviceTemplate.setDescription(CommonMethods.nextUuId());
185 return serviceTemplate;
188 private class ZusammenAdaptorMock implements ZusammenAdaptor {
190 private ItemVersion itemVersion;
191 private Map<String, ElementInfo> elementInfoMap = new HashMap<>();
192 private Collection<Element> elements = new ArrayList<>();
194 private void setItemVersion(ItemVersion itemVersion) {
195 this.itemVersion = itemVersion;
198 private void addElementInfo(String key, ElementInfo elementInfo) {
199 elementInfoMap.put(key, elementInfo);
202 private void addElement(Element element) {
203 elements.add(element);
207 public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
209 return Optional.ofNullable(itemVersion);
213 public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
218 public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
223 public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
225 return Optional.empty();
229 public Optional<Element> getElementByName(SessionContext context,
230 ElementContext elementContext,
231 Id parentElementId, String elementName) {
232 return Optional.empty();
236 public Collection<ElementInfo> listElements(SessionContext context,
237 ElementContext elementContext,
238 Id parentElementId) {
243 public Collection<Element> listElementData(SessionContext context,
244 ElementContext elementContext,
245 Id parentElementId) {
250 public Collection<ElementInfo> listElementsByName(SessionContext context,
251 ElementContext elementContext,
252 Id parentElementId, String elementName) {
254 if (elementName.equals(ElementType.VspModel.name())) {
255 return elementInfoMap.values();
262 public Optional<ElementInfo> getElementInfoByName(SessionContext context,
263 ElementContext elementContext,
264 Id parentElementId, String elementName) {
266 if (elementName.equals(ElementType.Templates.name())) {
267 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
268 } else if (elementName.equals(ElementType.Artifacts.name())) {
269 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
272 return Optional.empty();
276 public Element saveElement(SessionContext context, ElementContext elementContext,
277 ZusammenElement element, String message) {
282 public void resolveElementConflict(SessionContext context, ElementContext elementContext,
283 ZusammenElement element, Resolution resolution) {
288 public Collection<HealthInfo> checkHealth(SessionContext context) {
293 public Id createItem(SessionContext context, Info info) {
298 public void updateItem(SessionContext context, Id itemId, Info info) {
303 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
304 ItemVersionData itemVersionData) {
309 public void updateVersion(SessionContext context, Id itemId, Id versionId,
310 ItemVersionData itemVersionData) {
315 public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
320 public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
325 public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
330 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
335 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
342 public void revertVersionToRevision(SessionContext context, Id itemId, Id versionId,
348 public ItemVersionRevisions listVersionRevisions(SessionContext context, Id itemId,
354 public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
359 public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
364 public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
369 public Optional<ElementInfo> getElementInfo(SessionContext context,
370 ElementContext elementContext,
372 return Optional.empty();
376 public String getVersion(SessionContext sessionContext) {
381 public void revert(SessionContext sessionContext, Id itemId, Id versionId,
387 public ItemVersionRevisions listRevisions(SessionContext sessionContext, Id itemId,
393 public Optional<ElementConflict> getElementConflict(SessionContext context,
394 ElementContext elementContext,
396 return Optional.empty();
400 public Collection<Item> listItems(SessionContext context) {
405 public Item getItem(SessionContext context, Id itemId) {