From 88603b14b8ab6f1a29d4672e01473f84dacf48ca Mon Sep 17 00:00:00 2001 From: esobmar Date: Mon, 25 Mar 2019 13:22:27 +0000 Subject: [PATCH] UnitTests for LogFileLoader Change-Id: Ia941feafa211b8c2965120ab48b159c26a550f81 Issue-ID: DMAAP-1105 Signed-off-by: esobmar --- .../provisioning/utils/LogfileLoader.java | 10 +- .../provisioning/utils/LogfileLoaderTest.java | 130 +++++++++++++++++++++ 2 files changed, 135 insertions(+), 5 deletions(-) create mode 100644 datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/LogfileLoaderTest.java diff --git a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/LogfileLoader.java b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/LogfileLoader.java index ab1a3a78..af9f8295 100644 --- a/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/LogfileLoader.java +++ b/datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/LogfileLoader.java @@ -218,7 +218,7 @@ public class LogfileLoader extends Thread { } } - private boolean pruneRecords() { + boolean pruneRecords() { boolean did1 = false; long count = countRecords(); long threshold = DEFAULT_LOG_RETENTION; @@ -282,7 +282,7 @@ public class LogfileLoader extends Thread { return did1; } - private long countRecords() { + long countRecords() { long count = 0; Connection conn = null; try { @@ -303,7 +303,7 @@ public class LogfileLoader extends Thread { return count; } - private Map getHistogram() { + Map getHistogram() { Map map = new HashMap(); Connection conn = null; try { @@ -382,7 +382,7 @@ public class LogfileLoader extends Thread { } @SuppressWarnings("resource") - private int[] process(File f) { + int[] process(File f) { int ok = 0, total = 0; try { Connection conn = db.getConnection(); @@ -442,7 +442,7 @@ public class LogfileLoader extends Thread { return new int[]{ok, total}; } - private Loadable[] buildRecords(String line) throws ParseException { + Loadable[] buildRecords(String line) throws ParseException { String[] pp = line.split("\\|"); if (pp != null && pp.length >= 7) { String rtype = pp[1].toUpperCase(); diff --git a/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/LogfileLoaderTest.java b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/LogfileLoaderTest.java new file mode 100644 index 00000000..e24a9a3f --- /dev/null +++ b/datarouter-prov/src/test/java/org/onap/dmaap/datarouter/provisioning/utils/LogfileLoaderTest.java @@ -0,0 +1,130 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.dmaap.datarouter.provisioning.utils; + +import org.junit.*; +import org.junit.rules.TemporaryFolder; +import org.junit.runner.RunWith; + +import org.onap.dmaap.datarouter.provisioning.InternalServlet; +import org.onap.dmaap.datarouter.provisioning.beans.Parameters; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor; +import org.powermock.modules.junit4.PowerMockRunner; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Map; + + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import java.util.HashMap; + + +@RunWith(PowerMockRunner.class) +@SuppressStaticInitializationFor("org.onap.dmaap.datarouter.provisioning.beans.Parameters") +public class LogfileLoaderTest { + + private static EntityManagerFactory emf; + private static EntityManager em; + private LogfileLoader lfl = LogfileLoader.getLoader(); + + + @Rule + public TemporaryFolder folder = new TemporaryFolder(); + + + @BeforeClass + public static void init() { + emf = Persistence.createEntityManagerFactory("dr-unit-tests"); + em = emf.createEntityManager(); + System.setProperty( + "org.onap.dmaap.datarouter.provserver.properties", + "src/test/resources/h2Database.properties"); + InternalServlet internalServlet = new InternalServlet(); + } + + + @AfterClass + public static void tearDownClass() { + em.clear(); + em.close(); + emf.close(); + } + + + @Test + public void Verify_File_Processing_when_Req_Type_LOG() throws IOException { + String fileContent = "2018-08-29-10-10-10-543.|LOG|1|1|url/file123|method|1|1|type|1|128.0.0.9|user123|2|1|1|1|other|1"; + int[] actual = lfl.process(prepFile(fileContent)); + int[] expect = {0, 1}; + Assert.assertArrayEquals(expect, actual); + } + + + @Test + public void Verify_File_Processing_when_Req_Type_EXP() throws IOException { + String fileContent = "2018-08-29-10-10-10-543.|EXP|1|1|1|'url/file123'|method|ctype|3|other|4"; + int[] actual = lfl.process(prepFile(fileContent)); + int[] expect = {0, 1}; + Assert.assertArrayEquals(expect, actual); + } + + + @Test + public void Verify_Records_Prune_When_Record_Count_Is_Less_Then_Threshold() throws IOException{ + String fileContent = "2018-08-29-10-10-10-543.|PUB|1|1|https://dmaap-dr-prov:8443/publish/1/file123/|POST|application/vnd.att-dr.feed|2|128.0.0.9|user123|200"; + lfl.process(prepFile(fileContent)); + PowerMockito.mockStatic(Parameters.class); + PowerMockito.when(Parameters.getParameter(Parameters.PROV_LOG_RETENTION)).thenReturn(new Parameters(Parameters.PROV_LOG_RETENTION, "0")); + Assert.assertEquals(lfl.pruneRecords(), false); + } + + + @Test + public void Verify_Histogram_When_Request_Type_Post() throws Exception { + String fileContent = "2018-08-29-10-10-10-543.|PUB|1|1|https://dmaap-dr-prov:8443/publish/1/file123/|POST|application/vnd.att-dr.feed|2|128.0.0.9|user123|200"; + lfl.process(prepFile(fileContent)); + Map expect = new HashMap<>(); + expect.put(17772L,2L); + expect.put(29353L,1L); + Map actual = lfl.getHistogram(); + assertTrue(actual.equals(expect)); + } + + + private File prepFile(String content) throws IOException{ + File file1 = folder.newFile("myfile1.txt"); + try (FileWriter fileWriter = new FileWriter(file1)) { + fileWriter.write(content); + }catch (IOException e){ + System.out.println(e.getMessage()); + } + return file1; + } +} -- 2.16.6