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;
7 import org.junit.Ignore;
9 import org.mockito.InjectMocks;
10 import org.mockito.Mock;
11 import org.mockito.Mockito;
12 import org.mockito.MockitoAnnotations;
13 import org.openecomp.core.model.dao.ServiceModelDao;
14 import org.openecomp.core.model.types.ServiceElement;
15 import org.openecomp.sdc.common.togglz.ToggleableFeature;
16 import org.openecomp.sdc.common.utils.SdcCommon;
17 import org.openecomp.sdc.healing.healers.util.TestUtil;
18 import org.openecomp.sdc.tosca.datatypes.ToscaNodeType;
19 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
20 import org.openecomp.sdc.tosca.datatypes.model.NodeTemplate;
21 import org.openecomp.sdc.tosca.services.ToscaAnalyzerService;
22 import org.openecomp.sdc.versioning.dao.types.Version;
23 import org.togglz.testing.TestFeatureManager;
24 import org.togglz.testing.TestFeatureManagerProvider;
26 import java.util.HashMap;
28 import java.util.Optional;
30 import static org.mockito.Matchers.any;
31 import static org.mockito.Matchers.anyObject;
32 import static org.mockito.Matchers.eq;
34 public class ForwarderCapabilityHealerTest {
35 private static final String IN_SUFFIX = "/in";
36 private static final String OUT_SUFFIX = "/out";
37 private static final String BASE_DIRECTORY = "/mock/healers/forwarder";
38 private static final String ENTRY_DEFINITION_SERVICE_TEMPLATE = "MainServiceTemplate.yaml";
39 private static TestFeatureManager manager;
41 private Map<String,Object> params = new HashMap<>();
44 private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao;
46 private ToscaAnalyzerService toscaAnalyzerService;
48 private ForwarderCapabilityHealer forwarderCapabilityHealer;
51 public static void enableForwarderFeature(){
52 manager = new TestFeatureManager(ToggleableFeature.class);
53 if (!ToggleableFeature.FORWARDER_CAPABILITY.isActive()) {
54 manager.enable(ToggleableFeature.FORWARDER_CAPABILITY);
59 public static void disableForwarderFeature() {
60 manager.disable(ToggleableFeature.FORWARDER_CAPABILITY);
62 TestFeatureManagerProvider.setFeatureManager(null);
66 public void setUp() throws Exception {
67 MockitoAnnotations.initMocks(ForwarderCapabilityHealerTest.this);
68 params.put(SdcCommon.VSP_ID,"1");
69 params.put(SdcCommon.VERSION, new Version(1,1));
74 public void testHealingSubstitutionMappingsNeutronPort() throws Exception {
76 "/testSubMappingNeutronPort", "org.openecomp.resource.cp.nodes.heat.network.neutron.Port", true);
80 public void testHealingSubstitutionMappingsContrailPort() throws Exception {
82 "/testSubMappingContrailPort", "org.openecomp.resource.cp.nodes.heat.network.contrail.Port", true);
86 public void testHealingSubstitutionMappingsExtNeutronPort() throws Exception {
88 "/testSubMappingExtNeutronPort", "org.openecomp.resource.cp.v2.extNeutronCP", true);
92 public void testHealingSubstitutionMappingsExtContrailPort() throws Exception {
94 "/testSubMappingExtContrailPort", "org.openecomp.resource.cp.v2.extContrailCP", true);
98 public void testHealingGlobalServiceTemplates () throws Exception {
99 testForwarderHealer("/testGlobalServiceTemplates", null, false);
103 public void testHealingNoPorts() throws Exception {
104 testForwarderHealer("/testNoPorts", null, false);
107 private void testForwarderHealer(String testDirectory,
109 boolean needToTestSubMapping) throws Exception {
111 ToscaServiceModel toscaServiceModel = TestUtil.loadToscaServiceModel(
112 BASE_DIRECTORY + testDirectory + IN_SUFFIX, null, ENTRY_DEFINITION_SERVICE_TEMPLATE);
114 Mockito.doReturn(toscaServiceModel)
115 .when(serviceModelDao).getServiceModel(any(), any());
117 if(needToTestSubMapping) {
118 Mockito.doReturn(true)
119 .when(toscaAnalyzerService).isTypeOf(
120 eq(getMockPortNodeTemplate(portType)),
121 eq(ToscaNodeType.NATIVE_NETWORK_PORT),
122 anyObject(), anyObject());
125 validateServiceModelAfterHealing(testDirectory);
128 private void validateServiceModelAfterHealing(String testDirectory) throws Exception {
129 Optional<ToscaServiceModel> serviceModelObject =
130 (Optional<ToscaServiceModel>) forwarderCapabilityHealer.heal(params);
132 Assert.assertTrue(serviceModelObject.isPresent());
134 .compareToscaServiceModels(
135 BASE_DIRECTORY + testDirectory + OUT_SUFFIX, serviceModelObject.get());
138 private NodeTemplate getMockPortNodeTemplate(String portType) {
139 NodeTemplate nodeTemplate = new NodeTemplate();
140 nodeTemplate.setType(portType);
142 Map<String, Object> properties = new HashMap<>();
143 properties.put("exCP_naming", "port_pd01_port_exCP_naming");
144 nodeTemplate.setProperties(properties);