From 8312e8e46d34547a69090a971db426d8df058e9f Mon Sep 17 00:00:00 2001
From: Violette Roche-Montane <violette.roche-montane@forgerock.com>
Date: Tue, 18 Jun 2013 09:36:39 +0000
Subject: [PATCH] Modified test cases on upgrade tool.
---
opends/tests/unit-tests-testng/src/server/org/opends/server/tools/UpgradeTestCase.java | 252 ++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 212 insertions(+), 40 deletions(-)
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/UpgradeTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/UpgradeTestCase.java
index b07510c..feaaf67 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/UpgradeTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/tools/UpgradeTestCase.java
@@ -26,15 +26,24 @@
*/
package org.opends.server.tools;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
import java.io.IOException;
+import java.io.PrintStream;
+import java.util.LinkedList;
+import java.util.List;
+import org.opends.messages.Message;
import org.opends.server.TestCaseUtils;
import org.opends.server.config.ConfigException;
+import org.opends.server.core.DirectoryServer;
import org.opends.server.tools.upgrade.UpgradeCli;
import org.opends.server.types.DirectoryException;
import org.opends.server.types.InitializationException;
import org.testng.annotations.Test;
+import static org.opends.messages.ToolMessages.*;
+import static org.opends.server.tools.ToolConstants.OPTION_LONG_FORCE_UPGRADE;
import static org.testng.Assert.*;
/**
@@ -42,68 +51,231 @@
*/
public class UpgradeTestCase extends ToolsTestCase
{
+ private final static String configFilePath = DirectoryServer
+ .getInstanceRoot()
+ + File.separator + "config" + File.separator + "config.ldif";
+
/**
- * Tests the Upgrade tool with an argument that will simply cause it to
- * display usage information.
+ * Sets the args for the upgrade tools. The configFile parameter is
+ * configured by default.<pre>
+ * usage : {@code}setArgs("--force", "--no-prompt") {@code}
+ * corresponds to command line : ./upgrade --force -n</pre>
+ *
+ * @param args
+ * The argument you want for testing.
+ * @return An array of string containing the args.
*/
- @Test()
- public void testUpgradeToolHelpUsage()
+ private String[] setArgs(String... args)
{
- String[] args = { "--help" };
- assertEquals(UpgradeCli.main(args, true, System.out, System.err), 0);
+ final List<String> argsList = new LinkedList<String>();
+ argsList.add("--configFile");
+ argsList.add(configFilePath);
+ if (args != null)
+ {
+ for (final String argument : args)
+ {
+ argsList.add(argument);
+ }
+ }
+ final String[] mainArgs = new String[argsList.size()];
+ argsList.toArray(mainArgs);
- args = new String[] { "-H" };
- assertEquals(LDIFDiff.mainDiff(args, true, System.out, System.err), 0);
-
- args = new String[] { "-?" };
- assertEquals(LDIFDiff.mainDiff(args, true, System.out, System.err), 0);
+ return mainArgs;
}
/**
- * Tests the Upgrade tool with wrong sub-command.
+ * Returns {@code true} if the output contain the expected message.
+ *
+ * @param output
+ * The upgrade's output.
+ * @param expectedMessage
+ * The expected message.
+ * @return {@code true} if the output contains the expected message.
*/
- @Test()
- public void testUpgradeToolWrongSubcommand()
+ private boolean isOutputContainsExpectedMessage(final String output,
+ final Message expectedMessage)
{
- String[] args = { "-- wrong" };
- assertEquals(UpgradeCli.main(args, true, System.out, System.err), 1);
-
- args = new String[]{ "--wrong" };
- assertEquals(UpgradeCli.main(args, true, System.out, System.err), 1);
+ return (output.replaceAll("\n", " ").replaceAll("%s", " ").indexOf(
+ expectedMessage.toString().replaceAll("\n", " ")
+ .replaceAll("%s", " ")) != -1);
}
/**
- * Tests the Upgrade tool with unauthorized usage.
+ * Tests display help information.
*/
@Test()
- public void testUpgradeToolUnauthorizedUsage()
+ public void testUpgradeToolDisplaysHelpUsage()
{
- // Interactive mode is not compatible with forceUpgrade mode.
- String[] args = { "--forceUpgrade" };
- assertEquals(UpgradeCli.main(args, true, System.out, System.err), 1);
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final PrintStream ps = new PrintStream(baos);
+
+ try
+ {
+ // The 'main' should exit with success code.
+ assertEquals(UpgradeCli.main(setArgs("--help"), true, ps, ps), 0);
+
+ assertTrue(isOutputContainsExpectedMessage(baos.toString(),
+ INFO_UPGRADE_DESCRIPTION_CLI.get()));
+ }
+ finally
+ {
+ ps.close();
+ }
}
/**
- * Tests the Upgrade tool with a running server throws an error.
+ * Tests display help information.
*/
@Test()
- public void testUpgradeRequiresServerOffline() throws InitializationException,
- ConfigException, DirectoryException, IOException
+ public void testUpgradeToolDisplaysHelpUsage2()
+ {
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final PrintStream ps = new PrintStream(baos);
+
+ try
+ {
+ // The 'main' should exit with success code.
+ assertEquals(UpgradeCli.main(setArgs("-H"), true, ps, ps), 0);
+
+ assertTrue(isOutputContainsExpectedMessage(baos.toString(),
+ INFO_UPGRADE_DESCRIPTION_CLI.get()));
+ }
+ finally
+ {
+ ps.close();
+ }
+ }
+
+ /**
+ * Tests display help information.
+ */
+ @Test()
+ public void testUpgradeToolDisplaysHelpUsage3()
+ {
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final PrintStream ps = new PrintStream(baos);
+
+ try
+ {
+ // The 'main' should exit with success code.
+ assertEquals(UpgradeCli.main(setArgs("-?"), true, ps, ps), 0);
+
+ assertTrue(isOutputContainsExpectedMessage(baos.toString(),
+ INFO_UPGRADE_DESCRIPTION_CLI.get()));
+ }
+ finally
+ {
+ ps.close();
+ }
+ }
+
+ /**
+ * Tests the upgrade tool with an invalid sub-command.
+ */
+ @Test()
+ public void testUpgradeToolDoesntAllowWrongSubcommand()
+ {
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final PrintStream ps = new PrintStream(baos);
+
+ try
+ {
+ // The 'main' should exit with an error code.
+ assertEquals(UpgradeCli.main(setArgs("-- wrong"), true, ps, ps), 1);
+
+ assertTrue(isOutputContainsExpectedMessage(baos.toString(),
+ ERR_ERROR_PARSING_ARGS.get("")));
+ }
+ finally
+ {
+ ps.close();
+ }
+ }
+
+ /**
+ * Tests the upgrade tool with an invalid sub-command.
+ */
+ @Test()
+ public void testUpgradeToolDoesntAllowWrongSubcommand2()
+ {
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final PrintStream ps = new PrintStream(baos);
+
+ try
+ {
+ // The 'main' should exit with an error code.
+ assertEquals(UpgradeCli.main(setArgs("--wrong"), true, ps, ps), 1);
+
+ assertTrue(isOutputContainsExpectedMessage(baos.toString(),
+ ERR_ERROR_PARSING_ARGS.get("")));
+ }
+ finally
+ {
+ ps.close();
+ }
+ }
+
+ /**
+ * The upgrade tool disallows the force sub-command used with 'interactive
+ * mode'.
+ */
+ @Test()
+ public void testUpgradeToolDoesntAllowInteractiveAndForce()
+ {
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final PrintStream ps = new PrintStream(baos);
+ try
+ {
+ // The 'main' should exit with an error code.
+ assertEquals(UpgradeCli.main(setArgs("--force"), true, ps, ps), 1);
+
+ // Because interactive mode is not compatible with force upgrade mode.
+ final Message message =
+ ERR_UPGRADE_INCOMPATIBLE_ARGS.get(OPTION_LONG_FORCE_UPGRADE,
+ "interactive mode");
+
+ assertTrue(isOutputContainsExpectedMessage(baos.toString(), message));
+ }
+ finally
+ {
+ ps.close();
+ }
+ }
+
+ /**
+ * Upgrade tool allows use of force and no-prompt sub-commands.
+ *
+ * @throws IOException
+ * @throws DirectoryException
+ * @throws ConfigException
+ * @throws InitializationException
+ */
+ @Test()
+ public void testUpgradeToolAllowsNonInteractiveAndForce()
+ throws InitializationException, ConfigException, DirectoryException,
+ IOException
{
TestCaseUtils.startServer();
- String[] args = { "" };
- assertEquals(UpgradeCli.main(args, true, System.out, System.err), 1);
- TestCaseUtils.shutdownServer("End of upgrade test.");
- }
- /**
- * Tests the upgrade with an offline server and empty args fails.
- */
- @Test()
- public void testUpgradeServerOfflineEmptyArgs() throws InitializationException,
- ConfigException, DirectoryException, IOException
- {
- String[] args = { "" };
- assertEquals(UpgradeCli.main(args, true, System.out, System.err), 1);
+ final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ final PrintStream ps = new PrintStream(baos);
+ try
+ {
+ // The 'main' should exit with success code.
+ assertEquals(UpgradeCli.main(setArgs("--force", "--no-prompt"), true, ps,
+ ps), 0);
+
+ // The sub-commands have been checked ok but upgrade must exist on
+ // version's verification.
+ assertTrue(isOutputContainsExpectedMessage(baos.toString(),
+ ERR_UPGRADE_VERSION_UP_TO_DATE.get("")));
+
+ }
+ finally
+ {
+ ps.close();
+ TestCaseUtils
+ .shutdownServer("testUpgradeToolAllowsNonInteractiveAndForce");
+ }
}
}
--
Gitblit v1.10.0