From: Krysiak Adam Date: Tue, 18 Jun 2019 09:09:21 +0000 (+0200) Subject: Improved tests performance X-Git-Tag: 1.5.0~6 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=commitdiff_plain;h=5bcdc95e91aeabf68770b175fe210da38e76867f Improved tests performance * 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 --- diff --git a/ONAP-REST/src/test/java/org/onap/policy/rest/daoimpl/PolicyValidationDaoImplTest.java b/ONAP-REST/src/test/java/org/onap/policy/rest/daoimpl/PolicyValidationDaoImplTest.java index f5d968b14..299e8003f 100644 --- a/ONAP-REST/src/test/java/org/onap/policy/rest/daoimpl/PolicyValidationDaoImplTest.java +++ b/ONAP-REST/src/test/java/org/onap/policy/rest/daoimpl/PolicyValidationDaoImplTest.java @@ -3,13 +3,14 @@ * 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 - * + * * 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. @@ -31,14 +32,16 @@ import javax.script.SimpleBindings; 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.Transaction; 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.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; @@ -55,13 +58,13 @@ public class PolicyValidationDaoImplTest { 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 @@ -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) @@ -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(); } } diff --git a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusConsumer.java b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusConsumer.java index 0d4c86b3d..c3fe9023f 100644 --- a/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusConsumer.java +++ b/PolicyEngineUtils/src/main/java/org/onap/policy/utils/BusConsumer.java @@ -3,13 +3,14 @@ * 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 - * + * * 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. @@ -28,98 +29,100 @@ import org.onap.dmaap.mr.client.impl.MRConsumerImpl; 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 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 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 fetch() throws MRApiException { - try { - return this.consumer.fetch(); + + /** + * fetch messages + * + * @return list of messages + * @throws MRApiException when error encountered by underlying libraries + */ + Iterable 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 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 fetch() throws MRApiException { + try { + return consumer.fetch(); } 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(); + } + } } diff --git a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/BusTest.java b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/BusTest.java similarity index 78% rename from PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/BusTest.java rename to PolicyEngineUtils/src/test/java/org/onap/policy/utils/BusTest.java index 37f0bb016..58262d97c 100644 --- a/PolicyEngineUtils/src/test/java/org/onap/policy/utils/test/BusTest.java +++ b/PolicyEngineUtils/src/test/java/org/onap/policy/utils/BusTest.java @@ -3,6 +3,7 @@ * 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. @@ -18,18 +19,20 @@ * ============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.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 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 { @@ -42,8 +45,14 @@ public class BusTest { } @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