From 3070174573f3217558d17db2a57815963a2cb027 Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Thu, 15 Jan 2015 09:26:10 +0000
Subject: [PATCH] OPENDJ-1693 OPENDJ-1694 OPENDJ-1721 (CR-5748) addrate tool new version This version includes     *Bug fixes         ** OPENDJ-1693: Solve NoSuchElementException by checking race conditions.         ** OPENDJ-1694: Changes the age threshold feature implementation.     *Improvement: Adding purge phase

---
 opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/AddRateITCase.java |  120 ++++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 68 insertions(+), 52 deletions(-)

diff --git a/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/AddRateITCase.java b/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/AddRateITCase.java
index cabd601..eb6b999 100644
--- a/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/AddRateITCase.java
+++ b/opendj-ldap-toolkit/src/test/java/com/forgerock/opendj/ldap/tools/AddRateITCase.java
@@ -21,55 +21,54 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2014 ForgeRock AS.
+ *      Copyright 2014-2015 ForgeRock AS.
  */
 package com.forgerock.opendj.ldap.tools;
 
-import static com.forgerock.opendj.ldap.tools.ToolsMessages.ERR_ADDRATE_DELMODE_OFF_THRESHOLD_ON;
-import static com.forgerock.opendj.ldap.tools.ToolsMessages.ERR_ADDRATE_DELMODE_RAND_THRESHOLD_AGE;
-import static com.forgerock.opendj.ldap.tools.ToolsMessages.ERR_ADDRATE_THRESHOLD_SIZE_AND_AGE;
-import static com.forgerock.opendj.ldap.tools.ToolsMessages.INFO_ADDRATE_TOOL_DESCRIPTION;
-import static org.fest.assertions.Assertions.assertThat;
-import static org.forgerock.util.Utils.closeSilently;
+import static org.fest.assertions.Assertions.*;
+import static org.forgerock.util.Utils.*;
+
+import static com.forgerock.opendj.ldap.tools.ToolsMessages.*;
 
 import java.io.PrintStream;
 
 import org.forgerock.opendj.ldap.ByteStringBuilder;
 import org.forgerock.opendj.ldap.TestCaseUtils;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
 public class AddRateITCase extends ToolsITCase {
+
     private static final String TEMPLATE_NAME = "addrate.template";
     private static final String ADD_PERCENT_TEXT = "Add%";
     private static final int THROUGHPUT_COLUMN = 1;
     private static final int ERR_PER_SEC_COLUMN_NUMBER = 8;
 
-    @DataProvider
-    public Object[][] addRateArgs() throws Exception {
-        String[] commonArgs =
-            args("-h", TestCaseUtils.getServerSocketAddress().getHostName(),
-                "-p", Integer.toString(TestCaseUtils.getServerSocketAddress().getPort()),
-                "-c", "1", "-t", "1", "-i", "1", "-m", "1000", "-S");
+    private ByteStringBuilder out;
+    private ByteStringBuilder err;
+    private PrintStream outStream;
+    private PrintStream errStream;
 
-        return new Object[][] {
-            // Check if the help message is correctly prompted
-            { args("-H"), INFO_ADDRATE_TOOL_DESCRIPTION.get(), "" },
+    @BeforeMethod
+    private void refreshStreams() {
+        out = new ByteStringBuilder();
+        err = new ByteStringBuilder();
+        outStream = new PrintStream(out.asOutputStream());
+        errStream = new PrintStream(err.asOutputStream());
+    }
 
-            // Should report inconsistent use of options
-            { args(commonArgs, "-C", "off", "-a", "3", TEMPLATE_NAME), "",
-                ERR_ADDRATE_DELMODE_OFF_THRESHOLD_ON.get() },
-            { args(commonArgs, "-C", "off", "-s", "30000", TEMPLATE_NAME), "",
-                ERR_ADDRATE_DELMODE_OFF_THRESHOLD_ON.get() },
-            { args(commonArgs, "-C", "fifo", "-a", "3", "-s", "20000", TEMPLATE_NAME), "",
-                ERR_ADDRATE_THRESHOLD_SIZE_AND_AGE.get() },
-            { args(commonArgs, "-C", "random", "-a", "3", TEMPLATE_NAME), "",
-                ERR_ADDRATE_DELMODE_RAND_THRESHOLD_AGE.get() },
+    @AfterMethod
+    private void closeStreams() {
+        closeSilently(outStream, errStream);
+    }
 
-            // Correct test case
-            { args(commonArgs, "-s", "10", TEMPLATE_NAME), ADD_PERCENT_TEXT, "" },
-
-        };
+    private String[] commonsArgs() {
+        return new String[] {
+            "-h", TestCaseUtils.getServerSocketAddress().getHostName(),
+            "-p", Integer.toString(TestCaseUtils.getServerSocketAddress().getPort()),
+            "-c", "1", "-t", "1", "-i", "1", "-m", "100", "-S"};
     }
 
     public String[] args(String[] startLine, String... args) {
@@ -81,34 +80,51 @@
         return res;
     }
 
-    @Test(dataProvider = "addRateArgs")
-    public void testITAddRate(String[] arguments, Object expectedOut, Object expectedErr) throws Exception {
-        ByteStringBuilder out = new ByteStringBuilder();
-        ByteStringBuilder err = new ByteStringBuilder();
+    @DataProvider
+    public Object[][] invalidAddRateArgs() throws Exception {
+        return new Object[][] {
+            // Should report inconsistent use of options
+            { args("-C", "off", "-a", "3", TEMPLATE_NAME), ERR_ADDRATE_DELMODE_OFF_THRESHOLD_ON.get() },
+            { args("-C", "off", "-s", "30000", TEMPLATE_NAME), ERR_ADDRATE_DELMODE_OFF_THRESHOLD_ON.get() },
+            { args("-C", "fifo", "-a", "3", "-s", "20000", TEMPLATE_NAME), ERR_ADDRATE_THRESHOLD_SIZE_AND_AGE.get() },
+            { args("-C", "random", "-a", "3", TEMPLATE_NAME), ERR_ADDRATE_DELMODE_RAND_THRESHOLD_AGE.get() },
+            { args("-s", "999", TEMPLATE_NAME), ERR_ADDRATE_SIZE_THRESHOLD_LOWER_THAN_ITERATIONS.get() }
+        };
+    }
 
-        PrintStream outStream = new PrintStream(out.asOutputStream());
-        PrintStream errStream = new PrintStream(err.asOutputStream());
+    @Test(dataProvider = "invalidAddRateArgs")
+    public void addRateExceptions(String[] arguments, Object expectedErr) throws Exception {
+        AddRate addRate = new AddRate(outStream, errStream);
+        int retCode = addRate.run(args(commonsArgs(), arguments));
+        checkOuputStreams(out, err, "", expectedErr);
+        assertThat(retCode).isNotEqualTo(0);
+    }
 
-        try {
-            AddRate addRate = new AddRate(outStream, errStream);
-            addRate.run(arguments);
+    @Test
+    public void addRateDisplaysHelp() throws Exception {
+        AddRate addRate = new AddRate(outStream, errStream);
+        int retCode = addRate.run(args("-H"));
+        checkOuputStreams(out, err, INFO_ADDRATE_TOOL_DESCRIPTION.get(), "");
+        assertThat(retCode).isEqualTo(0);
+    }
 
-            checkOuputStreams(out, err, expectedOut, expectedErr);
-            String outContent = out.toString();
+    @Test(timeOut = 10000)
+    public void addRateSimpleRun() throws Exception {
+        AddRate addRate = new AddRate(outStream, errStream);
+        int retCode = addRate.run(args(commonsArgs(), "-s", "10", TEMPLATE_NAME));
+        checkOuputStreams(out, err, ADD_PERCENT_TEXT, "");
+        assertThat(retCode).isEqualTo(0);
+        String outContent = out.toString();
 
-            if (outContent.contains(ADD_PERCENT_TEXT)) {
-                // Check that there was no error in search
-                String[] addRateResLines = outContent.split(System.getProperty("line.separator"));
-                // Skip header line
-                for (int i = 1; i < addRateResLines.length; i++) {
-                    String[] addhRateLineData = addRateResLines[i].split(",");
-                    assertThat(addhRateLineData[ERR_PER_SEC_COLUMN_NUMBER].trim()).isEqualTo("0.0");
-                    assertThat(addhRateLineData[THROUGHPUT_COLUMN].trim()).isNotEqualTo("0.0");
-                }
-
+        if (outContent.contains(ADD_PERCENT_TEXT)) {
+            // Check that there was no error
+            String[] addRateResLines = outContent.split(System.getProperty("line.separator"));
+            // Skip header line
+            for (int i = 1; i < addRateResLines.length; i++) {
+                String[] lineData = addRateResLines[i].split(",");
+                assertThat(lineData[ERR_PER_SEC_COLUMN_NUMBER].trim()).isEqualTo("0.0");
+                assertThat(lineData[THROUGHPUT_COLUMN].trim()).isNotEqualTo("0.0");
             }
-        } finally {
-            closeSilently(outStream, errStream);
         }
     }
 

--
Gitblit v1.10.0