You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/08/12 17:23:08 UTC
svn commit: r232310 [51/92] - in /beehive/trunk/controls/test: common/
infra/gtlf/ infra/gtlf/xsl/ infra/mantis/ infra/tch/ infra/tch/messages/
infra/tch/runtime/ infra/tch/schema/ perf/ perf/bin/ perf/cases/
perf/ctlsrc/org/apache/beehive/controls/per...
Modified: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/Filter.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/Filter.java?rev=232310&r1=232309&r2=232310&view=diff
==============================================================================
--- beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/Filter.java (original)
+++ beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/Filter.java Fri Aug 12 08:12:28 2005
@@ -1,726 +1,726 @@
-package org.apache.beehive.test.tools.tch.core;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.regexp.RE;
-import org.apache.tools.ant.BuildException;
-
-import org.apache.beehive.test.tools.tch.util.CaseInsensitiveStringKey;
-import org.apache.beehive.test.tools.tch.util.GeneralUtil;
-import org.apache.beehive.test.tools.tch.util.NoopCollection;
-
-/**
- * This class represent all information that can filter
- * the set of tests to be executed
- * Created upon startup, and then passed around to the right tasks
- */
-
-public class Filter
-{
- private static final String SELECT_ALL = "all";
- private static final String SELECT_NONE = "none";
- private static final String SELECT_ANY = "any";
-
- private static final String OS_NAME_SYS_PROP = "os.name";
- private static final String JAVA_VERSION_SYS_PROP = "java.version";
-
- public static final String DEFAULT_STATUS = "active";
-
- //Filterable quantities, can be null if not filtered
- private Integer filterTestLevel = null;
- private Collection filterWebapps= null;
- private Collection filterFrequencies = null;
- private Collection filterServerModes = null;
- private Collection filterOwnerList = null;
- private Collection filterConversations = null;
- private Collection filterDomains = null;
- private Collection filterMiscInfos = null;
- private Collection filterCRList = null;
- private Collection filterDBs = null;
- private boolean matchAllCRs = false; //"or" by default
- private Boolean filterKnownFailures = null;
- private Boolean filterSSLRestriction = null;
- private String filterClientType = null;
- private String filterSecurityType = null;
- private String filterStatus = DEFAULT_STATUS;
-
- private TestMetadataTask testMetadata = new TestMetadataTask();
- //Don't call perform on these, just dummies
- private TestMetadataTask testSuiteMetadata = new TestMetadataTask();
-
- public Filter()
- {
- setOwner();
- setDomains();
- setDBs();
- setMiscInfos();
- setStatus();
- setConversations();
- setFrequencies();
- setWebapps();
- setServerModes();
- setTestLevel();
- setCRList();
- setKnownFailures();
- setSSLRestriction();
- setClientType();
- setSecurityType();
- }
-
- // FIXME: Change this class to take n metadatas!!!!
-
- public void setTestMetadata(List list)
- {
- if (list.size() > 0)
- if (list.size() == 1)
- testMetadata = (TestMetadataTask)list.get(0);
- else
- {
- testSuiteMetadata = (TestMetadataTask)list.get(list.size() - 1);
- testMetadata = (TestMetadataTask)list.get(0);
- }
- }
-
- public void setTestSuiteMetadata(TestMetadataTask inTestSuiteMetadata)
- {}
-
- /**
- * This is the primary method of this class
- * Given all the configured data, decides
- * whether or not a test should be executed
- */
- public boolean pass()
- {
- org.apache.beehive.test.tools.tch.util.DebugLogger.log(
- "passTestLevel: " + passTestLevel());
- org.apache.beehive.test.tools.tch.util.DebugLogger.log("passCRList: " + passCRList());
-
- // always pass if we're running a subset of tests, since we specifically
- // specify the tests we want to run
-
- // Time to rethink the above assumption.
- // Since test-names now supports regex,
- // it would make sense to treat it in the same way as any other filter
- // This should be ok for test replication, as all tch.filter.* props
- // are "excluded" (from replication)
- // Making this behavior configurable for now
- if (AntProperties.isIndividualTestModeOn()
- && !AntProperties.isFilterAdoptTestNamesEnabled())
- return true;
-
- try
- {
- if (passTestLevel()
- && passCondition()
- && passCRList()
- && passFrequencies()
- && passWebapps()
- && passDomains()
- && passStatus()
- && passOwner()
- && passDBs()
- && passMiscInfos()
- && passConversations()
- && passKnownFailures()
- && passServerModes()
- && passSSLRestriction() // deprecated
- && passOSRestriction()
- && passOS()
- && passJavaRestriction()
- && passClientType()
- && passSecurityType()
- && (AntProperties.getTestInfo() == null
- || AntProperties.getTestInfoAlsoRun()))
- return true;
- else
- return false;
- }
- catch (AntProperties.AntPropertiesException ex)
- {
- throw new BuildException(ex.getMessage(), ex);
- }
-
- }
-
- private boolean passStatus()
- {
- if (filterStatus != null)
- {
- if (testMetadata.getStatus() != null)
- return filterStatus.equals(testMetadata.getStatus());
- else if (testSuiteMetadata.getStatus() != null)
- return filterStatus.equals(testSuiteMetadata.getStatus());
- else
- return false;
- }
- else
- return true; //no filter
- }
-
- private boolean passDBs()
- {
- if (filterDBs != null)
- {
- if (testMetadata.getDB() != null)
- return checkDBs(testMetadata.getDB());
- else if (testSuiteMetadata.getDB() != null)
- return checkDBs(testSuiteMetadata.getDB());
- else
- return true;
- }
- else
- return true; //no filter
- }
-
- private boolean passOwner()
- {
- // we only allow one owner per test at this point
- // if no owner is specified for a test, but
- // tch.filter.owners is set on the command line,
- // the test will not run
-
- if (filterOwnerList != null)
- {
- if (testMetadata.getOwner() != null)
- return filterOwnerList.contains(testMetadata.getOwner());
- else if (testSuiteMetadata.getOwner() != null)
- return filterOwnerList.contains(testSuiteMetadata.getOwner());
- else
- return false;
- }
- else
- return true; //no filter
- }
-
- private boolean passKnownFailures()
- {
- // if tch.filter.knownFailures == true, run all tests that are known failures
- // if set to false, run all tests that are not known failures
- // if not set at all, run all tests
- if (filterKnownFailures != null)
- {
- if (testMetadata.getKnownFailure() != null)
- return filterKnownFailures.equals(testMetadata.getKnownFailure());
- else if (testSuiteMetadata.getKnownFailure() != null)
- return filterKnownFailures.equals(testSuiteMetadata.getKnownFailure());
- else
- return !filterKnownFailures.booleanValue();
- }
- else
- return true; //no filter
- }
-
- private boolean passTestLevel()
- {
- //Strict override
- if (filterTestLevel != null)
- {
- if (testMetadata.getTestLevels() != null)
- return checkTestLevels(testMetadata.getTestLevels());
- else if (testSuiteMetadata.getTestLevels() != null)
- return checkTestLevels(testSuiteMetadata.getTestLevels());
- else
- return true;
- //if no test level set, run tests. FIXME: Make a prop to return false here
- }
- else
- return true; //no filter
- }
-
- private boolean passFrequencies()
- {
- //Strict override
- if (filterFrequencies != null)
- {
- if (testMetadata.getFrequencies() != null)
- return checkFrequencies(testMetadata.getFrequencies());
- else if (testSuiteMetadata.getFrequencies() != null)
- return checkFrequencies(testSuiteMetadata.getFrequencies());
- else
- return true;
- }
- else
- return true; //no filter
- }
-
- private boolean passWebapps()
- {
- //Strict override
- if (filterWebapps != null)
- {
- if (testMetadata.getWebapps() != null)
- return checkWebapps(testMetadata.getWebapps());
- else if (testSuiteMetadata.getWebapps() != null)
- return checkWebapps(testSuiteMetadata.getWebapps());
- else
- return true;
- }
- else
- return true; //no filter
- }
-
- private boolean passDomains()
- {
- //Strict override
- if (filterDomains != null)
- {
- if (testMetadata.getDomains() != null)
- return checkDomains(testMetadata.getDomains());
- else if (testSuiteMetadata.getDomains() != null)
- return checkDomains(testSuiteMetadata.getDomains());
- else
- return true;
- }
- else
- return true; //no filter
- }
-
- private boolean passMiscInfos()
- {
- //Strict override
- if (filterMiscInfos != null)
- {
- if (testMetadata.getMiscInfo() != null)
- return checkMiscInfo(testMetadata.getMiscInfo());
- else if (testSuiteMetadata.getMiscInfo() != null)
- return checkMiscInfo(testSuiteMetadata.getMiscInfo());
- else
- return true;
- }
- else
- return true; //no filter
- }
-
- private boolean passConversations()
- {
- //Strict override
- if (filterConversations != null)
- {
- if (testMetadata.getConversations() != null)
- return checkConversations(testMetadata.getConversations());
- else if (testSuiteMetadata.getConversations() != null)
- return checkConversations(testSuiteMetadata.getConversations());
- else
- return false;
- // if test has no conversation metadata, and filter is set, do not run the test
- }
- else
- return true;
- }
-
- private boolean passServerModes()
- {
- //Strict override
- if (filterServerModes != null)
- {
- if (testMetadata.getServerModes() != null)
- return checkServerModes(testMetadata.getServerModes());
- else if (testSuiteMetadata.getServerModes() != null)
- return checkServerModes(testSuiteMetadata.getServerModes());
- else
- return true;
- }
- else
- return true; //no filter
- }
-
- private boolean passCondition()
- {
- boolean suiteCondPassed = true;
- if (!testSuiteMetadata.getConditions().isEmpty())
- suiteCondPassed = combineAndEvaluate(testSuiteMetadata.getConditions());
- if (suiteCondPassed)
- {
- if (!testMetadata.getConditions().isEmpty())
- return combineAndEvaluate(testMetadata.getConditions());
- }
- else
- return false;
- return true;
- }
-
- private boolean combineAndEvaluate(Collection conditions)
- {
- StringBuffer sb = new StringBuffer();
- for (Iterator iter = conditions.iterator(); iter.hasNext();)
- {
- sb.append(iter.next());
- if (iter.hasNext())
- sb.append(" & ");
- }
- return GeneralUtil.evalBooleanString(sb.toString());
- }
-
- private boolean passClientType()
- {
- //Strict override
- if (filterClientType != null)
- {
- if (!testMetadata.getClientTypes().isEmpty())
- {
- return checkClientType(testMetadata.getClientTypes());
- }
- else
- {
- if (!testSuiteMetadata.getClientTypes().isEmpty())
- {
- return checkClientType(testSuiteMetadata.getClientTypes());
- }
- }
- return true; //If nothing in metadata, passes filter
- }
- else
- return true; //no filter
- }
-
- private boolean passSecurityType()
- {
- //Strict override
- if (filterSecurityType != null)
- {
- if (!testMetadata.getSecurityTypes().isEmpty())
- {
- return checkSecurityType(testMetadata.getSecurityTypes());
- }
- else
- {
- if (!testSuiteMetadata.getSecurityTypes().isEmpty())
- {
- return checkSecurityType(testSuiteMetadata.getSecurityTypes());
- }
- }
- return true; //If nothing in metadata, passes filter
- }
- else
- return true; //no filter
- }
-
- private boolean passSSLRestriction()
- {
- //Strict override
- if (filterSSLRestriction != null)
- {
- if (testMetadata.getSSLRestriction() != null)
- {
- return filterSSLRestriction.equals(testMetadata.getSSLRestriction());
- }
- else
- {
- if (testSuiteMetadata.getSSLRestriction() != null)
- {
- return filterSSLRestriction.equals(
- testSuiteMetadata.getSSLRestriction());
- }
- }
- return true; //If nothing in metadata, passes filter
- }
- else
- return true; //no filter
- }
-
- private boolean passOS()
- {
- //Strict override
- if (testMetadata.getOses() != null)
- {
- return passOS(testMetadata.getOses());
- }
- else
- {
- if (testSuiteMetadata.getOses() != null)
- {
- return passOS(testSuiteMetadata.getOses());
- }
- }
- return true; //If nothing in metadata, passes filter
- }
-
- // deprecated
- private boolean passOSRestriction()
- {
- //Strict override
- if (testMetadata.getOSRestriction() != null)
- {
- return testMetadata.getOSRestriction().pass(OS_NAME_SYS_PROP);
- }
- else
- {
- if (testSuiteMetadata.getOSRestriction() != null)
- {
- return testSuiteMetadata.getOSRestriction().pass(OS_NAME_SYS_PROP);
- }
- }
- return true; //If nothing in metadata, passes filter
- }
-
- private boolean passOS(Collection inOses)
- {
- if (inOses.isEmpty())
- return true;
-
- return TestMetadataTask.matchesSystemProperty(
- OS_NAME_SYS_PROP,
- (String[])inOses.toArray(new String[] {}),
- true);
- }
-
- private boolean passJavaRestriction()
- {
- //Strict override
- if (testMetadata.getJavaRestriction() != null)
- {
- return testMetadata.getJavaRestriction().passVersion(
- JAVA_VERSION_SYS_PROP);
- }
- else
- {
- if (testSuiteMetadata.getJavaRestriction() != null)
- {
- return testSuiteMetadata.getJavaRestriction().passVersion(
- JAVA_VERSION_SYS_PROP);
- }
- }
- return true; //If nothing in metadata, passes filter
- }
-
- private boolean passCRList()
- {
- //This one checks both levels
- //if there is a match between the filter and the metadata at either
- //level, we pass it
- if (filterCRList != null)
- {
- Collection coll = null;
- if (testMetadata.getCRList() != null)
- {
- if (coll == null)
- coll = new HashSet();
- coll.addAll(testMetadata.getCRList());
- }
- if (testSuiteMetadata.getCRList() != null)
- {
- if (coll == null)
- coll = new HashSet();
- coll.addAll(testSuiteMetadata.getCRList());
- }
- return checkCRList(coll);
- }
- else
- return true; //no filter
- }
-
- private boolean checkCRList(Collection inCRList)
- {
- if (inCRList != null)
- {
- for (Iterator iter = filterCRList.iterator(); iter.hasNext();)
- {
- if (inCRList.contains(iter.next()))
- {
- if (!matchAllCRs)
- {
- return true; //just one match is enough to pass
- }
- }
- else
- {
- if (matchAllCRs)
- {
- return false; //just one mismatch is enough to fail
- }
- }
- }
- //if "or", should've been returned already
- //if "and", didn't get a miss, so we're ok
- return matchAllCRs;
- }
- else
- return false; // no matches because no metadata
- }
-
- private boolean checkConversations(Collection inConversations)
- {
- return isSubset(inConversations, filterConversations);
- }
-
- private boolean checkFrequencies(Collection inFrequencies)
- {
- return isSubset(inFrequencies, filterFrequencies);
- }
-
- private boolean checkWebapps(Collection inWebapps)
- {
- return isSubset(inWebapps, filterWebapps);
- }
-
- private boolean checkDBs(Collection inDBs)
- {
- // "any" cannot be mixed with other values, so just take first filter value
- Boolean b = checkForAny(inDBs, (String)filterDBs.iterator().next());
- if (b == null)
- return isSubset(inDBs, filterDBs);
- else
- return b.booleanValue();
- }
-
- private Boolean checkForAny(Collection inMetadata, String inFilter)
- {
- // if filter is "any", metadata has at least one element,
- // and metadata does not have "none", then run
- if (inFilter.equals(SELECT_ANY))
- return new Boolean(
- !inMetadata.isEmpty() && !inMetadata.contains(SELECT_NONE));
- else
- return null;
- }
-
- private boolean checkDomains(Collection inDomains)
- {
- return isSubset(inDomains, filterDomains);
- }
-
- private boolean checkMiscInfo(Collection inMiscInfos)
- {
- return isSubsetRegexp(inMiscInfos, filterMiscInfos);
- }
-
- private boolean checkServerModes(Collection inServerModes)
- {
- return isSubset(inServerModes, filterServerModes);
- }
-
- private boolean isSubset(Collection base, Collection c)
- {
- for (Iterator iter = c.iterator(); iter.hasNext();)
- {
- if (base.contains(iter.next()))
- return true;
- }
- return false;
- }
-
- private boolean isSubsetRegexp(Collection base, Collection c)
- {
- Collection matches =
- GeneralUtil.getRegexMatches(
- c,
- base,
- new NoopCollection(),
- new NoopCollection(),
- RE.MATCH_CASEINDEPENDENT);
- return !matches.isEmpty();
- }
-
- private boolean checkTestLevels(Collection inTestLevels)
- {
- return inTestLevels.contains(filterTestLevel);
- }
-
- private void setOwner()
- {
- filterOwnerList = AntProperties.getOwnerListFilter();
- }
-
- private void setDomains()
- {
- filterDomains = AntProperties.getDomainListFilter();
- }
-
- private void setDBs()
- {
- filterDBs = AntProperties.getDBListFilter();
- }
-
- private void setMiscInfos()
- {
- filterMiscInfos = AntProperties.getMiscInfoFilter();
- }
-
-
- private void setStatus()
- {
- // so we keep default setting
- if (AntProperties.getStatusFilter() != null)
- filterStatus = AntProperties.getStatusFilter();
- }
-
- private void setServerModes()
- {
- filterServerModes = AntProperties.getServerModesListFilter();
- }
-
- private void setConversations()
- {
- filterConversations = AntProperties.getConversationsListFilter();
- }
-
- private void setFrequencies()
- {
- filterFrequencies = AntProperties.getFrequenciesListFilter();
- }
-
- private void setWebapps()
- {
- filterWebapps = AntProperties.getWebappsListFilter();
- }
-
- private void setTestLevel()
- {
- filterTestLevel = AntProperties.getTestLevelFilter();
- }
-
- private void setCRList()
- {
- filterCRList = AntProperties.getCRListFilter();
- matchAllCRs = AntProperties.isCRListFilterMatchAll();
- }
-
- private void setKnownFailures()
- {
- filterKnownFailures = AntProperties.getKnownFailuresFilter();
- }
-
- private void setSSLRestriction()
- {
- filterSSLRestriction = AntProperties.getSSLFilter();
- }
-
- private void setClientType()
- {
- filterClientType = AntProperties.getClientTypeFilter();
- }
-
- private void setSecurityType()
- {
- filterSecurityType = AntProperties.getSecurityTypeFilter();
- }
-
- private boolean checkClientType(Map clientTypes)
- {
- // If it is not in map, test does not pass filter?
- // For now that's better than NPE'ing if it is not there
- if (!clientTypes
- .keySet()
- .contains(new CaseInsensitiveStringKey(filterClientType)))
- return false;
- return (
- (Boolean)clientTypes.get(new CaseInsensitiveStringKey(filterClientType)))
- .booleanValue();
- }
-
- private boolean checkSecurityType(Map securityTypes)
- {
- if (!securityTypes
- .keySet()
- .contains(new CaseInsensitiveStringKey(filterSecurityType)))
- return false;
- return (
- (Boolean)securityTypes.get(
- new CaseInsensitiveStringKey(filterSecurityType)))
- .booleanValue();
- }
-}
+package org.apache.beehive.test.tools.tch.core;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.regexp.RE;
+import org.apache.tools.ant.BuildException;
+
+import org.apache.beehive.test.tools.tch.util.CaseInsensitiveStringKey;
+import org.apache.beehive.test.tools.tch.util.GeneralUtil;
+import org.apache.beehive.test.tools.tch.util.NoopCollection;
+
+/**
+ * This class represent all information that can filter
+ * the set of tests to be executed
+ * Created upon startup, and then passed around to the right tasks
+ */
+
+public class Filter
+{
+ private static final String SELECT_ALL = "all";
+ private static final String SELECT_NONE = "none";
+ private static final String SELECT_ANY = "any";
+
+ private static final String OS_NAME_SYS_PROP = "os.name";
+ private static final String JAVA_VERSION_SYS_PROP = "java.version";
+
+ public static final String DEFAULT_STATUS = "active";
+
+ //Filterable quantities, can be null if not filtered
+ private Integer filterTestLevel = null;
+ private Collection filterWebapps= null;
+ private Collection filterFrequencies = null;
+ private Collection filterServerModes = null;
+ private Collection filterOwnerList = null;
+ private Collection filterConversations = null;
+ private Collection filterDomains = null;
+ private Collection filterMiscInfos = null;
+ private Collection filterCRList = null;
+ private Collection filterDBs = null;
+ private boolean matchAllCRs = false; //"or" by default
+ private Boolean filterKnownFailures = null;
+ private Boolean filterSSLRestriction = null;
+ private String filterClientType = null;
+ private String filterSecurityType = null;
+ private String filterStatus = DEFAULT_STATUS;
+
+ private TestMetadataTask testMetadata = new TestMetadataTask();
+ //Don't call perform on these, just dummies
+ private TestMetadataTask testSuiteMetadata = new TestMetadataTask();
+
+ public Filter()
+ {
+ setOwner();
+ setDomains();
+ setDBs();
+ setMiscInfos();
+ setStatus();
+ setConversations();
+ setFrequencies();
+ setWebapps();
+ setServerModes();
+ setTestLevel();
+ setCRList();
+ setKnownFailures();
+ setSSLRestriction();
+ setClientType();
+ setSecurityType();
+ }
+
+ // FIXME: Change this class to take n metadatas!!!!
+
+ public void setTestMetadata(List list)
+ {
+ if (list.size() > 0)
+ if (list.size() == 1)
+ testMetadata = (TestMetadataTask)list.get(0);
+ else
+ {
+ testSuiteMetadata = (TestMetadataTask)list.get(list.size() - 1);
+ testMetadata = (TestMetadataTask)list.get(0);
+ }
+ }
+
+ public void setTestSuiteMetadata(TestMetadataTask inTestSuiteMetadata)
+ {}
+
+ /**
+ * This is the primary method of this class
+ * Given all the configured data, decides
+ * whether or not a test should be executed
+ */
+ public boolean pass()
+ {
+ org.apache.beehive.test.tools.tch.util.DebugLogger.log(
+ "passTestLevel: " + passTestLevel());
+ org.apache.beehive.test.tools.tch.util.DebugLogger.log("passCRList: " + passCRList());
+
+ // always pass if we're running a subset of tests, since we specifically
+ // specify the tests we want to run
+
+ // Time to rethink the above assumption.
+ // Since test-names now supports regex,
+ // it would make sense to treat it in the same way as any other filter
+ // This should be ok for test replication, as all tch.filter.* props
+ // are "excluded" (from replication)
+ // Making this behavior configurable for now
+ if (AntProperties.isIndividualTestModeOn()
+ && !AntProperties.isFilterAdoptTestNamesEnabled())
+ return true;
+
+ try
+ {
+ if (passTestLevel()
+ && passCondition()
+ && passCRList()
+ && passFrequencies()
+ && passWebapps()
+ && passDomains()
+ && passStatus()
+ && passOwner()
+ && passDBs()
+ && passMiscInfos()
+ && passConversations()
+ && passKnownFailures()
+ && passServerModes()
+ && passSSLRestriction() // deprecated
+ && passOSRestriction()
+ && passOS()
+ && passJavaRestriction()
+ && passClientType()
+ && passSecurityType()
+ && (AntProperties.getTestInfo() == null
+ || AntProperties.getTestInfoAlsoRun()))
+ return true;
+ else
+ return false;
+ }
+ catch (AntProperties.AntPropertiesException ex)
+ {
+ throw new BuildException(ex.getMessage(), ex);
+ }
+
+ }
+
+ private boolean passStatus()
+ {
+ if (filterStatus != null)
+ {
+ if (testMetadata.getStatus() != null)
+ return filterStatus.equals(testMetadata.getStatus());
+ else if (testSuiteMetadata.getStatus() != null)
+ return filterStatus.equals(testSuiteMetadata.getStatus());
+ else
+ return false;
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passDBs()
+ {
+ if (filterDBs != null)
+ {
+ if (testMetadata.getDB() != null)
+ return checkDBs(testMetadata.getDB());
+ else if (testSuiteMetadata.getDB() != null)
+ return checkDBs(testSuiteMetadata.getDB());
+ else
+ return true;
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passOwner()
+ {
+ // we only allow one owner per test at this point
+ // if no owner is specified for a test, but
+ // tch.filter.owners is set on the command line,
+ // the test will not run
+
+ if (filterOwnerList != null)
+ {
+ if (testMetadata.getOwner() != null)
+ return filterOwnerList.contains(testMetadata.getOwner());
+ else if (testSuiteMetadata.getOwner() != null)
+ return filterOwnerList.contains(testSuiteMetadata.getOwner());
+ else
+ return false;
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passKnownFailures()
+ {
+ // if tch.filter.knownFailures == true, run all tests that are known failures
+ // if set to false, run all tests that are not known failures
+ // if not set at all, run all tests
+ if (filterKnownFailures != null)
+ {
+ if (testMetadata.getKnownFailure() != null)
+ return filterKnownFailures.equals(testMetadata.getKnownFailure());
+ else if (testSuiteMetadata.getKnownFailure() != null)
+ return filterKnownFailures.equals(testSuiteMetadata.getKnownFailure());
+ else
+ return !filterKnownFailures.booleanValue();
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passTestLevel()
+ {
+ //Strict override
+ if (filterTestLevel != null)
+ {
+ if (testMetadata.getTestLevels() != null)
+ return checkTestLevels(testMetadata.getTestLevels());
+ else if (testSuiteMetadata.getTestLevels() != null)
+ return checkTestLevels(testSuiteMetadata.getTestLevels());
+ else
+ return true;
+ //if no test level set, run tests. FIXME: Make a prop to return false here
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passFrequencies()
+ {
+ //Strict override
+ if (filterFrequencies != null)
+ {
+ if (testMetadata.getFrequencies() != null)
+ return checkFrequencies(testMetadata.getFrequencies());
+ else if (testSuiteMetadata.getFrequencies() != null)
+ return checkFrequencies(testSuiteMetadata.getFrequencies());
+ else
+ return true;
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passWebapps()
+ {
+ //Strict override
+ if (filterWebapps != null)
+ {
+ if (testMetadata.getWebapps() != null)
+ return checkWebapps(testMetadata.getWebapps());
+ else if (testSuiteMetadata.getWebapps() != null)
+ return checkWebapps(testSuiteMetadata.getWebapps());
+ else
+ return true;
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passDomains()
+ {
+ //Strict override
+ if (filterDomains != null)
+ {
+ if (testMetadata.getDomains() != null)
+ return checkDomains(testMetadata.getDomains());
+ else if (testSuiteMetadata.getDomains() != null)
+ return checkDomains(testSuiteMetadata.getDomains());
+ else
+ return true;
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passMiscInfos()
+ {
+ //Strict override
+ if (filterMiscInfos != null)
+ {
+ if (testMetadata.getMiscInfo() != null)
+ return checkMiscInfo(testMetadata.getMiscInfo());
+ else if (testSuiteMetadata.getMiscInfo() != null)
+ return checkMiscInfo(testSuiteMetadata.getMiscInfo());
+ else
+ return true;
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passConversations()
+ {
+ //Strict override
+ if (filterConversations != null)
+ {
+ if (testMetadata.getConversations() != null)
+ return checkConversations(testMetadata.getConversations());
+ else if (testSuiteMetadata.getConversations() != null)
+ return checkConversations(testSuiteMetadata.getConversations());
+ else
+ return false;
+ // if test has no conversation metadata, and filter is set, do not run the test
+ }
+ else
+ return true;
+ }
+
+ private boolean passServerModes()
+ {
+ //Strict override
+ if (filterServerModes != null)
+ {
+ if (testMetadata.getServerModes() != null)
+ return checkServerModes(testMetadata.getServerModes());
+ else if (testSuiteMetadata.getServerModes() != null)
+ return checkServerModes(testSuiteMetadata.getServerModes());
+ else
+ return true;
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passCondition()
+ {
+ boolean suiteCondPassed = true;
+ if (!testSuiteMetadata.getConditions().isEmpty())
+ suiteCondPassed = combineAndEvaluate(testSuiteMetadata.getConditions());
+ if (suiteCondPassed)
+ {
+ if (!testMetadata.getConditions().isEmpty())
+ return combineAndEvaluate(testMetadata.getConditions());
+ }
+ else
+ return false;
+ return true;
+ }
+
+ private boolean combineAndEvaluate(Collection conditions)
+ {
+ StringBuffer sb = new StringBuffer();
+ for (Iterator iter = conditions.iterator(); iter.hasNext();)
+ {
+ sb.append(iter.next());
+ if (iter.hasNext())
+ sb.append(" & ");
+ }
+ return GeneralUtil.evalBooleanString(sb.toString());
+ }
+
+ private boolean passClientType()
+ {
+ //Strict override
+ if (filterClientType != null)
+ {
+ if (!testMetadata.getClientTypes().isEmpty())
+ {
+ return checkClientType(testMetadata.getClientTypes());
+ }
+ else
+ {
+ if (!testSuiteMetadata.getClientTypes().isEmpty())
+ {
+ return checkClientType(testSuiteMetadata.getClientTypes());
+ }
+ }
+ return true; //If nothing in metadata, passes filter
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passSecurityType()
+ {
+ //Strict override
+ if (filterSecurityType != null)
+ {
+ if (!testMetadata.getSecurityTypes().isEmpty())
+ {
+ return checkSecurityType(testMetadata.getSecurityTypes());
+ }
+ else
+ {
+ if (!testSuiteMetadata.getSecurityTypes().isEmpty())
+ {
+ return checkSecurityType(testSuiteMetadata.getSecurityTypes());
+ }
+ }
+ return true; //If nothing in metadata, passes filter
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passSSLRestriction()
+ {
+ //Strict override
+ if (filterSSLRestriction != null)
+ {
+ if (testMetadata.getSSLRestriction() != null)
+ {
+ return filterSSLRestriction.equals(testMetadata.getSSLRestriction());
+ }
+ else
+ {
+ if (testSuiteMetadata.getSSLRestriction() != null)
+ {
+ return filterSSLRestriction.equals(
+ testSuiteMetadata.getSSLRestriction());
+ }
+ }
+ return true; //If nothing in metadata, passes filter
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean passOS()
+ {
+ //Strict override
+ if (testMetadata.getOses() != null)
+ {
+ return passOS(testMetadata.getOses());
+ }
+ else
+ {
+ if (testSuiteMetadata.getOses() != null)
+ {
+ return passOS(testSuiteMetadata.getOses());
+ }
+ }
+ return true; //If nothing in metadata, passes filter
+ }
+
+ // deprecated
+ private boolean passOSRestriction()
+ {
+ //Strict override
+ if (testMetadata.getOSRestriction() != null)
+ {
+ return testMetadata.getOSRestriction().pass(OS_NAME_SYS_PROP);
+ }
+ else
+ {
+ if (testSuiteMetadata.getOSRestriction() != null)
+ {
+ return testSuiteMetadata.getOSRestriction().pass(OS_NAME_SYS_PROP);
+ }
+ }
+ return true; //If nothing in metadata, passes filter
+ }
+
+ private boolean passOS(Collection inOses)
+ {
+ if (inOses.isEmpty())
+ return true;
+
+ return TestMetadataTask.matchesSystemProperty(
+ OS_NAME_SYS_PROP,
+ (String[])inOses.toArray(new String[] {}),
+ true);
+ }
+
+ private boolean passJavaRestriction()
+ {
+ //Strict override
+ if (testMetadata.getJavaRestriction() != null)
+ {
+ return testMetadata.getJavaRestriction().passVersion(
+ JAVA_VERSION_SYS_PROP);
+ }
+ else
+ {
+ if (testSuiteMetadata.getJavaRestriction() != null)
+ {
+ return testSuiteMetadata.getJavaRestriction().passVersion(
+ JAVA_VERSION_SYS_PROP);
+ }
+ }
+ return true; //If nothing in metadata, passes filter
+ }
+
+ private boolean passCRList()
+ {
+ //This one checks both levels
+ //if there is a match between the filter and the metadata at either
+ //level, we pass it
+ if (filterCRList != null)
+ {
+ Collection coll = null;
+ if (testMetadata.getCRList() != null)
+ {
+ if (coll == null)
+ coll = new HashSet();
+ coll.addAll(testMetadata.getCRList());
+ }
+ if (testSuiteMetadata.getCRList() != null)
+ {
+ if (coll == null)
+ coll = new HashSet();
+ coll.addAll(testSuiteMetadata.getCRList());
+ }
+ return checkCRList(coll);
+ }
+ else
+ return true; //no filter
+ }
+
+ private boolean checkCRList(Collection inCRList)
+ {
+ if (inCRList != null)
+ {
+ for (Iterator iter = filterCRList.iterator(); iter.hasNext();)
+ {
+ if (inCRList.contains(iter.next()))
+ {
+ if (!matchAllCRs)
+ {
+ return true; //just one match is enough to pass
+ }
+ }
+ else
+ {
+ if (matchAllCRs)
+ {
+ return false; //just one mismatch is enough to fail
+ }
+ }
+ }
+ //if "or", should've been returned already
+ //if "and", didn't get a miss, so we're ok
+ return matchAllCRs;
+ }
+ else
+ return false; // no matches because no metadata
+ }
+
+ private boolean checkConversations(Collection inConversations)
+ {
+ return isSubset(inConversations, filterConversations);
+ }
+
+ private boolean checkFrequencies(Collection inFrequencies)
+ {
+ return isSubset(inFrequencies, filterFrequencies);
+ }
+
+ private boolean checkWebapps(Collection inWebapps)
+ {
+ return isSubset(inWebapps, filterWebapps);
+ }
+
+ private boolean checkDBs(Collection inDBs)
+ {
+ // "any" cannot be mixed with other values, so just take first filter value
+ Boolean b = checkForAny(inDBs, (String)filterDBs.iterator().next());
+ if (b == null)
+ return isSubset(inDBs, filterDBs);
+ else
+ return b.booleanValue();
+ }
+
+ private Boolean checkForAny(Collection inMetadata, String inFilter)
+ {
+ // if filter is "any", metadata has at least one element,
+ // and metadata does not have "none", then run
+ if (inFilter.equals(SELECT_ANY))
+ return new Boolean(
+ !inMetadata.isEmpty() && !inMetadata.contains(SELECT_NONE));
+ else
+ return null;
+ }
+
+ private boolean checkDomains(Collection inDomains)
+ {
+ return isSubset(inDomains, filterDomains);
+ }
+
+ private boolean checkMiscInfo(Collection inMiscInfos)
+ {
+ return isSubsetRegexp(inMiscInfos, filterMiscInfos);
+ }
+
+ private boolean checkServerModes(Collection inServerModes)
+ {
+ return isSubset(inServerModes, filterServerModes);
+ }
+
+ private boolean isSubset(Collection base, Collection c)
+ {
+ for (Iterator iter = c.iterator(); iter.hasNext();)
+ {
+ if (base.contains(iter.next()))
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isSubsetRegexp(Collection base, Collection c)
+ {
+ Collection matches =
+ GeneralUtil.getRegexMatches(
+ c,
+ base,
+ new NoopCollection(),
+ new NoopCollection(),
+ RE.MATCH_CASEINDEPENDENT);
+ return !matches.isEmpty();
+ }
+
+ private boolean checkTestLevels(Collection inTestLevels)
+ {
+ return inTestLevels.contains(filterTestLevel);
+ }
+
+ private void setOwner()
+ {
+ filterOwnerList = AntProperties.getOwnerListFilter();
+ }
+
+ private void setDomains()
+ {
+ filterDomains = AntProperties.getDomainListFilter();
+ }
+
+ private void setDBs()
+ {
+ filterDBs = AntProperties.getDBListFilter();
+ }
+
+ private void setMiscInfos()
+ {
+ filterMiscInfos = AntProperties.getMiscInfoFilter();
+ }
+
+
+ private void setStatus()
+ {
+ // so we keep default setting
+ if (AntProperties.getStatusFilter() != null)
+ filterStatus = AntProperties.getStatusFilter();
+ }
+
+ private void setServerModes()
+ {
+ filterServerModes = AntProperties.getServerModesListFilter();
+ }
+
+ private void setConversations()
+ {
+ filterConversations = AntProperties.getConversationsListFilter();
+ }
+
+ private void setFrequencies()
+ {
+ filterFrequencies = AntProperties.getFrequenciesListFilter();
+ }
+
+ private void setWebapps()
+ {
+ filterWebapps = AntProperties.getWebappsListFilter();
+ }
+
+ private void setTestLevel()
+ {
+ filterTestLevel = AntProperties.getTestLevelFilter();
+ }
+
+ private void setCRList()
+ {
+ filterCRList = AntProperties.getCRListFilter();
+ matchAllCRs = AntProperties.isCRListFilterMatchAll();
+ }
+
+ private void setKnownFailures()
+ {
+ filterKnownFailures = AntProperties.getKnownFailuresFilter();
+ }
+
+ private void setSSLRestriction()
+ {
+ filterSSLRestriction = AntProperties.getSSLFilter();
+ }
+
+ private void setClientType()
+ {
+ filterClientType = AntProperties.getClientTypeFilter();
+ }
+
+ private void setSecurityType()
+ {
+ filterSecurityType = AntProperties.getSecurityTypeFilter();
+ }
+
+ private boolean checkClientType(Map clientTypes)
+ {
+ // If it is not in map, test does not pass filter?
+ // For now that's better than NPE'ing if it is not there
+ if (!clientTypes
+ .keySet()
+ .contains(new CaseInsensitiveStringKey(filterClientType)))
+ return false;
+ return (
+ (Boolean)clientTypes.get(new CaseInsensitiveStringKey(filterClientType)))
+ .booleanValue();
+ }
+
+ private boolean checkSecurityType(Map securityTypes)
+ {
+ if (!securityTypes
+ .keySet()
+ .contains(new CaseInsensitiveStringKey(filterSecurityType)))
+ return false;
+ return (
+ (Boolean)securityTypes.get(
+ new CaseInsensitiveStringKey(filterSecurityType)))
+ .booleanValue();
+ }
+}
Propchange: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/Filter.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/HookTask.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/HookTask.java?rev=232310&r1=232309&r2=232310&view=diff
==============================================================================
--- beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/HookTask.java (original)
+++ beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/HookTask.java Fri Aug 12 08:12:28 2005
@@ -1,26 +1,26 @@
-package org.apache.beehive.test.tools.tch.core;
-
-public abstract class HookTask extends AnythingTask
-{
-
- protected abstract String getDefaultName();
-
- public boolean preRun()
- {
- if (super.preRun())
- {
- if (getTestNode() != null)
- {
- getTestNode().getHelper().setProcessEngine(getTestNode());
- //This is for the test-names case, since we won't call TST.preRun()
- }
-
- if (getName() == null)
- setName(getDefaultName());
-
- return true;
- }
- else
- return false;
- }
-}
+package org.apache.beehive.test.tools.tch.core;
+
+public abstract class HookTask extends AnythingTask
+{
+
+ protected abstract String getDefaultName();
+
+ public boolean preRun()
+ {
+ if (super.preRun())
+ {
+ if (getTestNode() != null)
+ {
+ getTestNode().getHelper().setProcessEngine(getTestNode());
+ //This is for the test-names case, since we won't call TST.preRun()
+ }
+
+ if (getName() == null)
+ setName(getDefaultName());
+
+ return true;
+ }
+ else
+ return false;
+ }
+}
Propchange: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/HookTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/IfTask.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/IfTask.java?rev=232310&r1=232309&r2=232310&view=diff
==============================================================================
--- beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/IfTask.java (original)
+++ beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/IfTask.java Fri Aug 12 08:12:28 2005
@@ -1,92 +1,92 @@
-package org.apache.beehive.test.tools.tch.core;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.tools.ant.Task;
-
-import org.apache.beehive.test.tools.tch.util.GeneralUtil;
-
-public class IfTask extends AbstractMinimalTestNodeTask
-{
-
- private Collection conditionTasks = null;
-
- public String getName()
- {
- return "if-task";
- }
-
- public boolean isTestNode()
- {
- return true;
- }
-
- public Task handleTask(Task task)
- {
- task = super.handleTask(task);
- if (task instanceof ConditionTask)
- {
- if (conditionTasks == null)
- {
- conditionTasks = new ArrayList();
- }
- conditionTasks.add(task);
- }
- return task;
- }
-
- public void getUsedPropsBelow(Collection props)
- {
- props.addAll(super.getUsedPropsAbove(props));
- super.getUsedPropsBelow(props);
- }
-
- protected boolean beforeAlwaysDo()
- {
- if (!super.alwaysDo())
- return false;
-
- if (!GeneralUtil.evalBooleanString(getCondition()))
- {
- disconnectChildren();
- return false;
- }
- return true;
- }
-
- private String getCondition()
- {
- StringBuffer sb = new StringBuffer();
- boolean first = true;
- for (Iterator iter = conditionTasks.iterator(); iter.hasNext();)
- {
- String newCond =
- handleValue(
- ((ConditionTask)iter.next()).getCondition());
- if (first)
- first = false;
- else
- sb.append(" & ");
- sb.append(newCond);
- }
- //System.out.println("Condition: "+sb.toString());
- return sb.toString();
- }
-
- public static class ConditionTask extends Task
- {
- private String condition;
-
- public void addText(String inText)
- {
- condition = inText;
- }
-
- public String getCondition()
- {
- return condition;
- }
- }
-}
+package org.apache.beehive.test.tools.tch.core;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.tools.ant.Task;
+
+import org.apache.beehive.test.tools.tch.util.GeneralUtil;
+
+public class IfTask extends AbstractMinimalTestNodeTask
+{
+
+ private Collection conditionTasks = null;
+
+ public String getName()
+ {
+ return "if-task";
+ }
+
+ public boolean isTestNode()
+ {
+ return true;
+ }
+
+ public Task handleTask(Task task)
+ {
+ task = super.handleTask(task);
+ if (task instanceof ConditionTask)
+ {
+ if (conditionTasks == null)
+ {
+ conditionTasks = new ArrayList();
+ }
+ conditionTasks.add(task);
+ }
+ return task;
+ }
+
+ public void getUsedPropsBelow(Collection props)
+ {
+ props.addAll(super.getUsedPropsAbove(props));
+ super.getUsedPropsBelow(props);
+ }
+
+ protected boolean beforeAlwaysDo()
+ {
+ if (!super.alwaysDo())
+ return false;
+
+ if (!GeneralUtil.evalBooleanString(getCondition()))
+ {
+ disconnectChildren();
+ return false;
+ }
+ return true;
+ }
+
+ private String getCondition()
+ {
+ StringBuffer sb = new StringBuffer();
+ boolean first = true;
+ for (Iterator iter = conditionTasks.iterator(); iter.hasNext();)
+ {
+ String newCond =
+ handleValue(
+ ((ConditionTask)iter.next()).getCondition());
+ if (first)
+ first = false;
+ else
+ sb.append(" & ");
+ sb.append(newCond);
+ }
+ //System.out.println("Condition: "+sb.toString());
+ return sb.toString();
+ }
+
+ public static class ConditionTask extends Task
+ {
+ private String condition;
+
+ public void addText(String inText)
+ {
+ condition = inText;
+ }
+
+ public String getCondition()
+ {
+ return condition;
+ }
+ }
+}
Propchange: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/IfTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/IndependentTestGroupTask.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/IndependentTestGroupTask.java?rev=232310&r1=232309&r2=232310&view=diff
==============================================================================
--- beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/IndependentTestGroupTask.java (original)
+++ beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/IndependentTestGroupTask.java Fri Aug 12 08:12:28 2005
@@ -1,126 +1,126 @@
-package org.apache.beehive.test.tools.tch.core;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.beehive.test.tools.tch.util.TchConstants;
-import org.apache.beehive.test.tools.tch.util.TestResultAdapter;
-
-/**
- */
-public class IndependentTestGroupTask
- extends AbstractTestReplicationTask
- implements EntryPoint
-{
- private String name = "unnamed";
- private boolean runFailedTestOnly = false;
-
- public void setName(String inName)
- {
- name = inName;
- }
-
- public void setRerunFailedTestOnly(boolean b)
- {
- runFailedTestOnly = b;
- }
-
- public boolean runFailedTestOnly()
- {
- return runFailedTestOnly;
- }
-
- public String getName()
- {
- return name;
- }
-
- public boolean isTestNode()
- {
- return false;
- }
-
- protected boolean preRun()
- {
- if (super.preRun())
- {
- if (AntProperties.isIndividualTestModeOn())
- logInform("Running independent test group " + getName());
- return true;
- }
- return false;
- }
-
- public Collection getContainedLogicalTests()
- {
- Collection ret = new ArrayList();
- getLogicalTestsRecursively(this, ret);
- return ret;
- }
-
- private void getLogicalTestsRecursively(
- AbstractMinimalTestNodeTask inTask,
- Collection ret)
- {
- for (Iterator iter = inTask.getChildren().iterator(); iter.hasNext();)
- {
- AbstractMinimalTestNodeTask task =
- (AbstractMinimalTestNodeTask)iter.next();
- if (task instanceof LogicalTest)
- ret.add(task);
- else
- {
- getLogicalTestsRecursively(task, ret);
- }
- }
- }
-
- public Collection getContainedProcessNames()
- {
- Collection ret = new ArrayList();
- getContainedProcessNamesRecursively(this, ret);
- // Since getContainedProcessNames() is called in order to activate
- // processes, we also need to get all processes mapped in the
- // init-hook containing the independent-test-group.
- TestSuiteTask task = getTestSuiteTask();
- // If this is a test suite task, get all the processes which are
- // mapped in for the init-hook
- ret.addAll(task.getInitHookMappedProcesses());
- return ret;
- }
-
- private void getContainedProcessNamesRecursively(
- AbstractMinimalTestNodeTask inTask,
- Collection ret)
- {
- for (Iterator iter = inTask.getChildren().iterator(); iter.hasNext();)
- {
- AbstractMinimalTestNodeTask task =
- (AbstractMinimalTestNodeTask)iter.next();
-
- if (task instanceof EntryPoint)
- {
- // an EntryPoint terminates the recursion
- ret.addAll(((EntryPoint)task).getContainedProcessNames());
- }
- else if (task instanceof TestSuiteTask)
- {
- // If this is a test suite task, get all the processes which are
- // mapped in for the init-hook
- ret.addAll(((TestSuiteTask)task).getInitHookMappedProcesses());
- // still need to recursively get process names for nested tasks
- getContainedProcessNamesRecursively(task, ret);
- }
- else
- {
- getContainedProcessNamesRecursively(task, ret);
- }
- }
- }
-
- public String toString()
- {
- return getName();
- }
-}
+package org.apache.beehive.test.tools.tch.core;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.beehive.test.tools.tch.util.TchConstants;
+import org.apache.beehive.test.tools.tch.util.TestResultAdapter;
+
+/**
+ */
+public class IndependentTestGroupTask
+ extends AbstractTestReplicationTask
+ implements EntryPoint
+{
+ private String name = "unnamed";
+ private boolean runFailedTestOnly = false;
+
+ public void setName(String inName)
+ {
+ name = inName;
+ }
+
+ public void setRerunFailedTestOnly(boolean b)
+ {
+ runFailedTestOnly = b;
+ }
+
+ public boolean runFailedTestOnly()
+ {
+ return runFailedTestOnly;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public boolean isTestNode()
+ {
+ return false;
+ }
+
+ protected boolean preRun()
+ {
+ if (super.preRun())
+ {
+ if (AntProperties.isIndividualTestModeOn())
+ logInform("Running independent test group " + getName());
+ return true;
+ }
+ return false;
+ }
+
+ public Collection getContainedLogicalTests()
+ {
+ Collection ret = new ArrayList();
+ getLogicalTestsRecursively(this, ret);
+ return ret;
+ }
+
+ private void getLogicalTestsRecursively(
+ AbstractMinimalTestNodeTask inTask,
+ Collection ret)
+ {
+ for (Iterator iter = inTask.getChildren().iterator(); iter.hasNext();)
+ {
+ AbstractMinimalTestNodeTask task =
+ (AbstractMinimalTestNodeTask)iter.next();
+ if (task instanceof LogicalTest)
+ ret.add(task);
+ else
+ {
+ getLogicalTestsRecursively(task, ret);
+ }
+ }
+ }
+
+ public Collection getContainedProcessNames()
+ {
+ Collection ret = new ArrayList();
+ getContainedProcessNamesRecursively(this, ret);
+ // Since getContainedProcessNames() is called in order to activate
+ // processes, we also need to get all processes mapped in the
+ // init-hook containing the independent-test-group.
+ TestSuiteTask task = getTestSuiteTask();
+ // If this is a test suite task, get all the processes which are
+ // mapped in for the init-hook
+ ret.addAll(task.getInitHookMappedProcesses());
+ return ret;
+ }
+
+ private void getContainedProcessNamesRecursively(
+ AbstractMinimalTestNodeTask inTask,
+ Collection ret)
+ {
+ for (Iterator iter = inTask.getChildren().iterator(); iter.hasNext();)
+ {
+ AbstractMinimalTestNodeTask task =
+ (AbstractMinimalTestNodeTask)iter.next();
+
+ if (task instanceof EntryPoint)
+ {
+ // an EntryPoint terminates the recursion
+ ret.addAll(((EntryPoint)task).getContainedProcessNames());
+ }
+ else if (task instanceof TestSuiteTask)
+ {
+ // If this is a test suite task, get all the processes which are
+ // mapped in for the init-hook
+ ret.addAll(((TestSuiteTask)task).getInitHookMappedProcesses());
+ // still need to recursively get process names for nested tasks
+ getContainedProcessNamesRecursively(task, ret);
+ }
+ else
+ {
+ getContainedProcessNamesRecursively(task, ret);
+ }
+ }
+ }
+
+ public String toString()
+ {
+ return getName();
+ }
+}
Propchange: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/IndependentTestGroupTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InformResultConverter.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InformResultConverter.java?rev=232310&r1=232309&r2=232310&view=diff
==============================================================================
--- beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InformResultConverter.java (original)
+++ beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InformResultConverter.java Fri Aug 12 08:12:28 2005
@@ -1,29 +1,29 @@
-package org.apache.beehive.test.tools.tch.core;
-
-import org.apache.beehive.test.tools.tch.core.test.ResultHandler;
-import org.apache.beehive.test.tools.tch.util.TestResultBean;
-
-// Thought we need this for javatest utility classes,
-// but actually AutoTest is doing that for us.
-// Keep it around for now, but feel free to delete.
-public class InformResultConverter implements ResultHandler
-{
-
- private ResultHandler resultHandler = null;
-
- public InformResultConverter(ResultHandler in)
- {
- resultHandler = in;
- }
-
- public void submitResult(TestResultBean tr)
- {
- submitResult(tr, tr.getName());
- }
-
- public void submitResult(TestResultBean tr, String resultName)
- {
- resultHandler.submitResult(tr, resultName);
- }
-
-}
+package org.apache.beehive.test.tools.tch.core;
+
+import org.apache.beehive.test.tools.tch.core.test.ResultHandler;
+import org.apache.beehive.test.tools.tch.util.TestResultBean;
+
+// Thought we need this for javatest utility classes,
+// but actually AutoTest is doing that for us.
+// Keep it around for now, but feel free to delete.
+public class InformResultConverter implements ResultHandler
+{
+
+ private ResultHandler resultHandler = null;
+
+ public InformResultConverter(ResultHandler in)
+ {
+ resultHandler = in;
+ }
+
+ public void submitResult(TestResultBean tr)
+ {
+ submitResult(tr, tr.getName());
+ }
+
+ public void submitResult(TestResultBean tr, String resultName)
+ {
+ resultHandler.submitResult(tr, resultName);
+ }
+
+}
Propchange: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InformResultConverter.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitHookTask.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitHookTask.java?rev=232310&r1=232309&r2=232310&view=diff
==============================================================================
--- beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitHookTask.java (original)
+++ beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitHookTask.java Fri Aug 12 08:12:28 2005
@@ -1,27 +1,27 @@
-package org.apache.beehive.test.tools.tch.core;
-
-import org.apache.tools.ant.BuildException;
-
-//Just here so that addTask() may differentiate with dependencies on tasdef in Ant XML
-
-public class InitHookTask extends HookTask
-{
- protected String getDefaultName()
- {
- return "init-hook";
- }
-
- public boolean run() throws BuildException
- {
- // need to set state on the test-suite indicating that the cleanup hook has attemped
- // to run
- if (testNodeTask != null)
- {
- if (testNodeTask instanceof TestSuiteTask)
- {
- ((TestSuiteTask)testNodeTask).setInitHookStarted(true);
- }
- }
- return super.run();
- }
-}
+package org.apache.beehive.test.tools.tch.core;
+
+import org.apache.tools.ant.BuildException;
+
+//Just here so that addTask() may differentiate with dependencies on tasdef in Ant XML
+
+public class InitHookTask extends HookTask
+{
+ protected String getDefaultName()
+ {
+ return "init-hook";
+ }
+
+ public boolean run() throws BuildException
+ {
+ // need to set state on the test-suite indicating that the cleanup hook has attemped
+ // to run
+ if (testNodeTask != null)
+ {
+ if (testNodeTask instanceof TestSuiteTask)
+ {
+ ((TestSuiteTask)testNodeTask).setInitHookStarted(true);
+ }
+ }
+ return super.run();
+ }
+}
Propchange: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitHookTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitLoggerTask.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitLoggerTask.java?rev=232310&r1=232309&r2=232310&view=diff
==============================================================================
--- beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitLoggerTask.java (original)
+++ beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitLoggerTask.java Fri Aug 12 08:12:28 2005
@@ -1,208 +1,208 @@
-package org.apache.beehive.test.tools.tch.core;
-
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-
-import org.apache.beehive.test.tools.tch.core.test.TestRegistry;
-import org.apache.beehive.test.tools.tch.logger.LogDestination;
-import org.apache.beehive.test.tools.tch.logger.LogType;
-import org.apache.beehive.test.tools.tch.logger.Logger;
-import org.apache.beehive.test.tools.tch.logger.LoggerConfiguration;
-import org.apache.beehive.test.tools.tch.logger.LoggerFactory;
-import org.apache.beehive.test.tools.tch.logger.LoggerSingleton;
-import org.apache.beehive.test.tools.tch.util.TchConstants;
-
-public class InitLoggerTask extends BaseTask
-{
- public void execute()
- {
- initLoggers();
- }
-
- private void initLoggers()
- {
- File baseDir = AntProperties.getLogBasedir();
- String baseFileName = AntProperties.getBaseLogfileName();
-
- log("Initializing logger...");
- log("base dir is " + baseDir.getAbsolutePath());
- log("base log filename is '" + baseFileName + "'");
- LoggerFactory loggerFactory = new LoggerFactory(baseDir, baseFileName);
- loggerFactory.setGtlfFileExtension(AntProperties.getGTLFLogExtension());
-
- try
- {
- boolean usedLoggerConfFile = createCustomLoggers(loggerFactory);
- if (!usedLoggerConfFile)
- {
- createStandardLoggers(loggerFactory);
- }
- else
- {
- log("Used logger configuration file", Project.MSG_VERBOSE);
- }
-
- // if we do not log to stdout, we might still want to print a summary
- // (to stdout) at the end of the run
- if (!AntProperties.isLogToStdoutEnabled()
- && AntProperties.isLogBannersEnabled())
- {
- loggerFactory.addStdoutStatsLogger();
- }
-
- // this logger should be deprecated
- // jdi is not solid enough to get threaddumps
- if (AntProperties.threaddumpsEnabled())
- {
- log("Threaddump logger enabled");
- loggerFactory.addThreadDumpLogger();
- }
-
- String customLogger = AntProperties.getCustomLoggerClass();
- String customLogSuffix = AntProperties.getCustomLogSuffix();
- if (customLogger != null)
- loggerFactory.addCustomLogger(customLogger, customLogSuffix);
-
- Logger logger = loggerFactory.getLogger();
-
- /* added to enable debug level to be specified for logger - echu */
- Integer debugLevelInt = AntProperties.getLogDebugLevel();
- logger.setMinLogLevel(debugLevelInt.intValue());
- log("log debug-level set to " + debugLevelInt);
-
- String dateFormat = AntProperties.getLogDateFormat();
- SimpleDateFormat logDateFormat = new SimpleDateFormat(dateFormat);
- log("log date format set to " + logDateFormat.toPattern());
- log("");
-
- logger.open();
-
- Map m = new HashMap(2);
- m.put(
- TchConstants.EXPECTED_NUM_TESTS,
- String.valueOf(TestRegistry.getRegistry().getExpectedNumTests()));
- m.put(
- TchConstants.LOG_PROGRESS_INFO_KEY,
- String.valueOf(AntProperties.getLogProgressInfo()));
-
- logger.logInit(m);
-
- // FIXME - want to do this before calling open,
- // but can't right now because of code ugliness.
- logger.setDateFormat(logDateFormat);
-
- LoggerSingleton.setLogger(logger);
- }
- catch (Exception e)
- {
- throw new BuildException(
- "Failed to open loggers - " + e.getMessage(),
- e,
- getLocation());
- }
- }
-
- /**
- * @param loggerFactory
- * @return true if we found/used a logger configuration file, false otherwise.
- */
- private boolean createCustomLoggers(LoggerFactory loggerFactory)
- {
- boolean usedConfFile = false;
- // check if we have a logger configuration file
- try
- {
- File f = AntProperties.getLoggerConfFile();
- log("Attempting to load logger configuration file: " + f.getAbsolutePath(), Project.MSG_VERBOSE);
- LoggerConfiguration conf = LoggerConfiguration.getLoggerConfiguration(f);
- log("Logger configuration file:", Project.MSG_DEBUG);
- log(conf.toString(), Project.MSG_DEBUG);
- log("", Project.MSG_DEBUG);
-
- usedConfFile = true;
- for (Iterator iter = conf.getLoggerEntries().iterator(); iter.hasNext();)
- {
- LoggerConfiguration.LoggerEntry entry =
- (LoggerConfiguration.LoggerEntry)iter.next();
-
- // check logger type/destination, and make sure we actually want it
- // (to be consistent with property settings)
-
- // if logging to stdout is disabled, do not let any stdout loggers get through
- if (entry.getDestination() == LogDestination.CONSOLE
- && !AntProperties.isLogToStdoutEnabled())
- continue;
- // ant file gen (jar logger) may be disabled...
- else if (
- entry.getDestination() == LogDestination.JAR
- && !AntProperties.isAntFileGenEnabled())
- continue;
-
- // gtlf logging may be disabled...
- else if (
- entry.getType() == LogType.GTLF && !AntProperties.isLogGTLFEnabled())
- continue;
- // verbose log may be disabled...
- else if (
- entry.getType() == LogType.VERBOSE_DEBUG
- && !AntProperties.isLogVerboseDebugEnabled())
- continue;
- // internal comparison logger (tch testing) may be disabled
- else if (
- entry.getType() == LogType.COMPARISON
- && !AntProperties.isLogComparisonEnabled())
- continue;
- //composite output logger
- else if (
- entry.getType() == LogType.COMPOSITE_OUTPUT
- && !AntProperties.isLogCompositeEnabled())
- continue;
-
- log("Registering logger " + entry.toString(), Project.MSG_VERBOSE);
-
- // ok, seems like we really do have nothing against adding this logger
- loggerFactory.addLogger(
- entry.getClassname(),
- entry.getProperties(),
- entry.getType(),
- entry.getDestination());
- }
- }
- catch (LoggerConfiguration.ConfigurationFileNotFoundException ex)
- {
- usedConfFile = false;
- }
- return usedConfFile;
- }
-
- /**
- * Creates the standard set of Tch loggers.
- * @param loggerFactory
- */
- private void createStandardLoggers(LoggerFactory loggerFactory)
- {
- loggerFactory.addStandardLogger();
- loggerFactory.addDebugLogger();
- if (AntProperties.isAntFileGenEnabled())
- loggerFactory.addJARLogger();
- if (AntProperties.isLogVerboseDebugEnabled())
- loggerFactory.addVerboseDebugLogger();
- if (AntProperties.isLogComparisonEnabled())
- loggerFactory.addComparisonLogger();
- if (AntProperties.isLogGTLFEnabled())
- loggerFactory.addGTLFLogger();
- if (AntProperties.isLogToStdoutEnabled())
- loggerFactory.addStdoutLogger();
- if (AntProperties.isLogCompositeEnabled())
- loggerFactory.addCompositeLogger();
-
-
- }
-
-}
+package org.apache.beehive.test.tools.tch.core;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
+
+import org.apache.beehive.test.tools.tch.core.test.TestRegistry;
+import org.apache.beehive.test.tools.tch.logger.LogDestination;
+import org.apache.beehive.test.tools.tch.logger.LogType;
+import org.apache.beehive.test.tools.tch.logger.Logger;
+import org.apache.beehive.test.tools.tch.logger.LoggerConfiguration;
+import org.apache.beehive.test.tools.tch.logger.LoggerFactory;
+import org.apache.beehive.test.tools.tch.logger.LoggerSingleton;
+import org.apache.beehive.test.tools.tch.util.TchConstants;
+
+public class InitLoggerTask extends BaseTask
+{
+ public void execute()
+ {
+ initLoggers();
+ }
+
+ private void initLoggers()
+ {
+ File baseDir = AntProperties.getLogBasedir();
+ String baseFileName = AntProperties.getBaseLogfileName();
+
+ log("Initializing logger...");
+ log("base dir is " + baseDir.getAbsolutePath());
+ log("base log filename is '" + baseFileName + "'");
+ LoggerFactory loggerFactory = new LoggerFactory(baseDir, baseFileName);
+ loggerFactory.setGtlfFileExtension(AntProperties.getGTLFLogExtension());
+
+ try
+ {
+ boolean usedLoggerConfFile = createCustomLoggers(loggerFactory);
+ if (!usedLoggerConfFile)
+ {
+ createStandardLoggers(loggerFactory);
+ }
+ else
+ {
+ log("Used logger configuration file", Project.MSG_VERBOSE);
+ }
+
+ // if we do not log to stdout, we might still want to print a summary
+ // (to stdout) at the end of the run
+ if (!AntProperties.isLogToStdoutEnabled()
+ && AntProperties.isLogBannersEnabled())
+ {
+ loggerFactory.addStdoutStatsLogger();
+ }
+
+ // this logger should be deprecated
+ // jdi is not solid enough to get threaddumps
+ if (AntProperties.threaddumpsEnabled())
+ {
+ log("Threaddump logger enabled");
+ loggerFactory.addThreadDumpLogger();
+ }
+
+ String customLogger = AntProperties.getCustomLoggerClass();
+ String customLogSuffix = AntProperties.getCustomLogSuffix();
+ if (customLogger != null)
+ loggerFactory.addCustomLogger(customLogger, customLogSuffix);
+
+ Logger logger = loggerFactory.getLogger();
+
+ /* added to enable debug level to be specified for logger - echu */
+ Integer debugLevelInt = AntProperties.getLogDebugLevel();
+ logger.setMinLogLevel(debugLevelInt.intValue());
+ log("log debug-level set to " + debugLevelInt);
+
+ String dateFormat = AntProperties.getLogDateFormat();
+ SimpleDateFormat logDateFormat = new SimpleDateFormat(dateFormat);
+ log("log date format set to " + logDateFormat.toPattern());
+ log("");
+
+ logger.open();
+
+ Map m = new HashMap(2);
+ m.put(
+ TchConstants.EXPECTED_NUM_TESTS,
+ String.valueOf(TestRegistry.getRegistry().getExpectedNumTests()));
+ m.put(
+ TchConstants.LOG_PROGRESS_INFO_KEY,
+ String.valueOf(AntProperties.getLogProgressInfo()));
+
+ logger.logInit(m);
+
+ // FIXME - want to do this before calling open,
+ // but can't right now because of code ugliness.
+ logger.setDateFormat(logDateFormat);
+
+ LoggerSingleton.setLogger(logger);
+ }
+ catch (Exception e)
+ {
+ throw new BuildException(
+ "Failed to open loggers - " + e.getMessage(),
+ e,
+ getLocation());
+ }
+ }
+
+ /**
+ * @param loggerFactory
+ * @return true if we found/used a logger configuration file, false otherwise.
+ */
+ private boolean createCustomLoggers(LoggerFactory loggerFactory)
+ {
+ boolean usedConfFile = false;
+ // check if we have a logger configuration file
+ try
+ {
+ File f = AntProperties.getLoggerConfFile();
+ log("Attempting to load logger configuration file: " + f.getAbsolutePath(), Project.MSG_VERBOSE);
+ LoggerConfiguration conf = LoggerConfiguration.getLoggerConfiguration(f);
+ log("Logger configuration file:", Project.MSG_DEBUG);
+ log(conf.toString(), Project.MSG_DEBUG);
+ log("", Project.MSG_DEBUG);
+
+ usedConfFile = true;
+ for (Iterator iter = conf.getLoggerEntries().iterator(); iter.hasNext();)
+ {
+ LoggerConfiguration.LoggerEntry entry =
+ (LoggerConfiguration.LoggerEntry)iter.next();
+
+ // check logger type/destination, and make sure we actually want it
+ // (to be consistent with property settings)
+
+ // if logging to stdout is disabled, do not let any stdout loggers get through
+ if (entry.getDestination() == LogDestination.CONSOLE
+ && !AntProperties.isLogToStdoutEnabled())
+ continue;
+ // ant file gen (jar logger) may be disabled...
+ else if (
+ entry.getDestination() == LogDestination.JAR
+ && !AntProperties.isAntFileGenEnabled())
+ continue;
+
+ // gtlf logging may be disabled...
+ else if (
+ entry.getType() == LogType.GTLF && !AntProperties.isLogGTLFEnabled())
+ continue;
+ // verbose log may be disabled...
+ else if (
+ entry.getType() == LogType.VERBOSE_DEBUG
+ && !AntProperties.isLogVerboseDebugEnabled())
+ continue;
+ // internal comparison logger (tch testing) may be disabled
+ else if (
+ entry.getType() == LogType.COMPARISON
+ && !AntProperties.isLogComparisonEnabled())
+ continue;
+ //composite output logger
+ else if (
+ entry.getType() == LogType.COMPOSITE_OUTPUT
+ && !AntProperties.isLogCompositeEnabled())
+ continue;
+
+ log("Registering logger " + entry.toString(), Project.MSG_VERBOSE);
+
+ // ok, seems like we really do have nothing against adding this logger
+ loggerFactory.addLogger(
+ entry.getClassname(),
+ entry.getProperties(),
+ entry.getType(),
+ entry.getDestination());
+ }
+ }
+ catch (LoggerConfiguration.ConfigurationFileNotFoundException ex)
+ {
+ usedConfFile = false;
+ }
+ return usedConfFile;
+ }
+
+ /**
+ * Creates the standard set of Tch loggers.
+ * @param loggerFactory
+ */
+ private void createStandardLoggers(LoggerFactory loggerFactory)
+ {
+ loggerFactory.addStandardLogger();
+ loggerFactory.addDebugLogger();
+ if (AntProperties.isAntFileGenEnabled())
+ loggerFactory.addJARLogger();
+ if (AntProperties.isLogVerboseDebugEnabled())
+ loggerFactory.addVerboseDebugLogger();
+ if (AntProperties.isLogComparisonEnabled())
+ loggerFactory.addComparisonLogger();
+ if (AntProperties.isLogGTLFEnabled())
+ loggerFactory.addGTLFLogger();
+ if (AntProperties.isLogToStdoutEnabled())
+ loggerFactory.addStdoutLogger();
+ if (AntProperties.isLogCompositeEnabled())
+ loggerFactory.addCompositeLogger();
+
+
+ }
+
+}
Propchange: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitLoggerTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitProcessManagementTask.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitProcessManagementTask.java?rev=232310&r1=232309&r2=232310&view=diff
==============================================================================
--- beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitProcessManagementTask.java (original)
+++ beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitProcessManagementTask.java Fri Aug 12 08:12:28 2005
@@ -1,203 +1,203 @@
-package org.apache.beehive.test.tools.tch.core;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.apache.beehive.test.tools.tch.core.configuration.ErrorMessageConstants;
-import org.apache.beehive.test.tools.tch.core.configuration.NonfatalValidationException;
-import org.apache.beehive.test.tools.tch.core.process.Process;
-import org.apache.beehive.test.tools.tch.core.process.ProcessManager;
-import org.apache.beehive.test.tools.tch.core.process.ProcessRegistry;
-import org.apache.beehive.test.tools.tch.core.test.TestRegistry;
-
-public class InitProcessManagementTask extends BaseTask
-{
- private ProcessRegistry processRegistry = ProcessRegistry.getRegistry();
- private TestRegistry testRegistry = TestRegistry.getRegistry();
-
- public void execute()
- {
- // activate all mapped processes and check if they are valid
- // do not initialize process managers if they are not
- activateProcesses();
- validateActiveProcesses();
- if (!isValid())
- return;
-
- preInitProcessManagers();
- // this might activate more processes, so validate again
- validateActiveProcesses();
- aggregateProcessManagerValidationErrors();
- if (!isValid())
- return;
-
- initProcessManagers();
- aggregateProcessManagerValidationErrors();
- logActiveProcessNames();
- }
-
- private void activateProcesses()
- {
- for (Iterator iter = testRegistry.getActiveProcessNames().iterator();
- iter.hasNext();
- )
- {
- ProcessRegistry.Entry entry = null;
- try
- {
- entry = processRegistry.getProcessEntry((String)iter.next());
- }
- catch (NonfatalValidationException ex)
- {
- // can happen if mapped name does not exist (user error)
- // in that case, the tests that have this process mapped
- // will be invalidated, and we just ignore it here
- continue;
- }
- Process p = entry.getProcess();
- if (!p.isValid())
- {
- addInvalidations(
- p.getInvalidationManager().getNonfatalValidationAggregate());
- }
- else
- {
- p.activate();
- }
- }
- }
-
- private void validateActiveProcesses()
- {
- for (Iterator iter = getActiveProcessEntries().iterator(); iter.hasNext();)
- {
- Process p = ((ProcessRegistry.Entry)iter.next()).getProcess();
- if (!p.isValid())
- addInvalidations(
- p.getInvalidationManager().getNonfatalValidationAggregate());
- }
- }
-
- private Collection getActiveProcessEntries()
- {
- Collection activeProcessEntries = new HashSet();
- for (Iterator iter = processRegistry.getEntryIterator(); iter.hasNext();)
- {
- ProcessRegistry.Entry entry = (ProcessRegistry.Entry)iter.next();
- if (entry.getProcess().isActive())
- activeProcessEntries.add(entry);
- }
- return activeProcessEntries;
- }
-
- private void preInitProcessManagers()
- {
- // only want to preinitialize the processes that are active (== mapped)
- // iterate over all active processes, and call preinit with those, on their
- // ProcessManager
- Collection active = getActiveProcessEntries();
- if (!active.isEmpty())
- log("Process management pre-initialization starting...");
- for (Iterator iter = active.iterator(); iter.hasNext();)
- {
- ProcessRegistry.Entry entry = null;
- try
- {
- entry = (ProcessRegistry.Entry)iter.next();
- log(" ...with process: " + entry.getProcess().getName());
- entry.getProcessManager().preInit(entry.getProcess(), this);
- }
- catch (NonfatalValidationException ex)
- {
- invalidate(ex);
- }
- catch (Exception ex)
- {
- String message =
- "Failed to pre-init process' PM: " + entry.getProcess().getName();
-
- NonfatalValidationException fatalEx =
- new NonfatalValidationException(
- ex,
- ErrorMessageConstants.FATAL_PROCESS_MANAGEMENT_ERROR_CODE,
- ErrorMessageConstants.MESSAGE,
- message);
- invalidate(fatalEx);
- }
- }
- log("");
- }
-
- private void initProcessManagers()
- {
- // only want to initialize the processes that are active (== mapped)
- // iterate over all active processes, and call init with those, on their
- // ProcessManager
- Collection active = getActiveProcessEntries();
- if (!active.isEmpty())
- log("Process management initialization starting...");
- for (Iterator iter = active.iterator(); iter.hasNext();)
- {
- ProcessRegistry.Entry entry = null;
- try
- {
- entry = (ProcessRegistry.Entry)iter.next();
- log(" ...with process: " + entry.getProcess().getName());
- entry.getProcessManager().init(entry.getProcess(), this);
- }
- catch (NonfatalValidationException ex)
- {
- invalidate(ex);
- }
- catch (Exception ex)
- {
- String message =
- "Failed to init process' PM: " + entry.getProcess().getName();
-
- NonfatalValidationException fatalEx =
- new NonfatalValidationException(
- ex,
- ErrorMessageConstants.FATAL_PROCESS_MANAGEMENT_ERROR_CODE,
- ErrorMessageConstants.MESSAGE,
- message);
- invalidate(fatalEx);
- }
- }
- log("");
- }
-
- private void aggregateProcessManagerValidationErrors()
- {
- Collection checkedProcessManagers = new HashSet();
- for (Iterator iter = processRegistry.getEntryIterator(); iter.hasNext();)
- {
- ProcessRegistry.Entry entry = (ProcessRegistry.Entry)iter.next();
- ProcessManager pm = entry.getProcessManager();
- if (!pm.isValid() && !checkedProcessManagers.contains(pm))
- {
- checkedProcessManagers.add(pm);
- addInvalidations(pm.getNonfatalValidationAggregate());
- }
- }
- }
-
- private void logActiveProcessNames()
- {
- Collection activeProcessNames = new HashSet();
- for (Iterator iter = processRegistry.getEntryIterator(); iter.hasNext();)
- {
- ProcessRegistry.Entry entry = (ProcessRegistry.Entry)iter.next();
- if (entry.getProcess().isActive())
- activeProcessNames.add(entry.getProcess().getName());
- }
-
- // some logic for printing stuff to the screen
- if (activeProcessNames.isEmpty())
- log(" No active processes");
- else
- log("Active processes are: " + activeProcessNames);
-
- log("");
- }
-}
+package org.apache.beehive.test.tools.tch.core;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import org.apache.beehive.test.tools.tch.core.configuration.ErrorMessageConstants;
+import org.apache.beehive.test.tools.tch.core.configuration.NonfatalValidationException;
+import org.apache.beehive.test.tools.tch.core.process.Process;
+import org.apache.beehive.test.tools.tch.core.process.ProcessManager;
+import org.apache.beehive.test.tools.tch.core.process.ProcessRegistry;
+import org.apache.beehive.test.tools.tch.core.test.TestRegistry;
+
+public class InitProcessManagementTask extends BaseTask
+{
+ private ProcessRegistry processRegistry = ProcessRegistry.getRegistry();
+ private TestRegistry testRegistry = TestRegistry.getRegistry();
+
+ public void execute()
+ {
+ // activate all mapped processes and check if they are valid
+ // do not initialize process managers if they are not
+ activateProcesses();
+ validateActiveProcesses();
+ if (!isValid())
+ return;
+
+ preInitProcessManagers();
+ // this might activate more processes, so validate again
+ validateActiveProcesses();
+ aggregateProcessManagerValidationErrors();
+ if (!isValid())
+ return;
+
+ initProcessManagers();
+ aggregateProcessManagerValidationErrors();
+ logActiveProcessNames();
+ }
+
+ private void activateProcesses()
+ {
+ for (Iterator iter = testRegistry.getActiveProcessNames().iterator();
+ iter.hasNext();
+ )
+ {
+ ProcessRegistry.Entry entry = null;
+ try
+ {
+ entry = processRegistry.getProcessEntry((String)iter.next());
+ }
+ catch (NonfatalValidationException ex)
+ {
+ // can happen if mapped name does not exist (user error)
+ // in that case, the tests that have this process mapped
+ // will be invalidated, and we just ignore it here
+ continue;
+ }
+ Process p = entry.getProcess();
+ if (!p.isValid())
+ {
+ addInvalidations(
+ p.getInvalidationManager().getNonfatalValidationAggregate());
+ }
+ else
+ {
+ p.activate();
+ }
+ }
+ }
+
+ private void validateActiveProcesses()
+ {
+ for (Iterator iter = getActiveProcessEntries().iterator(); iter.hasNext();)
+ {
+ Process p = ((ProcessRegistry.Entry)iter.next()).getProcess();
+ if (!p.isValid())
+ addInvalidations(
+ p.getInvalidationManager().getNonfatalValidationAggregate());
+ }
+ }
+
+ private Collection getActiveProcessEntries()
+ {
+ Collection activeProcessEntries = new HashSet();
+ for (Iterator iter = processRegistry.getEntryIterator(); iter.hasNext();)
+ {
+ ProcessRegistry.Entry entry = (ProcessRegistry.Entry)iter.next();
+ if (entry.getProcess().isActive())
+ activeProcessEntries.add(entry);
+ }
+ return activeProcessEntries;
+ }
+
+ private void preInitProcessManagers()
+ {
+ // only want to preinitialize the processes that are active (== mapped)
+ // iterate over all active processes, and call preinit with those, on their
+ // ProcessManager
+ Collection active = getActiveProcessEntries();
+ if (!active.isEmpty())
+ log("Process management pre-initialization starting...");
+ for (Iterator iter = active.iterator(); iter.hasNext();)
+ {
+ ProcessRegistry.Entry entry = null;
+ try
+ {
+ entry = (ProcessRegistry.Entry)iter.next();
+ log(" ...with process: " + entry.getProcess().getName());
+ entry.getProcessManager().preInit(entry.getProcess(), this);
+ }
+ catch (NonfatalValidationException ex)
+ {
+ invalidate(ex);
+ }
+ catch (Exception ex)
+ {
+ String message =
+ "Failed to pre-init process' PM: " + entry.getProcess().getName();
+
+ NonfatalValidationException fatalEx =
+ new NonfatalValidationException(
+ ex,
+ ErrorMessageConstants.FATAL_PROCESS_MANAGEMENT_ERROR_CODE,
+ ErrorMessageConstants.MESSAGE,
+ message);
+ invalidate(fatalEx);
+ }
+ }
+ log("");
+ }
+
+ private void initProcessManagers()
+ {
+ // only want to initialize the processes that are active (== mapped)
+ // iterate over all active processes, and call init with those, on their
+ // ProcessManager
+ Collection active = getActiveProcessEntries();
+ if (!active.isEmpty())
+ log("Process management initialization starting...");
+ for (Iterator iter = active.iterator(); iter.hasNext();)
+ {
+ ProcessRegistry.Entry entry = null;
+ try
+ {
+ entry = (ProcessRegistry.Entry)iter.next();
+ log(" ...with process: " + entry.getProcess().getName());
+ entry.getProcessManager().init(entry.getProcess(), this);
+ }
+ catch (NonfatalValidationException ex)
+ {
+ invalidate(ex);
+ }
+ catch (Exception ex)
+ {
+ String message =
+ "Failed to init process' PM: " + entry.getProcess().getName();
+
+ NonfatalValidationException fatalEx =
+ new NonfatalValidationException(
+ ex,
+ ErrorMessageConstants.FATAL_PROCESS_MANAGEMENT_ERROR_CODE,
+ ErrorMessageConstants.MESSAGE,
+ message);
+ invalidate(fatalEx);
+ }
+ }
+ log("");
+ }
+
+ private void aggregateProcessManagerValidationErrors()
+ {
+ Collection checkedProcessManagers = new HashSet();
+ for (Iterator iter = processRegistry.getEntryIterator(); iter.hasNext();)
+ {
+ ProcessRegistry.Entry entry = (ProcessRegistry.Entry)iter.next();
+ ProcessManager pm = entry.getProcessManager();
+ if (!pm.isValid() && !checkedProcessManagers.contains(pm))
+ {
+ checkedProcessManagers.add(pm);
+ addInvalidations(pm.getNonfatalValidationAggregate());
+ }
+ }
+ }
+
+ private void logActiveProcessNames()
+ {
+ Collection activeProcessNames = new HashSet();
+ for (Iterator iter = processRegistry.getEntryIterator(); iter.hasNext();)
+ {
+ ProcessRegistry.Entry entry = (ProcessRegistry.Entry)iter.next();
+ if (entry.getProcess().isActive())
+ activeProcessNames.add(entry.getProcess().getName());
+ }
+
+ // some logic for printing stuff to the screen
+ if (activeProcessNames.isEmpty())
+ log(" No active processes");
+ else
+ log("Active processes are: " + activeProcessNames);
+
+ log("");
+ }
+}
Propchange: beehive/trunk/controls/test/tools/tch/src/java/org/apache/beehive/test/tools/tch/core/InitProcessManagementTask.java
------------------------------------------------------------------------------
svn:eol-style = native