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 Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
196 return Optional.ofNullable(itemVersion);
200 public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
205 public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
210 public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
212 return Optional.empty();
216 public Optional<Element> getElementByName(SessionContext context,
217 ElementContext elementContext,
218 Id parentElementId, String elementName) {
219 return Optional.empty();
223 public Collection<ElementInfo> listElements(SessionContext context,
224 ElementContext elementContext,
225 Id parentElementId) {
230 public Collection<Element> listElementData(SessionContext context,
231 ElementContext elementContext,
232 Id parentElementId) {
237 public Collection<ElementInfo> listElementsByName(SessionContext context,
238 ElementContext elementContext,
239 Id parentElementId, String elementName) {
241 if (elementName.equals(ElementType.VspModel.name())) {
242 return elementInfoMap.values();
249 public Optional<ElementInfo> getElementInfoByName(SessionContext context,
250 ElementContext elementContext,
251 Id parentElementId, String elementName) {
253 if (elementName.equals(ElementType.Templates.name())) {
254 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
255 } else if (elementName.equals(ElementType.Artifacts.name())) {
256 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
259 return Optional.empty();
263 public Element saveElement(SessionContext context, ElementContext elementContext,
264 ZusammenElement element, String message) {
269 public void resolveElementConflict(SessionContext context, ElementContext elementContext,
270 ZusammenElement element, Resolution resolution) {
275 public Collection<HealthInfo> checkHealth(SessionContext context) {
280 public Id createItem(SessionContext context, Info info) {
285 public void updateItem(SessionContext context, Id itemId, Info info) {
290 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
291 ItemVersionData itemVersionData) {
296 public void updateVersion(SessionContext context, Id itemId, Id versionId,
297 ItemVersionData itemVersionData) {
302 public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
307 public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
312 public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
317 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
322 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
329 public void revertVersionToRevision(SessionContext context, Id itemId, Id versionId,
335 public ItemVersionRevisions listVersionRevisions(SessionContext context, Id itemId,
341 public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
346 public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
351 public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
356 public void cleanVersion(SessionContext sessionContext, Id itemId, Id versionId) {
361 public Optional<ElementInfo> getElementInfo(SessionContext context,
362 ElementContext elementContext,
364 return Optional.empty();
368 public String getVersion(SessionContext sessionContext) {
373 public void revert(SessionContext sessionContext, Id itemId, Id versionId,
379 public ItemVersionRevisions listRevisions(SessionContext sessionContext, Id itemId,
385 public Optional<ElementConflict> getElementConflict(SessionContext context,
386 ElementContext elementContext,
388 return Optional.empty();
392 public Collection<Item> listItems(SessionContext context) {
397 public Item getItem(SessionContext context, Id itemId) {
402 public void deleteItem(SessionContext context, Id itemId) {