mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

boli
26.15.2006 1dc8138328c6cdca83032b13b092896cf31c91d6
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.

Fix for issue 720.

4 files modified
223 ■■■■ changed files
opendj-sdk/opends/build-tools/src/org/opends/build/tools/PrepTestNG.java 169 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/build.xml 33 ●●●● patch | view | raw | blame | history
opendj-sdk/opends/ext/build-tools.jar patch | view | raw | blame | history
opendj-sdk/opends/ext/testng/testng.xml 21 ●●●●● patch | view | raw | blame | history
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)
    {
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"
opendj-sdk/opends/ext/build-tools.jar
Binary files differ
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">