From 1dc8138328c6cdca83032b13b092896cf31c91d6 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Tue, 26 Sep 2006 16:15:31 +0000
Subject: [PATCH] Added the feature to only run specific tests by the group, package, class, and method levels. Please refer to the unit test documentation on the OpenDS website for more information.
---
opendj-sdk/opends/build-tools/src/org/opends/build/tools/PrepTestNG.java | 169 +++++++++++++++++++++++++++++++++++++++--
opendj-sdk/opends/build.xml | 33 +++++++-
opendj-sdk/opends/ext/build-tools.jar | 0
opendj-sdk/opends/ext/testng/testng.xml | 21 -----
4 files changed, 187 insertions(+), 36 deletions(-)
diff --git a/opendj-sdk/opends/build-tools/src/org/opends/build/tools/PrepTestNG.java b/opendj-sdk/opends/build-tools/src/org/opends/build/tools/PrepTestNG.java
index 6b33ada..66fb636 100644
--- a/opendj-sdk/opends/build-tools/src/org/opends/build/tools/PrepTestNG.java
+++ b/opendj-sdk/opends/build-tools/src/org/opends/build/tools/PrepTestNG.java
@@ -24,6 +24,32 @@
*
* Portions Copyright 2006 Sun Microsystems, Inc.
*/
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * You can obtain a copy of the license at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ * add the following below this CDDL HEADER, with the fields enclosed
+ * by brackets "[]" replaced with your own identifying * information:
+ * Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ *
+ *
+ * Portions Copyright 2006 Sun Microsystems, Inc.
+ */
package org.opends.build.tools;
@@ -40,6 +66,9 @@
private String file;
private String toFile;
private String groupList;
+ private String packageList;
+ private String classList;
+ private String methodList;
public void setFile(String file)
{
@@ -56,6 +85,21 @@
this.groupList = groupList;
}
+ public void setPackageList(String packageList)
+ {
+ this.packageList = packageList;
+ }
+
+ public void setClassList(String classList)
+ {
+ this.classList = classList;
+ }
+
+ public void setMethodList(String methodList)
+ {
+ this.methodList = methodList;
+ }
+
public void execute() throws BuildException
{
if(file == null)
@@ -75,8 +119,18 @@
PrintStream writer;
String line;
String[] groups;
+ String[] packages;
+ String[] classes;
+ String[] methods;
String[] groupLine;
- int replaced = 0;
+ String[] methodLine;
+ String methodClass;
+ String methodName;
+ int methodNameStartIdx;
+ int groupCount = 0;
+ int packageCount = 0;
+ int classCount = 0;
+ int methodCount = 0;
try
{
@@ -87,7 +141,8 @@
line = reader.readLine();
- if(groupList != null && groupList.trim() != "")
+ if(groupList != null && !groupList.trim().equals("") &&
+ !groupList.startsWith("${"))
{
groups = groupList.split(",");
}
@@ -96,25 +151,115 @@
groups = new String[0];
}
+ if(packageList != null && !packageList.trim().equals("") &&
+ !packageList.startsWith("${"))
+ {
+ packages = packageList.split(",");
+ }
+ else
+ {
+ packages = new String[0];
+ }
+
+ if(classList != null && !classList.trim().equals("") &&
+ !classList.startsWith("${"))
+ {
+ classes = classList.split(",");
+ }
+ else
+ {
+ classes = new String[0];
+ }
+
+ if(methodList != null && !methodList.trim().equals("") &&
+ !methodList.startsWith("${"))
+ {
+ methods = methodList.split(";");
+ }
+ else
+ {
+ methods = new String[0];
+ }
+
while(line != null)
{
- if(line.indexOf("<!-- THIS WILL BE REPLACED WITH GROUP INFO BY " +
- "ANT -->") >= 0)
+ if(line.indexOf("<!-- DO NOT REMOVE! - THIS LINE WILL BE " +
+ "REPLACED WITH TAGS GENERATED BY ANT -->") >= 0)
{
- if(groups.length > 0 && groupList.trim() != "")
+ if(groups.length > 0 && groupList.trim().equals(""))
{
- writer.println("<groups>\n<run>");
+ writer.println("<groups>\n <run>");
for(String group : groups)
{
groupLine = group.split("=");
if(groupLine.length == 2)
{
- writer.println("<"+groupLine[0]+" " +
- "name=\""+groupLine[1] + "\" />\n");
- replaced++;
+ writer.println(" <"+groupLine[0].trim()+" " +
+ "name=\""+groupLine[1].trim() + "\" />");
+ groupCount++;
}
}
- writer.println("</run>\n</groups>");
+ writer.println(" </run>\n</groups>");
+ }
+
+ if(packages.length > 0)
+ {
+ writer.println("<packages>");
+ for(String pkg : packages)
+ {
+ writer.println(" <package name=\"" + pkg.trim() + "\" />");
+
+ packageCount++;
+ }
+ writer.println("</packages>");
+ }
+
+ if(classes.length > 0 || methods.length > 0)
+ {
+ writer.println("<classes>");
+
+ if(classes.length > 0)
+ {
+ for(String cls : classes)
+ {
+ writer.println(" <class name=\"" + cls.trim() + "\" />");
+
+ classCount++;
+ }
+ }
+
+ if(methods.length > 0)
+ {
+ for(String mhd : methods)
+ {
+ methodLine = mhd.split(",");
+ if(methodLine.length > 0)
+ {
+ methodNameStartIdx = methodLine[0].lastIndexOf(".");
+ methodClass = methodLine[0].substring(0,
+ methodNameStartIdx);
+ methodName = methodLine[0].substring(methodNameStartIdx + 1,
+ methodLine[0].length());
+ writer.println(" <class name=\"" +
+ methodClass.trim() + "\" >");
+ writer.println(" <methods>");
+ writer.println(" <include name=\"" +
+ methodName.trim() + "\" />");
+ methodCount++;
+ classCount++;
+ for(int i = 1; i < methodLine.length; i ++)
+ {
+ writer.println(" <include name=\"" +
+ methodLine[i].trim() + "\" />");
+ methodCount++;
+ }
+ writer.println(" </methods>");
+ writer.println("</class>");
+ }
+ }
+ }
+
+ writer.println("</classes>");
}
}
else
@@ -125,7 +270,9 @@
line = reader.readLine();
}
- System.out.println("Adding " + replaced + " group tags to " + toFile);
+ System.out.println("Adding " + groupCount + " group tags, " +
+ packageCount + " package tags, " + classCount + " class tags, " +
+ methodCount + " method tags to " + toFile);
}
catch(Exception e)
{
diff --git a/opendj-sdk/opends/build.xml b/opendj-sdk/opends/build.xml
index 32c3d61..c3d9cf8 100644
--- a/opendj-sdk/opends/build.xml
+++ b/opendj-sdk/opends/build.xml
@@ -104,8 +104,6 @@
<property name="dynconstants.stubfile"
location="${resource.dir}/DynamicConstants.java.stubs" />
-
-
<property file="PRODUCT" />
@@ -597,7 +595,11 @@
<preptestng file="${testng.dir}/testng.xml"
tofile="${unittest.resource.dir}/testng.xml"
- grouplist="${test.groups}" />
+ grouplist="${test.groups}"
+ packagelist="${test.packages}"
+ classList="${test.classes}"
+ methodList="${test.methods}" />
+
</target>
@@ -609,10 +611,15 @@
<property name="TESTASSERT" value="true"/>
</target>
+ <!-- Execute Directory Server TestNG unit tests specified from CLI -->
+ <target name="testcustom"
+ depends="testinit,runtests"
+ description="Execute the Directory Server TestNG unit tests specified from CLI.">
+ </target>
<!-- Execute all of the Directory Server TestNG unit tests in text mode. -->
<target name="testall"
- depends="enableTestNGAssertions,testinit,runtests"
+ depends="enableTestNGAssertions,prepdefaultalltest,testinit,runtests"
description="Run all of the TestNG tests.">
</target>
@@ -635,6 +642,12 @@
description="Execute the Directory Server TestNG unit tests in text mode with a coverage report.">
</target>
+ <!-- Execute the Directory Server TestNG unit tests specified from CLI in text mode with a coverage report. -->
+ <target name="testcustomwithcoverage"
+ depends="coverage,testcustom"
+ description="Execute the Directory Server TestNG unit tests specified from CLI in text mode with a coverage report.">
+ </target>
+
<!-- Internal target to execute the Directory Server TestNG unit tests in text mode after everything has been initialized. -->
<target name="runtests">
<mkdir dir="${unittest.report.dir}" />
@@ -692,9 +705,19 @@
</target>
- <!-- Internal target used to set the group list property for the preptestng task -->
+ <!-- Internal target used to set the properties for the preptestng task -->
<target name="prepdefaulttest">
<property name="test.groups" value="exclude=slow" />
+ <property name="test.packages" value="org.opends.server.*" />
+ <property name="test.classes" value="" />
+ <property name="test.methods" value="" />
+ </target>
+
+ <target name="prepdefaultalltest">
+ <property name="test.groups" value="" />
+ <property name="test.packages" value="org.opends.server.*" />
+ <property name="test.classes" value="" />
+ <property name="test.methods" value="" />
</target>
<target name="testreport"
diff --git a/opendj-sdk/opends/ext/build-tools.jar b/opendj-sdk/opends/ext/build-tools.jar
index 31f2da3..ad47bad 100644
--- a/opendj-sdk/opends/ext/build-tools.jar
+++ b/opendj-sdk/opends/ext/build-tools.jar
Binary files differ
diff --git a/opendj-sdk/opends/ext/testng/testng.xml b/opendj-sdk/opends/ext/testng/testng.xml
index 79462c1..2f59930 100644
--- a/opendj-sdk/opends/ext/testng/testng.xml
+++ b/opendj-sdk/opends/ext/testng/testng.xml
@@ -1,26 +1,7 @@
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="OpenDS" verbose="1" >
<test name="default">
- <!-- THIS WILL BE REPLACED WITH GROUP INFO BY ANT -->
- <packages>
- <package name="org.opends.server.protocols.asn1"/>
- <package name="org.opends.server.protocols.internal"/>
- <package name="org.opends.server.protocols.ldap"/>
- <package name="org.opends.server.core"/>
- <package name="org.opends.server.backends.jeb"/>
- <package name="org.opends.server.synchronization"/>
- <package name="org.opends.server.protocols.jmx"/>
- <package name="org.opends.server.util"/>
- <package name="org.opends.server.schema"/>
- <package name="org.opends.server.monitors"/>
- <package name="org.opends.server.extensions"/>
- <package name="org.opends.server.tasks"/>
- <package name="org.opends.server.plugins"/>
- <package name="org.opends.server.types"/>
- <package name="org.opends.server.changelog"/>
- <package name="org.opends.server.api"/>
- <package name="org.opends.server.controls"/>
- </packages>
+ <!-- DO NOT REMOVE! - THIS LINE WILL BE REPLACED WITH TAGS GENERATED BY ANT -->
</test>
<test name="precommit">
--
Gitblit v1.10.0