VidNotion identify port mirroring service 21/98221/6
authorEylon Malin <eylon.malin@intl.att.com>
Sun, 10 Nov 2019 07:58:54 +0000 (09:58 +0200)
committerEylon Malin <eylon.malin@intl.att.com>
Sun, 10 Nov 2019 11:22:11 +0000 (13:22 +0200)
Issue-ID: VID-701
Change-Id: I805acab9380c779d2609107c1c65ef25bb0dad47
Signed-off-by: Eylon Malin <eylon.malin@intl.att.com>
vid-app-common/src/main/java/org/onap/vid/asdc/parser/VidNotionsBuilder.java
vid-app-common/src/main/java/org/onap/vid/model/VidNotions.kt
vid-app-common/src/test/java/org/onap/vid/asdc/parser/VidNotionsBuilderTest.java
vid-app-common/src/test/resources/csars/portMirroringService.zip [new file with mode: 0644]

index d35c8df..0426758 100644 (file)
@@ -34,6 +34,7 @@ import org.onap.sdc.toscaparser.api.NodeTemplate;
 import org.onap.sdc.toscaparser.api.elements.Metadata;
 import org.onap.vid.model.ServiceModel;
 import org.onap.vid.model.VidNotions;
+import org.onap.vid.model.VidNotions.ModelCategory;
 import org.onap.vid.properties.Features;
 import org.togglz.core.manager.FeatureManager;
 
@@ -153,6 +154,9 @@ public class VidNotionsBuilder {
         if(isALaCarte(csarHelper) && hasFabricConfiguration(csarHelper)) {
             return VidNotions.ModelCategory.IS_5G_FABRIC_CONFIGURATION_MODEL;
         }
+        if (isPortMirroringService(serviceModel)) {
+            return ModelCategory.PORT_MIRRORING;
+        }
         if (isInfraStructureVpn(csarHelper)) {
             return VidNotions.ModelCategory.INFRASTRUCTURE_VPN;
         }
@@ -232,4 +236,9 @@ public class VidNotionsBuilder {
         final String serviceRole = csarHelper.getServiceMetadata().getValue(ToscaParserImpl2.Constants.SERVICE_ROLE);
         return StringUtils.equalsIgnoreCase(serviceRole, ToscaParserImpl2.Constants.GROUPING);
     }
+
+    private boolean isPortMirroringService(ServiceModel serviceModel) {
+        return (serviceModel.getService()!=null &&
+            StringUtils.equals(serviceModel.getService().getServiceType(), "portMirroring"));
+    }
 }
index f67d8fb..66fe2dd 100644 (file)
@@ -59,6 +59,7 @@ class VidNotions(@get:JsonInclude(JsonInclude.Include.NON_NULL)
         Transport,
         SERVICE_WITH_COLLECTION_RESOURCE,
         INFRASTRUCTURE_VPN,
+        PORT_MIRRORING,        
         @JsonProperty("other")
         OTHER
     }
index edf7d08..d6526d2 100644 (file)
@@ -56,6 +56,7 @@ import org.onap.sdc.tosca.parser.exceptions.SdcToscaParserException;
 import org.onap.sdc.toscaparser.api.NodeTemplate;
 import org.onap.sdc.toscaparser.api.Property;
 import org.onap.sdc.toscaparser.api.elements.Metadata;
+import org.onap.vid.asdc.parser.ToscaParserImpl2.Constants;
 import org.onap.vid.model.CR;
 import org.onap.vid.model.Network;
 import org.onap.vid.model.Node;
@@ -197,6 +198,15 @@ public class VidNotionsBuilderTest {
         assertThat(vidNotionsBuilder.suggestModelCategory(csarHelper, serviceModel), is(ModelCategory.INFRASTRUCTURE_VPN));
     }
 
