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;
68 private static final String tenant = "dox";
72 SessionContextProviderFactory.getInstance().createInterface().create("test", tenant);
76 public void tearDaown(){
77 SessionContextProviderFactory.getInstance().createInterface().close();
81 public void storeServiceModelTest() {
83 ItemVersion itemVersionmock = new ItemVersion();
84 itemVersionmock.setId(new Id());
86 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
87 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
90 zusammenAdaptor.setItemVersion(itemVersionmock);
91 ToscaServiceModel model = getToscaServiceModel();
92 serviceModelDaoZusammen.storeServiceModel(vspId, version, model);
96 public void getServiceModelTest() {
98 ItemVersion itemVersionmock = new ItemVersion();
99 itemVersionmock.setId(new Id());
101 ElementInfo elementInfo = new ElementInfo();
102 Info info = new Info();
103 info.addProperty("base", "baseElement");
104 elementInfo.setInfo(info);
106 ElementInfo artifactElementInfo = new ElementInfo();
107 artifactElementInfo.setInfo(new Info());
108 artifactElementInfo.getInfo().setName(ElementType.Artifacts.name());
109 ElementInfo templateElementInfo = new ElementInfo();
110 templateElementInfo.setInfo(new Info());
111 templateElementInfo.getInfo().setName(ElementType.Templates.name());
113 ElementInfo serviceModelElementInfo = new ElementInfo();
114 serviceModelElementInfo.setInfo(new Info());
115 serviceModelElementInfo.getInfo().setName(ElementType.ServiceModel.name());
116 ZusammenElement element = new ZusammenElement();
117 ServiceTemplate serviceTemplate = new ServiceTemplate();
118 YamlUtil yamlUtil = new YamlUtil();
119 element.setData(new ByteArrayInputStream(yamlUtil.objectToYaml(serviceTemplate).getBytes()));
121 info.setName("dataFileName");
122 element.setInfo(info);
123 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
124 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
127 zusammenAdaptor.setItemVersion(itemVersionmock);
128 zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(), elementInfo);
129 zusammenAdaptor.addElementInfo("null" + ElementType.Artifacts.name(), artifactElementInfo);
130 zusammenAdaptor.addElementInfo("null" + ElementType.Templates.name(), templateElementInfo);
131 zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(),
132 serviceModelElementInfo);
133 zusammenAdaptor.addElement(element);
135 ToscaServiceModel model =
136 serviceModelDaoZusammen.getServiceModel(vspId, version);
137 Assert.assertNotNull(model);
140 Assert.assertEquals(artifact001,"dataFileName");
144 private static void setArtifact(ToscaServiceModel model) {
146 (String) (model).getArtifactFiles().getFileList().toArray()[0];
149 private ToscaServiceModel getToscaServiceModel() {
151 Map<String, ServiceTemplate> serviceTemplates = getServiceTemplates(baseServiceTemplateName);
152 FileContentHandler artifacts = getArtifacts();
153 return new ToscaServiceModel(artifacts, serviceTemplates, baseServiceTemplateName);
157 private Map<String, ServiceTemplate> getServiceTemplates(String base) {
159 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
161 serviceTemplates.put(base, getServiceTemplate());
162 serviceTemplates.put("SERV1", getServiceTemplate());
163 serviceTemplates.put("SERV2", getServiceTemplate());
164 serviceTemplates.put("SERV3", getServiceTemplate());
165 serviceTemplates.put("SERV4", getServiceTemplate());
167 return serviceTemplates;
170 public FileContentHandler getArtifacts() {
171 Map<String, byte[]> artifacts = new HashMap<>();
172 artifacts.put("art1", "this is art1".getBytes());
173 artifacts.put("art2", ("this is art2 desc:" + CommonMethods.nextUuId()).getBytes());
174 artifacts.put("art3", ("this is art3 desc:" + CommonMethods.nextUuId()).getBytes());
175 artifacts.put("art4", ("this is art4 desc:" + CommonMethods.nextUuId()).getBytes());
177 FileContentHandler fileContentHandler = new FileContentHandler();
178 fileContentHandler.putAll(artifacts);
179 return fileContentHandler;
182 private ServiceTemplate getServiceTemplate() {
183 ServiceTemplate serviceTemplate = new ServiceTemplate();
184 serviceTemplate.setTosca_definitions_version("version 1.0");
185 serviceTemplate.setDescription(CommonMethods.nextUuId());
186 return serviceTemplate;
189 private class ZusammenAdaptorMock implements ZusammenAdaptor {
191 private ItemVersion itemVersion;
192 private Map<String, ElementInfo> elementInfoMap = new HashMap<>();
193 private Collection<Element> elements = new ArrayList<>();
195 private void setItemVersion(ItemVersion itemVersion) {
196 this.itemVersion = itemVersion;
199 private void addElementInfo(String key, ElementInfo elementInfo) {
200 elementInfoMap.put(key, elementInfo);
203 private void addElement(Element element) {
204 elements.add(element);
208 public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
210 return Optional.ofNullable(itemVersion);
214 public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
219 public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
224 public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
226 return Optional.empty();
230 public Optional<Element> getElementByName(SessionContext context,
231 ElementContext elementContext,
232 Id parentElementId, String elementName) {
233 return Optional.empty();
237 public Collection<ElementInfo> listElements(SessionContext context,
238 ElementContext elementContext,
239 Id parentElementId) {
244 public Collection<Element> listElementData(SessionContext context,
245 ElementContext elementContext,
246 Id parentElementId) {
251 public Collection<ElementInfo> listElementsByName(SessionContext context,
252 ElementContext elementContext,
253 Id parentElementId, String elementName) {
255 if (elementName.equals(ElementType.VspModel.name())) {
256 return elementInfoMap.values();
263 public Optional<ElementInfo> getElementInfoByName(SessionContext context,
264 ElementContext elementContext,
265 Id parentElementId, String elementName) {
267 if (elementName.equals(ElementType.Templates.name())) {
268 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
269 } else if (elementName.equals(ElementType.Artifacts.name())) {
270 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
273 return Optional.empty();
277 public Element saveElement(SessionContext context, ElementContext elementContext,
278 ZusammenElement element, String message) {
283 public void resolveElementConflict(SessionContext context, ElementContext elementContext,
284 ZusammenElement element, Resolution resolution) {
289 public Collection<HealthInfo> checkHealth(SessionContext context) {
294 public Id createItem(SessionContext context, Info info) {
299 public void updateItem(SessionContext context, Id itemId, Info info) {
304 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
305 ItemVersionData itemVersionData) {
310 public void updateVersion(SessionContext context, Id itemId, Id versionId,
311 ItemVersionData itemVersionData) {
316 public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
321 public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
326 public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
331 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
336 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
343 public void revertVersionToRevision(SessionContext context, Id itemId, Id versionId,
349 public ItemVersionRevisions listVersionRevisions(SessionContext context, Id itemId,
355 public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
360 public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
365 public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
370 public Optional<ElementInfo> getElementInfo(SessionContext context,
371 ElementContext elementContext,
373 return Optional.empty();
377 public String getVersion(SessionContext sessionContext) {
382 public void revert(SessionContext sessionContext, Id itemId, Id versionId,
388 public ItemVersionRevisions listRevisions(SessionContext sessionContext, Id itemId,
394 public Optional<ElementConflict> getElementConflict(SessionContext context,
395 ElementContext elementContext,
397 return Optional.empty();
401 public Collection<Item> listItems(SessionContext context) {
406 public Item getItem(SessionContext context, Id itemId) {
411 public void deleteItem(SessionContext context, Id itemId) {