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 java.io.ByteArrayInputStream;
41 import java.util.ArrayList;
42 import java.util.Collection;
43 import java.util.HashMap;
45 import java.util.Optional;
46 import org.junit.After;
47 import org.junit.Assert;
48 import org.junit.Before;
49 import org.junit.Test;
50 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
51 import org.onap.sdc.tosca.services.YamlUtil;
52 import org.openecomp.core.utilities.CommonMethods;
53 import org.openecomp.core.utilities.file.FileContentHandler;
54 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
55 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
56 import org.openecomp.sdc.datatypes.model.ElementType;
57 import org.openecomp.sdc.model.impl.zusammen.ServiceModelDaoZusammenImpl;
58 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
59 import org.openecomp.sdc.versioning.dao.types.Version;
61 public class ServiceModelDaoFactoryTest {
63 private static final String vspId = CommonMethods.nextUuId();
64 private static final Version version = Version.valueOf("1.0");
65 private static final String baseServiceTemplateName = "baseYaml.yaml";
66 private static String artifact001;
67 private static final String tenant = "dox";
71 SessionContextProviderFactory.getInstance().createInterface().create("test", tenant);
75 public void tearDown(){
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 Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
212 public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
217 public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
219 return Optional.empty();
223 public Optional<Element> getElementByName(SessionContext context,
224 ElementContext elementContext,
225 Id parentElementId, String elementName) {
226 return Optional.empty();
230 public Collection<ElementInfo> listElements(SessionContext context,
231 ElementContext elementContext,
232 Id parentElementId) {
237 public Collection<Element> listElementData(SessionContext context,
238 ElementContext elementContext,
239 Id parentElementId) {
244 public Collection<ElementInfo> listElementsByName(SessionContext context,
245 ElementContext elementContext,
246 Id parentElementId, String elementName) {
248 if (elementName.equals(ElementType.VspModel.name())) {
249 return elementInfoMap.values();
256 public Optional<ElementInfo> getElementInfoByName(SessionContext context,
257 ElementContext elementContext,
258 Id parentElementId, String elementName) {
260 if (elementName.equals(ElementType.Templates.name())) {
261 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
262 } else if (elementName.equals(ElementType.Artifacts.name())) {
263 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
266 return Optional.empty();
270 public Element saveElement(SessionContext context, ElementContext elementContext,
271 ZusammenElement element, String message) {
276 public void resolveElementConflict(SessionContext context, ElementContext elementContext,
277 ZusammenElement element, Resolution resolution) {
282 public Collection<HealthInfo> checkHealth(SessionContext context) {
287 public Id createItem(SessionContext context, Info info) {
292 public void updateItem(SessionContext context, Id itemId, Info info) {
297 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
298 ItemVersionData itemVersionData) {
303 public void updateVersion(SessionContext context, Id itemId, Id versionId,
304 ItemVersionData itemVersionData) {
309 public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
314 public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
319 public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
324 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
329 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
336 public void revertVersionToRevision(SessionContext context, Id itemId, Id versionId,
342 public ItemVersionRevisions listVersionRevisions(SessionContext context, Id itemId,
348 public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
353 public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
358 public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
363 public void cleanVersion(SessionContext sessionContext, Id itemId, Id versionId) {
368 public Optional<ElementInfo> getElementInfo(SessionContext context,
369 ElementContext elementContext,
371 return Optional.empty();
375 public String getVersion(SessionContext sessionContext) {
380 public void revert(SessionContext sessionContext, Id itemId, Id versionId,
386 public ItemVersionRevisions listRevisions(SessionContext sessionContext, Id itemId,
392 public Optional<ElementConflict> getElementConflict(SessionContext context,
393 ElementContext elementContext,
395 return Optional.empty();
399 public Collection<Item> listItems(SessionContext context) {
404 public Item getItem(SessionContext context, Id itemId) {
409 public void deleteItem(SessionContext context, Id itemId) {