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.UserInfo;
32 import com.amdocs.zusammen.datatypes.item.ElementContext;
33 import com.amdocs.zusammen.datatypes.item.Info;
34 import com.amdocs.zusammen.datatypes.item.Item;
35 import com.amdocs.zusammen.datatypes.item.ItemVersion;
36 import com.amdocs.zusammen.datatypes.item.ItemVersionData;
37 import com.amdocs.zusammen.datatypes.item.ItemVersionStatus;
38 import com.amdocs.zusammen.datatypes.item.Resolution;
39 import com.amdocs.zusammen.datatypes.itemversion.ItemVersionRevisions;
40 import com.amdocs.zusammen.datatypes.itemversion.Tag;
41 import org.openecomp.core.utilities.CommonMethods;
42 import org.openecomp.core.utilities.file.FileContentHandler;
43 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
44 import org.openecomp.sdc.common.session.SessionContextProviderFactory;
45 import org.openecomp.sdc.datatypes.model.ElementType;
46 import org.openecomp.sdc.model.impl.zusammen.ServiceModelDaoZusammenImpl;
47 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
48 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
49 import org.openecomp.sdc.tosca.services.YamlUtil;
50 import org.openecomp.sdc.versioning.dao.types.Version;
51 import org.testng.Assert;
52 import org.testng.annotations.Test;
54 import java.io.ByteArrayInputStream;
55 import java.util.ArrayList;
56 import java.util.Collection;
57 import java.util.HashMap;
59 import java.util.Optional;
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;
69 SessionContextProviderFactory.getInstance().createInterface().create("test");
74 public void storeServiceModelTest() {
76 ItemVersion itemVersionmock = new ItemVersion();
77 itemVersionmock.setId(new Id());
79 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
80 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
83 zusammenAdaptor.setItemVersion(itemVersionmock);
84 ToscaServiceModel model = getToscaServiceModel();
85 serviceModelDaoZusammen.storeServiceModel(vspId, version, model);
88 private SessionContext getSessionContext() {
89 SessionContext context = new SessionContext();
90 context.setUser(new UserInfo("USER_A"));
91 context.setTenant("asdc");
97 public void getServiceModelTest() {
99 ItemVersion itemVersionmock = new ItemVersion();
100 itemVersionmock.setId(new Id());
102 ElementInfo elementInfo = new ElementInfo();
103 Info info = new Info();
104 info.addProperty("base", "baseElement");
105 elementInfo.setInfo(info);
107 ElementInfo artifactElementInfo = new ElementInfo();
108 artifactElementInfo.setInfo(new Info());
109 artifactElementInfo.getInfo().setName(ElementType.Artifacts.name());
110 ElementInfo templateElementInfo = new ElementInfo();
111 templateElementInfo.setInfo(new Info());
112 templateElementInfo.getInfo().setName(ElementType.Templates.name());
114 ElementInfo serviceModelElementInfo = new ElementInfo();
115 serviceModelElementInfo.setInfo(new Info());
116 serviceModelElementInfo.getInfo().setName(ElementType.ServiceModel.name());
117 ZusammenElement element = new ZusammenElement();
118 ServiceTemplate serviceTemplate = new ServiceTemplate();
119 YamlUtil yamlUtil = new YamlUtil();
120 element.setData(new ByteArrayInputStream(yamlUtil.objectToYaml(serviceTemplate).getBytes()));
122 info.setName("dataFileName");
123 element.setInfo(info);
124 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
125 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
128 zusammenAdaptor.setItemVersion(itemVersionmock);
129 zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(), elementInfo);
130 zusammenAdaptor.addElementInfo("null" + ElementType.Artifacts.name(), artifactElementInfo);
131 zusammenAdaptor.addElementInfo("null" + ElementType.Templates.name(), templateElementInfo);
132 zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(),
133 serviceModelElementInfo);
134 zusammenAdaptor.addElement(element);
137 serviceModelDaoZusammen.getServiceModel(vspId, version);
138 Assert.assertNotNull(model);
139 Assert.assertTrue(model instanceof ToscaServiceModel);
140 if (model instanceof ToscaServiceModel) {
142 setArtifact((ToscaServiceModel) model);
146 private static void setArtifact(ToscaServiceModel model) {
148 (String) (model).getArtifactFiles().getFileList().toArray()[0];
151 private ToscaServiceModel getToscaServiceModel() {
153 Map<String, ServiceTemplate> serviceTemplates = getServiceTemplates(baseServiceTemplateName);
154 FileContentHandler artifacts = getArtifacts();
155 return new ToscaServiceModel(artifacts, serviceTemplates, baseServiceTemplateName);
159 private Map<String, ServiceTemplate> getServiceTemplates(String base) {
161 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
163 serviceTemplates.put(base, getServiceTemplate());
164 serviceTemplates.put("SERV1", getServiceTemplate());
165 serviceTemplates.put("SERV2", getServiceTemplate());
166 serviceTemplates.put("SERV3", getServiceTemplate());
167 serviceTemplates.put("SERV4", getServiceTemplate());
169 return serviceTemplates;
172 public FileContentHandler getArtifacts() {
173 Map<String, byte[]> artifacts = new HashMap<>();
174 artifacts.put("art1", "this is art1".getBytes());
175 artifacts.put("art2", ("this is art2 desc:" + CommonMethods.nextUuId()).getBytes());
176 artifacts.put("art2", ("this is art3 desc:" + CommonMethods.nextUuId()).getBytes());
177 artifacts.put("art2", ("this is art4 desc:" + CommonMethods.nextUuId()).getBytes());
179 FileContentHandler fileContentHandler = new FileContentHandler();
180 fileContentHandler.putAll(artifacts);
181 return fileContentHandler;
184 public ServiceTemplate getServiceTemplate() {
185 ServiceTemplate serviceTemplate = new ServiceTemplate();
186 serviceTemplate.setTosca_definitions_version("version 1.0");
187 serviceTemplate.setDescription(CommonMethods.nextUuId());
188 return serviceTemplate;
191 private class ZusammenAdaptorMock implements ZusammenAdaptor {
193 private ItemVersion itemVersion;
194 private Map<String, ElementInfo> elementInfoMap = new HashMap();
195 private Collection<Element> elements = new ArrayList<>();
197 public void setItemVersion(ItemVersion itemVersion) {
198 this.itemVersion = itemVersion;
201 public void addElementInfo(String key, ElementInfo elementInfo) {
202 elementInfoMap.put(key, elementInfo);
205 public void addElement(Element element) {
206 elements.add(element);
210 public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
212 return Optional.ofNullable(itemVersion);
216 public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
221 public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
226 public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
232 public Optional<Element> getElementByName(SessionContext context,
233 ElementContext elementContext,
234 Id parentElementId, String elementName) {
239 public Collection<ElementInfo> listElements(SessionContext context,
240 ElementContext elementContext,
241 Id parentElementId) {
246 public Collection<Element> listElementData(SessionContext context,
247 ElementContext elementContext,
248 Id parentElementId) {
253 public Collection<ElementInfo> listElementsByName(SessionContext context,
254 ElementContext elementContext,
255 Id parentElementId, String elementName) {
257 if (elementName.equals(ElementType.VspModel.name())) {
258 return elementInfoMap.values();
265 public Optional<ElementInfo> getElementInfoByName(SessionContext context,
266 ElementContext elementContext,
267 Id parentElementId, String elementName) {
269 if (elementName.equals(ElementType.Templates.name())) {
270 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
271 } else if (elementName.equals(ElementType.Artifacts.name())) {
272 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
275 return Optional.empty();
279 public Element saveElement(SessionContext context, ElementContext elementContext,
280 ZusammenElement element, String message) {
285 public void resolveElementConflict(SessionContext context, ElementContext elementContext,
286 ZusammenElement element, Resolution resolution) {
291 public Collection<HealthInfo> checkHealth(SessionContext context) {
296 public Id createItem(SessionContext context, Info info) {
301 public void updateItem(SessionContext context, Id itemId, Info info) {
306 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
307 ItemVersionData itemVersionData) {
312 public void updateVersion(SessionContext context, Id itemId, Id versionId,
313 ItemVersionData itemVersionData) {
318 public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
323 public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
328 public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
333 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
338 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
345 public void revertVersionToRevision(SessionContext context, Id itemId, Id versionId,
351 public ItemVersionRevisions listVersionRevisions(SessionContext context, Id itemId,
357 public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
362 public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
367 public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
372 public Optional<ElementInfo> getElementInfo(SessionContext context,
373 ElementContext elementContext,
379 public String getVersion(SessionContext sessionContext) {
384 public void revert(SessionContext sessionContext, Id itemId, Id versionId,
390 public ItemVersionRevisions listRevisions(SessionContext sessionContext, Id itemId,
396 public Optional<ElementConflict> getElementConflict(SessionContext context,
397 ElementContext elementContext,
403 public Collection<Item> listItems(SessionContext context) {
408 public Item getItem(SessionContext context, Id itemId) {