Improved tests performance 68/90068/5
authorKrysiak Adam <adam.krysiak@nokia.com>
Tue, 18 Jun 2019 09:09:21 +0000 (11:09 +0200)
committerKrysiak Adam <adam.krysiak@nokia.com>
Wed, 19 Jun 2019 08:59:55 +0000 (10:59 +0200)
* used mock instead of waiting till dmaap client fails
* creating in memory DB only once

Issue-ID: POLICY-1671
Change-Id: Ia1b6ce7ddad1bce0d17c2dbf14f3d82dd237673b
Signed-off-by: Krysiak Adam <adam.krysiak@nokia.com>
ONAP-REST/src/test/java/org/onap/policy/rest/daoimpl/PolicyValidationDaoImplTest.java
PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusConsumer.java
PolicyEngineUtils/src/test/java/org/onap/policy/utils/BusTest.java [moved from PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/BusTest.java with 78% similarity]

index f5d968b..299e800 100644 (file)
@@ -3,13 +3,14 @@
  * ONAP-REST
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ONAP-REST
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications copyright (c) 2019 Nokia
  * ================================================================================
  * 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
  * ================================================================================
  * 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
  *      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.
  * 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.
@@ -31,14 +32,16 @@ import javax.script.SimpleBindings;
 
 import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
 import org.h2.tools.Server;
 
 import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
 import org.h2.tools.Server;
+import org.hibernate.Query;
+import org.hibernate.Session;
 import org.hibernate.SessionFactory;
 import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
 import org.junit.After;
 import org.junit.After;
-import org.junit.Before;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.junit.Test;
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
-//import org.onap.policy.conf.HibernateSession;
-//import org.onap.policy.controller.PolicyController;
 import org.onap.policy.rest.jpa.OnapName;
 import org.onap.policy.rest.jpa.PolicyEntity;
 import org.onap.policy.rest.jpa.PolicyRoles;
 import org.onap.policy.rest.jpa.OnapName;
 import org.onap.policy.rest.jpa.PolicyEntity;
 import org.onap.policy.rest.jpa.PolicyRoles;
@@ -55,13 +58,13 @@ public class PolicyValidationDaoImplTest {
 
     private static Logger logger = FlexLogger.getLogger(PolicyValidationDaoImplTest.class);
 
 
     private static Logger logger = FlexLogger.getLogger(PolicyValidationDaoImplTest.class);
 
-    SessionFactory sessionFactory;
-    Server server;
-    PolicyValidationDaoImpl commonClassDao;
+    static SessionFactory sessionFactory;
+    static Server server;
+    static PolicyValidationDaoImpl commonClassDao;
 
 
-    @Before
-    public void setUp() throws Exception{
-        try{
+    @BeforeClass
+    public static void setupAll() {
+        try {
             BasicDataSource dataSource = new BasicDataSource();
             dataSource.setDriverClassName("org.h2.Driver");
             // In-memory DB for testing
             BasicDataSource dataSource = new BasicDataSource();
             dataSource.setDriverClassName("org.h2.Driver");
             // In-memory DB for testing
@@ -110,6 +113,17 @@ public class PolicyValidationDaoImplTest {
         }
     }
 
         }
     }
 
+    @AfterClass
+    public static void deleteDB() {
+        sessionFactory.close();
+        server.stop();
+    }
+
+    @After
+    public void tearDown() {
+        truncateAllTables();
+    }
+
     @Test
     @Transactional
     @Rollback(true)
     @Test
     @Transactional
     @Rollback(true)
@@ -431,11 +445,16 @@ public class PolicyValidationDaoImplTest {
         }
     }
 
         }
     }
 
-    @After
-    public void deleteDB(){
-        sessionFactory.close();
-        server.stop();
 
 
+    private void truncateAllTables() {
+        Session session = sessionFactory.openSession();
+        Transaction transaction = session.beginTransaction();
+        sessionFactory.getAllClassMetadata().forEach((tableName, x) -> {
+            Query query = session.createQuery("DELETE FROM " + tableName);
+            query.executeUpdate();
+        });
+        transaction.commit();
+        session.close();
     }
 
 }
     }
 
 }