+    @Test()
+    public void withoutMocks_givenToscaOfPortMirroring_InstantiationUIIsLegacyAndCategoryIsPortMirroring() throws SdcToscaParserException, IOException {
+        initServiceModelAndscarHelperWithRealCsar("/csars/portMirroringService.zip");
+        when(featureManagerMock.isActive(Features.FLAG_2002_ANY_ALACARTE_BESIDES_EXCLUDED_NEW_INSTANTIATION_UI)).thenReturn(true);
+        assertThat(vidNotionsBuilder.suggestInstantiationUI(csarHelper, serviceModel), is(InstantiationUI.LEGACY));
+        assertThat(vidNotionsBuilder.suggestViewEditUI(csarHelper, serviceModel), is(InstantiationUI.LEGACY));
+        assertThat(vidNotionsBuilder.suggestModelCategory(csarHelper, serviceModel), is(ModelCategory.PORT_MIRRORING));
+    }
+
     @Test
     public void uuidIsExactly1ffce89fEtc_UIHintIsPositive() {
         initServiceModelAndscarHelperWithMocks();
@@ -216,6 +226,12 @@ public class VidNotionsBuilderTest {
         assertThat(vidNotionsBuilder.buildVidNotions(csarHelper, serviceModel), hasProperty("instantiationUI", is(InstantiationUI.LEGACY)));
     }
 
+    private void mockInstantiationType(ServiceModel serviceModel, String aLaCarte) {
+        Service mockService = mock(Service.class);
+        when(serviceModel.getService()).thenReturn(mockService);
+        when(mockService.getInstantiationType()).thenReturn(aLaCarte);
+    }
+
     @DataProvider
     public static Object[][] ServiceRoleTypesDataProvider() {
         return new Object[][] {
@@ -256,9 +272,7 @@ public class VidNotionsBuilderTest {
         when(featureManagerMock.isActive(Features.FLAG_1902_NEW_VIEW_EDIT)).thenReturn(isFlag1902NewViewEdit);
 
         ServiceModel serviceModel = mock(ServiceModel.class);
-        Service service = mock(Service.class);
-        when(serviceModel.getService()).thenReturn(service);
-        when(service.getInstantiationType()).thenReturn(ToscaParserImpl2.Constants.A_LA_CARTE);
+        mockInstantiationType(serviceModel, Constants.A_LA_CARTE);
 
         InstantiationUI result = vidNotionsBuilder.suggestViewEditUI(csarHelper, serviceModel);
         assertEquals(expectedViewEditUi, result);
@@ -302,9 +316,7 @@ public class VidNotionsBuilderTest {
     @Test(dataProvider="toscaParserInstantiationTypeToVidNotion")
     public void testSuggestInstantiationTypeWhenInstantiationUiLegacy(String toscaParserInstantiationType, InstantiationType expectedInstantiationType) {
         ServiceModel serviceModel = mock(ServiceModel.class);
-        Service service = mock(Service.class);
-        when(serviceModel.getService()).thenReturn(service);
-        when(service.getInstantiationType()).thenReturn(toscaParserInstantiationType);
+        mockInstantiationType(serviceModel, toscaParserInstantiationType);
         assertEquals(expectedInstantiationType, vidNotionsBuilder.suggestInstantiationType(serviceModel, ModelCategory.OTHER));
     }
 
@@ -326,9 +338,7 @@ public class VidNotionsBuilderTest {
             boolean isFeatureOn,
             InstantiationType expectedInstantiationType) {
         ServiceModel serviceModel = mock(ServiceModel.class);
-        Service service = mock(Service.class);
-        when(serviceModel.getService()).thenReturn(service);
-        when(service.getInstantiationType()).thenReturn(ToscaParserImpl2.Constants.A_LA_CARTE);
+        mockInstantiationType(serviceModel, Constants.A_LA_CARTE);
         when(featureManagerMock.isActive(featureFlag)).thenReturn(isFeatureOn);
         assertEquals(expectedInstantiationType, vidNotionsBuilder.suggestInstantiationType(serviceModel, instantiationUI));
     }
@@ -378,9 +388,7 @@ public class VidNotionsBuilderTest {
     @Test
     public void whenInstantiationTypeInServiceModelIsNull_thenInstantiationTypeIsClientConfig() {
         initServiceModelAndscarHelperWithMocks();
-        Service service = mock(Service.class);
-        when(serviceModel.getService()).thenReturn(service);
-        when(service.getInstantiationType()).thenReturn(null);
+        mockInstantiationType(serviceModel, null);
         assertEquals( InstantiationType.ClientConfig, vidNotionsBuilder.suggestInstantiationType(serviceModel, ModelCategory.OTHER));
     }
 
diff --git a/vid-app-common/src/test/resources/csars/portMirroringService.zip b/vid-app-common/src/test/resources/csars/portMirroringService.zip
new file mode 100644 (file)
index 0000000..b8c919d
Binary files /dev/null and b/vid-app-common/src/test/resources/csars/portMirroringService.zip differ