1 package org.openecomp.sdc.healing.healers;
3 import org.junit.AfterClass;
4 import org.junit.Assert;
5 import org.junit.Before;
6 import org.junit.BeforeClass;
8 import org.mockito.InjectMocks;
9 import org.mockito.Mock;
10 import org.mockito.Mockito;
11 import org.mockito.MockitoAnnotations;
12 import org.openecomp.core.model.dao.ServiceModelDao;
13 import org.openecomp.core.model.types.ServiceElement;
14 import org.openecomp.sdc.common.togglz.ToggleableFeature;
15 import org.openecomp.sdc.common.utils.SdcCommon;
16 import org.openecomp.sdc.healing.healers.util.TestUtil;
17 import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
18 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
19 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
20 import org.openecomp.sdc.tosca.services.ToscaAnalyzerService;
21 import org.openecomp.sdc.versioning.dao.types.Version;
22 import org.togglz.testing.TestFeatureManager;
23 import org.togglz.testing.TestFeatureManagerProvider;
25 import java.util.HashMap;
27 import java.util.Optional;
29 import static org.mockito.Matchers.any;
30 import static org.mockito.Matchers.anyObject;
31 import static org.mockito.Matchers.eq;
33 public class ForwarderCapabilityHealerTest {
34 private static final String IN_SUFFIX = "/in";
35 private static final String OUT_SUFFIX = "/out";
36 private static final String BASE_DIRECTORY = "/mock/healers/forwarder";
37 private static final String ENTRY_DEFINITION_SERVICE_TEMPLATE = "MainServiceTemplate.yaml";
38 private static TestFeatureManager manager;
40 private Map<String,Object> params = new HashMap<>();
43 private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao;
45 private ToscaAnalyzerService toscaAnalyzerService;
47 private ForwarderCapabilityHealer forwarderCapabilityHealer;
50 public static void enableForwarderFeature(){
51 manager = new TestFeatureManager(ToggleableFeature.class);
52 if (!ToggleableFeature.FORWARDER_CAPABILITY.isActive()) {
53 manager.enable(ToggleableFeature.FORWARDER_CAPABILITY);
58 public static void disableForwarderFeature() {
59 manager.disable(ToggleableFeature.FORWARDER_CAPABILITY);
61 TestFeatureManagerProvider.setFeatureManager(null);
65 public void setUp() throws Exception {
66 MockitoAnnotations.initMocks(ForwarderCapabilityHealerTest.this);
67 params.put(SdcCommon.VSP_ID,"1");
68 params.put(SdcCommon.VERSION, new Version(1,1));
73 public void testHealingSubstitutionMappingsNeutronPort() throws Exception {
75 "/testSubMappingNeutronPort", "org.openecomp.resource.cp.nodes.heat.network.neutron.Port", true);
79 public void testHealingSubstitutionMappingsContrailPort() throws Exception {
81 "/testSubMappingContrailPort", "org.openecomp.resource.cp.nodes.heat.network.contrail.Port", true);
85 public void testHealingSubstitutionMappingsExtNeutronPort() throws Exception {
87 "/testSubMappingExtNeutronPort", "org.openecomp.resource.cp.v2.extNeutronCP", true);
91 public void testHealingSubstitutionMappingsExtContrailPort() throws Exception {
93 "/testSubMappingExtContrailPort", "org.openecomp.resource.cp.v2.extContrailCP", true);
97 public void testHealingGlobalServiceTemplates () throws Exception {
98 testForwarderHealer("/testGlobalServiceTemplates", null, false);
102 public void testHealingNoPorts() throws Exception {
103 testForwarderHealer("/testNoPorts", null, false);
106 private void testForwarderHealer(String testDirectory,
108 boolean needToTestSubMapping) throws Exception {
110 ToscaServiceModel toscaServiceModel = TestUtil.loadToscaServiceModel(
111 BASE_DIRECTORY + testDirectory + IN_SUFFIX, null, ENTRY_DEFINITION_SERVICE_TEMPLATE);
113 Mockito.doReturn(toscaServiceModel)
114 .when(serviceModelDao).getServiceModel(any(), any());
116 if(needToTestSubMapping) {
117 Mockito.doReturn(true)
118 .when(toscaAnalyzerService).isTypeOf(
119 eq(getMockPortNodeTemplate(portType)),
120 eq(ToscaNodeType.NATIVE_NETWORK_PORT),
121 anyObject(), anyObject());
124 validateServiceModelAfterHealing(testDirectory);
127 private void validateServiceModelAfterHealing(String testDirectory) throws Exception {
128 Optional<ToscaServiceModel> serviceModelObject =
129 (Optional<ToscaServiceModel>) forwarderCapabilityHealer.heal(params);
131 Assert.assertTrue(serviceModelObject.isPresent());
133 .compareToscaServiceModels(
134 BASE_DIRECTORY + testDirectory + OUT_SUFFIX, serviceModelObject.get());
137 private NodeTemplate getMockPortNodeTemplate(String portType) {
138 NodeTemplate nodeTemplate = new NodeTemplate();
139 nodeTemplate.setType(portType);
141 Map<String, Object> properties = new HashMap<>();
142 properties.put("exCP_naming", "port_pd01_port_exCP_naming");
143 nodeTemplate.setProperties(properties);