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.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.Revision;
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;
58 import java.util.List;
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;
70 SessionContextProviderFactory.getInstance().createInterface().create("test");
75 public void storeServiceModelTest() {
77 ItemVersion itemVersionmock = new ItemVersion();
78 itemVersionmock.setId(new Id());
80 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
81 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
84 zusammenAdaptor.setItemVersion(itemVersionmock);
85 ToscaServiceModel model = getToscaServiceModel();
86 serviceModelDaoZusammen.storeServiceModel(vspId, version, model);
89 private SessionContext getSessionContext() {
90 SessionContext context = new SessionContext();
91 context.setUser(new UserInfo("USER_A"));
92 context.setTenant("asdc");
98 public void getServiceModelTest() {
100 ItemVersion itemVersionmock = new ItemVersion();
101 itemVersionmock.setId(new Id());
103 ElementInfo elementInfo = new ElementInfo();
104 Info info = new Info();
105 info.addProperty("base", "baseElement");
106 elementInfo.setInfo(info);
108 ElementInfo artifactElementInfo = new ElementInfo();
109 artifactElementInfo.setInfo(new Info());
110 artifactElementInfo.getInfo().setName(ElementType.Artifacts.name());
111 ElementInfo templateElementInfo = new ElementInfo();
112 templateElementInfo.setInfo(new Info());
113 templateElementInfo.getInfo().setName(ElementType.Templates.name());
115 ElementInfo serviceModelElementInfo = new ElementInfo();
116 serviceModelElementInfo.setInfo(new Info());
117 serviceModelElementInfo.getInfo().setName(ElementType.ServiceModel.name());
118 ZusammenElement element = new ZusammenElement();
119 ServiceTemplate serviceTemplate = new ServiceTemplate();
120 YamlUtil yamlUtil = new YamlUtil();
121 element.setData(new ByteArrayInputStream(yamlUtil.objectToYaml(serviceTemplate).getBytes()));
123 info.setName("dataFileName");
124 element.setInfo(info);
125 ZusammenAdaptorMock zusammenAdaptor = new ZusammenAdaptorMock();
126 ServiceModelDaoZusammenImpl serviceModelDaoZusammen = new ServiceModelDaoZusammenImpl(
129 zusammenAdaptor.setItemVersion(itemVersionmock);
130 zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(), elementInfo);
131 zusammenAdaptor.addElementInfo("null" + ElementType.Artifacts.name(), artifactElementInfo);
132 zusammenAdaptor.addElementInfo("null" + ElementType.Templates.name(), templateElementInfo);
133 zusammenAdaptor.addElementInfo("null" + ElementType.ServiceModel.name(),
134 serviceModelElementInfo);
135 zusammenAdaptor.addElement(element);
138 serviceModelDaoZusammen.getServiceModel(vspId, version);
139 Assert.assertNotNull(model);
140 Assert.assertTrue(model instanceof ToscaServiceModel);
141 if (model instanceof ToscaServiceModel) {
143 setArtifact((ToscaServiceModel) model);
147 private static void setArtifact(ToscaServiceModel model) {
149 (String) (model).getArtifactFiles().getFileList().toArray()[0];
152 private ToscaServiceModel getToscaServiceModel() {
154 Map<String, ServiceTemplate> serviceTemplates = getServiceTemplates(baseServiceTemplateName);
155 FileContentHandler artifacts = getArtifacts();
156 return new ToscaServiceModel(artifacts, serviceTemplates, baseServiceTemplateName);
160 private Map<String, ServiceTemplate> getServiceTemplates(String base) {
162 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
164 serviceTemplates.put(base, getServiceTemplate());
165 serviceTemplates.put("SERV1", getServiceTemplate());
166 serviceTemplates.put("SERV2", getServiceTemplate());
167 serviceTemplates.put("SERV3", getServiceTemplate());
168 serviceTemplates.put("SERV4", getServiceTemplate());
170 return serviceTemplates;
173 public FileContentHandler getArtifacts() {
174 Map<String, byte[]> artifacts = new HashMap<>();
175 artifacts.put("art1", "this is art1".getBytes());
176 artifacts.put("art2", ("this is art2 desc:" + CommonMethods.nextUuId()).getBytes());
177 artifacts.put("art2", ("this is art3 desc:" + CommonMethods.nextUuId()).getBytes());
178 artifacts.put("art2", ("this is art4 desc:" + CommonMethods.nextUuId()).getBytes());
180 FileContentHandler fileContentHandler = new FileContentHandler();
181 fileContentHandler.putAll(artifacts);
182 return fileContentHandler;
185 public ServiceTemplate getServiceTemplate() {
186 ServiceTemplate serviceTemplate = new ServiceTemplate();
187 serviceTemplate.setTosca_definitions_version("version 1.0");
188 serviceTemplate.setDescription(CommonMethods.nextUuId());
189 return serviceTemplate;
192 private class ZusammenAdaptorMock implements ZusammenAdaptor {
194 private ItemVersion itemVersion;
195 private Map<String, ElementInfo> elementInfoMap = new HashMap();
196 private Collection<Element> elements = new ArrayList<>();
198 public void setItemVersion(ItemVersion itemVersion) {
199 this.itemVersion = itemVersion;
202 public void addElementInfo(String key, ElementInfo elementInfo) {
203 elementInfoMap.put(key, elementInfo);
206 public void addElement(Element element) {
207 elements.add(element);
211 public Optional<ItemVersion> getFirstVersion(SessionContext context, Id itemId) {
213 return Optional.ofNullable(itemVersion);
217 public Collection<ItemVersion> listPublicVersions(SessionContext context, Id itemId) {
222 public ItemVersion getPublicVersion(SessionContext context, Id itemId, Id versionId) {
227 public Optional<Element> getElement(SessionContext context, ElementContext elementContext,
233 public Optional<Element> getElementByName(SessionContext context,
234 ElementContext elementContext,
235 Id parentElementId, String elementName) {
240 public Collection<ElementInfo> listElements(SessionContext context,
241 ElementContext elementContext,
242 Id parentElementId) {
247 public Collection<Element> listElementData(SessionContext context,
248 ElementContext elementContext,
249 Id parentElementId) {
254 public Collection<ElementInfo> listElementsByName(SessionContext context,
255 ElementContext elementContext,
256 Id parentElementId, String elementName) {
258 if(elementName.equals(ElementType.VspModel.name())){
259 return elementInfoMap.values();
266 public Optional<ElementInfo> getElementInfoByName(SessionContext context,
267 ElementContext elementContext,
268 Id parentElementId, String elementName) {
270 if(elementName.equals(ElementType.Templates.name())){
271 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
272 }else if(elementName.equals(ElementType.Artifacts.name())) {
273 return Optional.ofNullable(elementInfoMap.get("null" + elementName));
276 return Optional.empty();
280 public Element saveElement(SessionContext context, ElementContext elementContext,
281 ZusammenElement element, String message) {
286 public void resolveElementConflict(SessionContext context, ElementContext elementContext,
287 ZusammenElement element, Resolution resolution) {
292 public Collection<HealthInfo> checkHealth(SessionContext context) {
297 public Id createItem(SessionContext context, Info info) {
302 public void updateItem(SessionContext context, Id itemId, Info info) {
307 public Id createVersion(SessionContext context, Id itemId, Id baseVersionId,
308 ItemVersionData itemVersionData) {
313 public void updateVersion(SessionContext context, Id itemId, Id versionId,
314 ItemVersionData itemVersionData) {
319 public ItemVersion getVersion(SessionContext context, Id itemId, Id versionId) {
324 public ItemVersionStatus getVersionStatus(SessionContext context, Id itemId, Id versionId) {
329 public ItemVersionConflict getVersionConflict(SessionContext context, Id itemId, Id versionId) {
334 public void tagVersion(SessionContext context, Id itemId, Id versionId, Tag tag) {
339 public void resetVersionHistory(SessionContext context, Id itemId, Id versionId,
346 public void revertVersionToRevision(SessionContext context, Id itemId, Id versionId,
352 public ItemVersionRevisions listVersionRevisions(SessionContext context, Id itemId,
358 public void publishVersion(SessionContext context, Id itemId, Id versionId, String message) {
363 public void syncVersion(SessionContext sessionContext, Id itemId, Id versionId) {
368 public void forceSyncVersion(SessionContext context, Id itemId, Id versionId) {
373 public Optional<ElementInfo> getElementInfo(SessionContext context,
374 ElementContext elementContext,
380 public String getVersion(SessionContext sessionContext) {
385 public void revert(SessionContext sessionContext, String itemId, String versionId,
391 public List<Revision> listRevisions(SessionContext sessionContext, String itemId,
397 public Optional<ElementConflict> getElementConflict(SessionContext context,
398 ElementContext elementContext,
404 public Collection<Item> listItems(SessionContext context) {
409 public Item getItem(SessionContext context, Id itemId) {