1 package org.openecomp.sdc.be.model.jsontitan.operations;
4 import org.apache.commons.lang3.tuple.ImmutablePair;
5 import org.junit.Before;
6 import org.junit.BeforeClass;
8 import org.junit.runner.RunWith;
9 import org.openecomp.sdc.be.dao.api.ActionStatus;
10 import org.openecomp.sdc.be.dao.jsongraph.TitanDao;
11 import org.openecomp.sdc.be.dao.jsongraph.utils.IdBuilderUtils;
12 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
13 import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
14 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
15 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
16 import org.openecomp.sdc.be.model.*;
17 import org.openecomp.sdc.be.model.category.CategoryDefinition;
18 import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
19 import org.openecomp.sdc.be.model.jsontitan.datamodel.TopologyTemplate;
20 import org.openecomp.sdc.be.model.jsontitan.utils.GraphTestUtils;
21 import org.openecomp.sdc.be.model.operations.api.IElementOperation;
22 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
23 import org.openecomp.sdc.be.model.operations.impl.UserAdminOperation;
24 import org.springframework.test.context.ContextConfiguration;
25 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
27 import javax.annotation.Resource;
28 import java.util.ArrayList;
29 import java.util.List;
31 import static org.assertj.core.api.Assertions.assertThat;
33 @RunWith(SpringJUnit4ClassRunner.class)
34 @ContextConfiguration("classpath:application-context-test.xml")
35 public class UpgradeOperationTest extends ModelTestBase {
37 private boolean isInitialized;
39 private TitanDao titanDao;
41 private UpgradeOperation upgradeOperation;
43 private TopologyTemplateOperation topologyTemplateOperation;
45 private NodeTemplateOperation nodeTemplateOperation;
47 private UserAdminOperation userAdminOperation;
48 @javax.annotation.Resource
49 private IElementOperation elementOperation;
53 private CategoryDefinition resourceCategory;
54 private CategoryDefinition serviceCategory;
58 public static void initTest() {
63 public void beforeTest() {
65 GraphTestUtils.clearGraph(titanDao);
72 public void testGetSimpleDependency() {
74 TopologyTemplate vf = createVf("vf1");
76 TopologyTemplate service = createServiceWitnInstance("service1", vf);
79 Either<List<ComponentDependency>, StorageOperationStatus> result = upgradeOperation.getComponentDependencies(vf.getUniqueId());
80 assertThat(result.isLeft()).isTrue();
81 List<ComponentDependency> dependencies = result.left().value();
82 assertThat(dependencies).hasSize(1);
84 ComponentDependency dependency = dependencies.get(0);
85 assertThat(dependency.getName()).isEqualTo(vf.getName());
86 assertThat(dependency.getVersion()).isEqualTo(vf.getVersion());
87 assertThat(dependency.getDependencies()).hasSize(1);
89 ComponentDependency container = dependency.getDependencies().get(0);
90 assertThat(container.getName()).isEqualTo(service.getName());
91 assertThat(container.getVersion()).isEqualTo(service.getVersion());
92 assertThat(container.getDependencies()).isNull();
96 /*******************************
98 *******************************/
99 private void initGraphForTest() {
101 user = new User("Jim", "Tom", "jt123a", "1@mail.com", "DESIGNER", System.currentTimeMillis());
102 Either<User, StorageOperationStatus> saveUserData = userAdminOperation.saveUserData(user);
103 assertThat(saveUserData.isLeft()).isTrue();
105 GraphTestUtils.createRootCatalogVertex(titanDao);
106 resourceCategory = createResourceCategories();
107 serviceCategory = createServiceCategory();
111 private TopologyTemplate createServiceWitnInstance(String name, TopologyTemplate createdVf) {
113 TopologyTemplate serviceNew = createTopologyTemplate(ComponentTypeEnum.SERVICE, name);
114 List<CategoryDefinition> categoriesService = new ArrayList<>();
115 categoriesService.add(serviceCategory);
116 serviceNew.setCategories(categoriesService);
118 Either<TopologyTemplate, StorageOperationStatus> createService = topologyTemplateOperation.createTopologyTemplate(serviceNew);
119 assertThat(createService.isLeft()).isTrue();
121 ComponentInstance vfInstance = new ComponentInstance();
122 vfInstance.setUniqueId(createdVf.getUniqueId() + createdVf.getName());
123 vfInstance.setComponentUid(createdVf.getUniqueId());
124 vfInstance.setName(createdVf.getName());
125 Either<ImmutablePair<TopologyTemplate, String>, StorageOperationStatus> addInstance = nodeTemplateOperation.addComponentInstanceToTopologyTemplate(serviceNew, createdVf, "0", vfInstance, false, user);
126 assertThat(addInstance.isLeft()).isTrue();
130 private CategoryDefinition createServiceCategory() {
131 CategoryDefinition categoryService = new CategoryDefinition();
132 categoryService.setName("servicecategory");
133 categoryService.setNormalizedName("servicecategory");
134 categoryService.setUniqueId("servicecategory");
135 Either<CategoryDefinition, ActionStatus> createCategory = elementOperation.createCategory(categoryService , NodeTypeEnum.ServiceNewCategory);
137 assertThat(createCategory.isLeft()).isTrue();
138 return categoryService;
141 private TopologyTemplate createVf(String name) {
143 TopologyTemplate resource = createTopologyTemplate(ComponentTypeEnum.RESOURCE, name);
145 resource.setResourceType(ResourceTypeEnum.VF);
146 List<CategoryDefinition> categories = new ArrayList<>();
147 categories.add(resourceCategory);
148 resource.setCategories(categories);
149 Either<TopologyTemplate, StorageOperationStatus> createVf = topologyTemplateOperation.createTopologyTemplate(resource);
150 assertThat( createVf.isLeft()).isTrue();
154 private CategoryDefinition createResourceCategories() {
155 CategoryDefinition category = new CategoryDefinition();
156 category.setName("category1");
157 category.setNormalizedName("category1");
158 category.setUniqueId("category1");
159 Either<CategoryDefinition, ActionStatus> createCategory = elementOperation.createCategory(category , NodeTypeEnum.ResourceNewCategory);
160 assertThat(createCategory.isLeft()).isTrue();
162 SubCategoryDefinition subCategory = new SubCategoryDefinition();
164 subCategory.setName("subcategory1");
165 subCategory.setNormalizedName("subcategory1");
166 subCategory.setUniqueId("subcategory1");
167 elementOperation.createSubCategory(createCategory.left().value().getUniqueId(), subCategory, NodeTypeEnum.ResourceSubcategory);
168 category.addSubCategory(subCategory);
172 private TopologyTemplate createTopologyTemplate(ComponentTypeEnum type, String name) {
173 TopologyTemplate template = new TopologyTemplate();
174 template.setUniqueId(IdBuilderUtils.generateUniqueId());
175 template.setComponentType(type);
176 template.setHighestVersion(true);
177 template.setLifecycleState(LifecycleStateEnum.CERTIFIED);
178 template.setMetadataValue(JsonPresentationFields.NAME, name);
179 template.setMetadataValue(JsonPresentationFields.VERSION, "1.0");
180 template.setCreatorUserId(user.getUserId());