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

boli
26.15.2006 d80b714726dcbc88f32cb282c7523c2441353934
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
219 ■■■■ changed files
opends/build-tools/src/org/opends/build/tools/PrepTestNG.java 165 ●●●●● patch | view | raw | blame | history
opends/build.xml 33 ●●●● patch | view | raw | blame | history
opends/ext/build-tools.jar patch | view | raw | blame | history
opends/ext/testng/testng.xml 21 ●●●●● patch | view | raw | blame | history
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,12 +151,42 @@
        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>");
            for(String group : groups)
@@ -109,13 +194,73 @@
              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>");
          }
          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)
    {
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"
opends/ext/build-tools.jar
Binary files differ
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">