MetadataServiceImplTest unit tests 63/35763/6
authorJakub Dudycz <jakub.dudycz@nokia.com>
Wed, 14 Mar 2018 13:54:38 +0000 (14:54 +0100)
committerTakamune Cho <tc012c@att.com>
Wed, 14 Mar 2018 15:41:03 +0000 (15:41 +0000)
Improved code coverage.

Change-Id: I20a0af3050bc78b470377486f7493d72f8ba0f78
Issue-ID: APPC-731
Signed-off-by: Jakub Dudycz <jakub.dudycz@nokia.com>
appc-common/src/main/java/org/onap/appc/metadata/impl/MetadataServiceImpl.java
appc-common/src/test/java/org/onap/appc/metadata/TestMetadataService.java [deleted file]
appc-common/src/test/java/org/onap/appc/metadata/impl/MetadataServiceImplTest.java [new file with mode: 0644]

index 0321b7e..2a2218c 100644 (file)
@@ -45,54 +45,60 @@ public class MetadataServiceImpl implements MetadataService {
 
     private static final EELFLogger logger = EELFManager.getInstance().getLogger(MetadataServiceImpl.class);
 
-    private MetadataCache<DependencyModelIdentifier,String> cache;
+    private MetadataCache<DependencyModelIdentifier, String> cache;
 
-    public MetadataServiceImpl(){
+    public MetadataServiceImpl() {
         initialize();
     }
 
-    private void initialize(){
+    private void initialize() {
         cache = MetadataCacheFactory.getInstance().getMetadataCache();
         // TODO initialze dbLibService
     }
 
-    public void setDbLibService(DbLibService dbLibService) {
+    void setDbLibService(DbLibService dbLibService) {
         this.dbLibService = dbLibService;
     }
 
+    void setCache(MetadataCache<DependencyModelIdentifier, String> cache) {
+        this.cache = cache;
+    }
+
     @Override
     public String getVnfModel(DependencyModelIdentifier modelIdentifier) {
-        logger.debug("Reading Vnf Model data from cache for vnfType : "+ modelIdentifier.getVnfType() +" and catalog version : " +modelIdentifier.getCatalogVersion());
+        logger.debug("Reading Vnf Model data from cache for vnfType : " + modelIdentifier.getVnfType()
+            + " and catalog version : " + modelIdentifier.getCatalogVersion());
         String vnfModel = cache.getObject(modelIdentifier);
-        if(vnfModel ==null || vnfModel.length() ==0){
+        if (vnfModel == null || vnfModel.length() == 0) {
             logger.debug("Vnf Model not available in cache. Reading from database.");
             vnfModel = readVnfModel(modelIdentifier);
-            if(vnfModel !=null  && vnfModel.length()>0){
+            if (vnfModel != null && vnfModel.length() > 0) {
                 logger.debug("Adding retrieved Vnf Model to cache.");
-                addVnfModel(modelIdentifier,vnfModel);
+                addVnfModel(modelIdentifier, vnfModel);
             }
         }
         return vnfModel;
     }
 
     private void addVnfModel(DependencyModelIdentifier modelIdentifier, String vnfModel) {
-        cache.putObject(modelIdentifier,vnfModel);
+        cache.putObject(modelIdentifier, vnfModel);
     }
 
     private String readVnfModel(DependencyModelIdentifier modelIdentifier) {
 
-        logger.debug("Reading Vnf Model data from database for RESOURCE_NAME : "+ modelIdentifier.getVnfType() +" and RESOURCE_VERSION : " +modelIdentifier.getCatalogVersion());
+        logger.debug("Reading Vnf Model data from database for RESOURCE_NAME : " + modelIdentifier.getVnfType()
+            + " and RESOURCE_VERSION : " + modelIdentifier.getCatalogVersion());
         StringBuilder query = new StringBuilder();
-        String vnfModel =null;
-        query.append("SELECT ARTIFACT_CONTENT FROM sdnctl.ASDC_ARTIFACTS WHERE RESOURCE_NAME = ? ") ;
+        String vnfModel = null;
+        query.append("SELECT ARTIFACT_CONTENT FROM sdnctl.ASDC_ARTIFACTS WHERE RESOURCE_NAME = ? ");
         ArrayList<String> argList = new ArrayList<>();
         argList.add(modelIdentifier.getVnfType());
 
-        if (modelIdentifier.getCatalogVersion()==null){
+        if (modelIdentifier.getCatalogVersion() == null) {
             query.append(" ORDER BY  SUBSTRING_INDEX(RESOURCE_VERSION, '.', 1)*1  DESC , " +
-                    "SUBSTRING_INDEX(SUBSTRING_INDEX(RESOURCE_VERSION, '.', 2),'.', -1) *1 DESC , " +
-                    "SUBSTRING_INDEX(RESOURCE_VERSION, '.', -1)*1 DESC ;");
-        }else{
+                "SUBSTRING_INDEX(SUBSTRING_INDEX(RESOURCE_VERSION, '.', 2),'.', -1) *1 DESC , " +
+                "SUBSTRING_INDEX(RESOURCE_VERSION, '.', -1)*1 DESC ;");
+        } else {
             query.append("AND RESOURCE_VERSION = ? ;");
             argList.add(modelIdentifier.getCatalogVersion());
         }
@@ -101,16 +107,18 @@ public class MetadataServiceImpl implements MetadataService {
             if (data.first()) {
                 vnfModel = data.getString("ARTIFACT_CONTENT");
                 if (vnfModel == null || vnfModel.isEmpty()) {
-                    logger.error("Invalid dependency model for vnf type : "+ modelIdentifier.getVnfType() +" and catalog version : " +modelIdentifier.getCatalogVersion());
+                    logger.error("Invalid dependency model for vnf type : " + modelIdentifier.getVnfType()
+                        + " and catalog version : " + modelIdentifier.getCatalogVersion());
                     throw new RuntimeException("Invalid or Empty VNF Model");
                 }
                 logger.debug("Retrieved Vnf Model : " + vnfModel);
-            }else {
-                logger.warn("VNF Model not found in datastore for RESOURCE_NAME : "+ modelIdentifier.getVnfType() +" AND RESOURCE_VERSION : " +modelIdentifier.getCatalogVersion());
+            } else {
+                logger.warn("VNF Model not found in datastore for RESOURCE_NAME : " + modelIdentifier.getVnfType()
+                    + " AND RESOURCE_VERSION : " + modelIdentifier.getCatalogVersion());
             }
         } catch (SQLException e) {
             throw new RuntimeException("Database error occurred");
         }
-        return  vnfModel;
+        return vnfModel;
     }
 }
diff --git a/appc-common/src/test/java/org/onap/appc/metadata/TestMetadataService.java b/appc-common/src/test/java/org/onap/appc/metadata/TestMetadataService.java
deleted file mode 100644 (file)
index dd66a2d..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP : APPC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Copyright (C) 2017 Amdocs
- * =============================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * 
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.appc.metadata;
-
-import static org.mockito.Matchers.anyCollection;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.mock;
-import java.sql.SQLException;
-import java.util.ArrayList;
-import javax.sql.rowset.CachedRowSet;
-import org.mockito.Mockito;
-import org.onap.appc.metadata.impl.MetadataServiceImpl;
-import org.onap.ccsdk.sli.core.dblib.DbLibService;
-import com.sun.rowset.CachedRowSetImpl;
-
-
-
-public class TestMetadataService {
-
-    MetadataServiceImpl metadataService = new MetadataServiceImpl();
-
-    TestMetadataService() throws SQLException {
-        DbLibService dbLibService = mock(DbLibService.class);
-        metadataService.setDbLibService(dbLibService);
-        CachedRowSet mockRS = new CachedRowSetImpl();
-        Mockito.when(
-                dbLibService.getData(anyString(), (ArrayList<String>) anyCollection(), anyString()))
-                .thenReturn(mockRS);
-    }
-
-
-}
diff --git a/appc-common/src/test/java/org/onap/appc/metadata/impl/MetadataServiceImplTest.java b/appc-common/src/test/java/org/onap/appc/metadata/impl/MetadataServiceImplTest.java
new file mode 100644 (file)
index 0000000..84ca9de
--- /dev/null
@@ -0,0 +1,138 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP : APPC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Copyright (C) 2018 Nokia Solutions and Networks
+ * =============================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * 
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.appc.metadata.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import java.sql.SQLException;
+import java.util.ArrayList;
+import javax.sql.rowset.CachedRowSet;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.appc.cache.MetadataCache;
+import org.onap.appc.metadata.objects.DependencyModelIdentifier;
+import org.onap.ccsdk.sli.core.dblib.DbLibService;
+
+public class MetadataServiceImplTest {
+
+
+    private MetadataServiceImpl metadataService = new MetadataServiceImpl();
+    private DbLibService mockDbLibService = mock(DbLibService.class);
+    private CachedRowSet mockCachedRowSet = mock(CachedRowSet.class);
+    private MetadataCache<DependencyModelIdentifier, String> mockCache = mock(MetadataCache.class);
+    private DependencyModelIdentifier mockModelIdentifier = mock(DependencyModelIdentifier.class);
+
+    @Before
+    public void setup() throws SQLException {
+        metadataService.setDbLibService(mockDbLibService);
+        metadataService.setCache(mockCache);
+    }
+
+    @Test
+    public void getVnfModel_should_return_vnfModel_when_present_in_cache() throws SQLException {
+        when(mockCache.getObject(mockModelIdentifier)).thenReturn("test-vnf-model");
+
+        assertEquals("test-vnf-model", metadataService.getVnfModel(mockModelIdentifier));
+
+        verify(mockCache).getObject(mockModelIdentifier);
+        verify(mockDbLibService, never()).getData(anyString(), any(ArrayList.class), anyString());
+        verify(mockCache, never()).putObject(any(DependencyModelIdentifier.class), anyString());
+    }
+
+    @Test
+    public void getVnfModel_should_read_from_database_when_null_vnfName_and_return_when_found()
+        throws SQLException {
+
+        when(mockCache.getObject(any(DependencyModelIdentifier.class))).thenReturn(null);
+        when(mockModelIdentifier.getCatalogVersion()).thenReturn("test-vnf-catalog-version");
+        when(mockDbLibService.getData(anyString(), any(ArrayList.class), anyString())).thenReturn(mockCachedRowSet);
+        when(mockCachedRowSet.first()).thenReturn(true);
+        when(mockCachedRowSet.getString("ARTIFACT_CONTENT")).thenReturn("test-vnf-model");
+
+        assertEquals("test-vnf-model", metadataService.getVnfModel(mockModelIdentifier));
+
+        verify(mockDbLibService).getData(anyString(), any(ArrayList.class), anyString());
+        verify(mockCachedRowSet).getString("ARTIFACT_CONTENT");
+        verify(mockCache).putObject(mockModelIdentifier, "test-vnf-model");
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void getVnfModel_should_read_from_database_when_null_vnfName_and_throw_when_invalid_dependency_model()
+        throws SQLException {
+
+        when(mockCache.getObject(any(DependencyModelIdentifier.class))).thenReturn(null);
+        when(mockModelIdentifier.getCatalogVersion()).thenReturn(null);
+
+        when(mockDbLibService.getData(anyString(), any(ArrayList.class), anyString())).thenReturn(mockCachedRowSet);
+        when(mockCachedRowSet.first()).thenReturn(true);
+        when(mockCachedRowSet.getString("ARTIFACT_CONTENT")).thenReturn(null);
+
+        assertEquals(null, metadataService.getVnfModel(mockModelIdentifier));
+
+        verify(mockDbLibService).getData(anyString(), any(ArrayList.class), anyString());
+        verify(mockCachedRowSet).getString("ARTIFACT_CONTENT");
+        verify(mockCache, never()).putObject(mockModelIdentifier, "test-vnf-model");
+
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void getVnfModel_should_read_from_database_when_null_vnfName_and_throw_when_database_error()
+        throws SQLException {
+
+        when(mockCache.getObject(any(DependencyModelIdentifier.class))).thenReturn(null);
+        when(mockModelIdentifier.getCatalogVersion()).thenReturn(null);
+        when(mockDbLibService.getData(anyString(), any(ArrayList.class), anyString())).thenThrow(new SQLException());
+
+        assertEquals(null, metadataService.getVnfModel(mockModelIdentifier));
+
+        verify(mockDbLibService).getData(anyString(), any(ArrayList.class), anyString());
+        verify(mockCachedRowSet, times(0)).getString("ARTIFACT_CONTENT");
+        verify(mockCache, never()).putObject(any(DependencyModelIdentifier.class), anyString());
+    }
+
+
+    @Test
+    public void getVnfModel_should_read_from_database_when_null_vnfName_and_return_null_when_not_found()
+        throws SQLException {
+
+        when(mockCache.getObject(any(DependencyModelIdentifier.class))).thenReturn(null);
+        when(mockModelIdentifier.getCatalogVersion()).thenReturn(null);
+        when(mockDbLibService.getData(anyString(), any(ArrayList.class), anyString())).thenReturn(mockCachedRowSet);
+        when(mockCachedRowSet.first()).thenReturn(false);
+
+        assertEquals(null, metadataService.getVnfModel(mockModelIdentifier));
+
+        verify(mockDbLibService).getData(anyString(), any(ArrayList.class), anyString());
+        verify(mockCachedRowSet, times(0)).getString("ARTIFACT_CONTENT");
+        verify(mockCache, never()).putObject(any(DependencyModelIdentifier.class), anyString());
+    }
+
+}