index 0d4c86b..c3fe902 100644 (file)
@@ -3,13 +3,14 @@
  * PolicyEngineUtils
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * PolicyEngineUtils
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications copyright (c) 2019 Nokia
  * ================================================================================
  * 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
  * ================================================================================
  * 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
  *      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.
  * 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.
@@ -28,98 +29,100 @@ import org.onap.dmaap.mr.client.impl.MRConsumerImpl;
 import org.onap.dmaap.mr.test.clients.ProtocolTypeConstants;
 
 public interface BusConsumer {
 import org.onap.dmaap.mr.test.clients.ProtocolTypeConstants;
 
 public interface BusConsumer {
-       
-       /**
-        * fetch messages
-        * 
-        * @return list of messages
-        * @throws MRApiException when error encountered by underlying libraries
-        */
-       public Iterable<String> fetch() throws MRApiException;
-       
-       /**
-        * close underlying library consumer
-        */
-       public void close();
-       
-       /**
-        * MR based consumer
-        */
-       public static class DmaapConsumerWrapper implements BusConsumer {
-               
-               /**
-                * MR Consumer
-                */
-               protected MRConsumerImpl consumer;
-               
-               /**
-                * MR Consumer Wrapper
-                * 
-                * @param servers messaging bus hosts
-                * @param topic topic
-                * @param apiKey API Key
-                * @param apiSecret API Secret
-                * @param aafLogin AAF Login
-                * @param aafPassword AAF Password
-                * @param consumerGroup Consumer Group
-                * @param consumerInstance Consumer Instance
-                * @param fetchTimeout Fetch Timeout
-                * @param fetchLimit Fetch Limit
-                */
-               public DmaapConsumerWrapper(List<String> servers, String topic, 
-                                                               String aafLogin, String aafPassword,
-                                                               String consumerGroup, String consumerInstance,
-                                                               int fetchTimeout, int fetchLimit) throws MalformedURLException{
-                                       
-                       this.consumer = new MRConsumerImpl(servers, topic, 
-                                                                                          consumerGroup, consumerInstance, 
-                                                                                          fetchTimeout, fetchLimit, 
-                                                                                  null, aafLogin, aafPassword);
-                       
-                       this.consumer.setUsername(aafLogin);
-                       this.consumer.setPassword(aafPassword);
-                       
-                       this.consumer.setProtocolFlag(ProtocolTypeConstants.AAF_AUTH.getValue());
-                       
-                       Properties props = new Properties();
-                       props.setProperty("Protocol", "http");
-                       this.consumer.setProps(props);
-                       this.consumer.setHost(servers.get(0) + ":3904");
-               }
-               
-               /**
-                * {@inheritDoc}
-                */
-               @Override
-               public Iterable<String> fetch() throws MRApiException {
-                       try {
-                return this.consumer.fetch();
+
+    /**
+     * fetch messages
+     *
+     * @return list of messages
+     * @throws MRApiException when error encountered by underlying libraries
+     */
+    Iterable<String> fetch() throws MRApiException;
+
+    /**
+     * close underlying library consumer
+     */
+    void close();
+
+    /**
+     * MR based consumer
+     */
+    class DmaapConsumerWrapper implements BusConsumer {
+
+        /**
+         * MR Consumer
+         */
+        protected MRConsumerImpl consumer;
+
+        /**
+         * MR Consumer Wrapper
+         *
+         * @param servers messaging bus hosts
+         * @param topic topic
+         * @param apiKey API Key
+         * @param apiSecret API Secret
+         * @param aafLogin AAF Login
+         * @param aafPassword AAF Password
+         * @param consumerGroup Consumer Group
+         * @param consumerInstance Consumer Instance
+         * @param fetchTimeout Fetch Timeout
+         * @param fetchLimit Fetch Limit
+         */
+        public DmaapConsumerWrapper(List<String> servers, String topic,
+            String aafLogin, String aafPassword,
+            String consumerGroup, String consumerInstance,
+            int fetchTimeout, int fetchLimit) throws MalformedURLException {
+
+            this(new MRConsumerImpl(servers, topic,
+                consumerGroup, consumerInstance,
+                fetchTimeout, fetchLimit,
+                null, aafLogin, aafPassword), aafLogin, aafPassword, servers.get(0));
+
+        }
+
+        DmaapConsumerWrapper(MRConsumerImpl consumer, String aafLogin, String aafPassword, String host) {
+            this.consumer = consumer;
+            this.consumer.setUsername(aafLogin);
+            this.consumer.setPassword(aafPassword);
+            this.consumer.setProtocolFlag(ProtocolTypeConstants.AAF_AUTH.getValue());
+            this.consumer.setHost(host + ":3904");
+
+            Properties props = new Properties();
+            props.setProperty("Protocol", "http");
+            this.consumer.setProps(props);
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public Iterable<String> fetch() throws MRApiException {
+            try {
+                return consumer.fetch();
             } catch (Exception e) {
             } catch (Exception e) {
-                throw new MRApiException("Error during MR consumer Fetch ",e);
+                throw new MRApiException("Error during MR consumer Fetch ", e);
             }
             }
-               }
-               
-               /**
-                * {@inheritDoc}
-                */
-               @Override
-               public void close() {
-                       this.consumer.close();
-               }
-               
-               @Override
-               public String toString() {
-                       StringBuilder builder = new StringBuilder();
-                       builder.
-                       append("DmaapConsumerWrapper [").
-                       append("consumer.getAuthDate()=").append(consumer.getAuthDate()).
-                       append(", consumer.getAuthKey()=").append(consumer.getAuthKey()).
-                       append(", consumer.getHost()=").append(consumer.getHost()).
-                       append(", consumer.getProtocolFlag()=").append(consumer.getProtocolFlag()).
-                       append(", consumer.getUsername()=").append(consumer.getUsername()).
-                       append("]");
-                       return builder.toString();
-               }
-       }
+        }
+
+        /**
+         * {@inheritDoc}
+         */
+        @Override
+        public void close() {
+            this.consumer.close();
+        }
 
 
+        @Override
+        public String toString() {
+            StringBuilder builder = new StringBuilder();
+            builder.
+                append("DmaapConsumerWrapper [").
+                append("consumer.getAuthDate()=").append(consumer.getAuthDate()).
+                append(", consumer.getAuthKey()=").append(consumer.getAuthKey()).
+                append(", consumer.getHost()=").append(consumer.getHost()).
+                append(", consumer.getProtocolFlag()=").append(consumer.getProtocolFlag()).
+                append(", consumer.getUsername()=").append(consumer.getUsername()).
+                append("]");
+            return builder.toString();
+        }
+    }
 }
 }
@@ -3,6 +3,7 @@
  * PolicyEngineUtils
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * PolicyEngineUtils
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Modifications copyright (c) 2019 Nokia
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * ============LICENSE_END=========================================================
  */
 
  * ============LICENSE_END=========================================================
  */
 
-package org.onap.policy.utils.test;
+package org.onap.policy.utils;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.net.MalformedURLException;
 import java.util.Arrays;
 
 import org.junit.Test;
 import org.onap.dmaap.mr.client.MRClient.MRApiException;
 
 import java.net.MalformedURLException;
 import java.util.Arrays;
 
 import org.junit.Test;
 import org.onap.dmaap.mr.client.MRClient.MRApiException;
-import org.onap.policy.utils.BusConsumer;
-import org.onap.policy.utils.BusPublisher;
+import org.onap.dmaap.mr.client.impl.MRConsumerImpl;
+import org.onap.policy.utils.BusConsumer.DmaapConsumerWrapper;
 
 public class BusTest {
     
 
 public class BusTest {
     
@@ -42,8 +45,14 @@ public class BusTest {
     }
     
     @Test (expected = MRApiException.class)
     }
     
     @Test (expected = MRApiException.class)
-    public void busConsumerFailTest() throws MalformedURLException, MRApiException{
-        new BusConsumer.DmaapConsumerWrapper(Arrays.asList("test"), "test", "test", "test", "test", "test", 1, 1).fetch();
+    public void busConsumerFailTest() throws Exception {
+        //given
+        MRConsumerImpl mrConsumer = mock(MRConsumerImpl.class);
+        when(mrConsumer.fetch()).thenThrow(new Exception());
+        DmaapConsumerWrapper dmaapConsumerWrapper = new DmaapConsumerWrapper(mrConsumer, "", "", "");
+
+        //when
+        dmaapConsumerWrapper.fetch();
     }
     
     @Test
     }
     
     @Test