You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2011/12/31 18:23:37 UTC

svn commit: r1226141 [2/5] - in /incubator/lcf/trunk: ./ connectors/alfresco/ connectors/alfresco/alfresco-ws-client/ connectors/cmis/ connectors/documentum/dfc/ connectors/filenet/filenet-api/ connectors/filesystem/ connectors/jcifs/jcifs/ connectors/...

Modified: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityIT.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityIT.java?rev=1226141&r1=1226140&r2=1226141&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityIT.java (original)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityIT.java Sat Dec 31 17:23:35 2011
@@ -18,11 +18,6 @@
 */
 package org.apache.manifoldcf.filesystem_tests;
 
-import org.apache.manifoldcf.core.interfaces.*;
-import org.apache.manifoldcf.agents.interfaces.*;
-import org.apache.manifoldcf.crawler.interfaces.*;
-import org.apache.manifoldcf.crawler.system.ManifoldCF;
-
 import java.io.*;
 import java.util.*;
 import org.junit.*;
@@ -30,375 +25,32 @@ import org.junit.*;
 /** This is a very basic sanity check */
 public class APISanityIT extends BaseDerby
 {
+  protected APISanityTester tester;
+  
+  public APISanityIT()
+  {
+    tester = new APISanityTester(mcfInstance);
+  }
   
   @Before
-  public void createTestArea()
+  public void setupTester()
     throws Exception
   {
-    try
-    {
-      File f = new File("testdata");
-      removeDirectory(f);
-      createDirectory(f);
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.setupTestArea();
   }
   
   @After
-  public void removeTestArea()
+  public void teardownTester()
     throws Exception
   {
-    try
-    {
-      File f = new File("testdata");
-      removeDirectory(f);
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.teardownTestArea();
   }
   
   @Test
   public void sanityCheck()
     throws Exception
   {
-    try
-    {
-      // Hey, we were able to install the file system connector etc.
-      // Now, create a local test job and run it.
-      IThreadContext tc = ThreadContextFactory.make();
-      int i;
-      IJobManager jobManager = JobManagerFactory.make(tc);
-
-      // Create a basic file system connection, and save it.
-      ConfigurationNode connectionObject;
-      ConfigurationNode child;
-      Configuration requestObject;
-      Configuration result;
-      
-      connectionObject = new ConfigurationNode("repositoryconnection");
-      
-      child = new ConfigurationNode("name");
-      child.setValue("File Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("class_name");
-      child.setValue("org.apache.manifoldcf.crawler.connectors.filesystem.FileConnector");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("description");
-      child.setValue("File Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      child = new ConfigurationNode("max_connections");
-      child.setValue("100");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      requestObject = new Configuration();
-      requestObject.addChild(0,connectionObject);
-      
-      result = performAPIPutOperationViaNodes("repositoryconnections/File%20Connection",201,requestObject);
-      
-      i = 0;
-      while (i < result.getChildCount())
-      {
-        ConfigurationNode resultNode = result.findChild(i++);
-        if (resultNode.getType().equals("error"))
-          throw new Exception(resultNode.getValue());
-      }
-      
-      // Create a basic null output connection, and save it.
-      connectionObject = new ConfigurationNode("outputconnection");
-      
-      child = new ConfigurationNode("name");
-      child.setValue("Null Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("class_name");
-      child.setValue("org.apache.manifoldcf.agents.output.nullconnector.NullConnector");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("description");
-      child.setValue("Null Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      child = new ConfigurationNode("max_connections");
-      child.setValue("100");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      requestObject = new Configuration();
-      requestObject.addChild(0,connectionObject);
-      
-      result = performAPIPutOperationViaNodes("outputconnections/Null%20Connection",201,requestObject);
-      
-      i = 0;
-      while (i < result.getChildCount())
-      {
-        ConfigurationNode resultNode = result.findChild(i++);
-        if (resultNode.getType().equals("error"))
-          throw new Exception(resultNode.getValue());
-      }
-
-      // Create a job.
-      ConfigurationNode jobObject = new ConfigurationNode("job");
-      
-      child = new ConfigurationNode("description");
-      child.setValue("Test Job");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("repository_connection");
-      child.setValue("File Connection");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("output_connection");
-      child.setValue("Null Connection");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("run_mode");
-      child.setValue("scan once");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("start_mode");
-      child.setValue("manual");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("hopcount_mode");
-      child.setValue("accurate");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("document_specification");
-      // Crawl everything underneath the 'testdata' area
-      File testDataFile = new File("testdata").getCanonicalFile();
-      if (!testDataFile.exists())
-        throw new ManifoldCFException("Test data area not found!  Looking in "+testDataFile.toString());
-      if (!testDataFile.isDirectory())
-        throw new ManifoldCFException("Test data area not a directory!  Looking in "+testDataFile.toString());
-      ConfigurationNode sn = new ConfigurationNode("startpoint");
-      sn.setAttribute("path",testDataFile.toString());
-      ConfigurationNode n = new ConfigurationNode("include");
-      n.setAttribute("type","file");
-      n.setAttribute("match","*");
-      sn.addChild(sn.getChildCount(),n);
-      n = new ConfigurationNode("include");
-      n.setAttribute("type","directory");
-      n.setAttribute("match","*");
-      sn.addChild(sn.getChildCount(),n);
-      child.addChild(child.getChildCount(),sn);
-      jobObject.addChild(jobObject.getChildCount(),child);
-      
-      requestObject = new Configuration();
-      requestObject.addChild(0,jobObject);
-      
-      result = performAPIPostOperationViaNodes("jobs",201,requestObject);
-      
-      String jobIDString = null;
-      i = 0;
-      while (i < result.getChildCount())
-      {
-        ConfigurationNode resultNode = result.findChild(i++);
-        if (resultNode.getType().equals("error"))
-          throw new Exception(resultNode.getValue());
-        else if (resultNode.getType().equals("job_id"))
-          jobIDString = resultNode.getValue();
-      }
-      if (jobIDString == null)
-        throw new Exception("Missing job_id from return!");
-      
-      Long jobID = new Long(jobIDString);
-      
-      // Create the test data files.
-      createFile(new File("testdata/test1.txt"),"This is a test file");
-      createFile(new File("testdata/test2.txt"),"This is another test file");
-      createDirectory(new File("testdata/testdir"));
-      createFile(new File("testdata/testdir/test3.txt"),"This is yet another test file");
-      
-      ConfigurationNode requestNode;
-      
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // Check to be sure we actually processed the right number of documents.
-      // The test data area has 3 documents and one directory, and we have to count the root directory too.
-      long count;
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 5)
-        throw new ManifoldCFException("Wrong number of documents processed - expected 5, saw "+new Long(count).toString());
-      
-      // Add a file and recrawl
-      createFile(new File("testdata/testdir/test4.txt"),"Added file");
-
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // The test data area has 4 documents and one directory, and we have to count the root directory too.
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 6)
-        throw new ManifoldCFException("Wrong number of documents processed after add - expected 6, saw "+new Long(count).toString());
-
-      // Change a file, and recrawl
-      changeFile(new File("testdata/test1.txt"),"Modified contents");
-      
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // The test data area has 4 documents and one directory, and we have to count the root directory too.
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 6)
-        throw new ManifoldCFException("Wrong number of documents processed after change - expected 6, saw "+new Long(count).toString());
-      // We also need to make sure the new document was indexed.  Have to think about how to do this though.
-      // MHL
-      
-      // Delete a file, and recrawl
-      removeFile(new File("testdata/test2.txt"));
-      
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // Check to be sure we actually processed the right number of documents.
-      // The test data area has 3 documents and one directory, and we have to count the root directory too.
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 5)
-        throw new ManifoldCFException("Wrong number of documents processed after delete - expected 5, saw "+new Long(count).toString());
-
-      // Now, delete the job.
-      deleteJob(jobIDString);
-
-      waitJobDeleted(jobIDString, 120000L);
-      
-      // Cleanup is automatic by the base class, so we can feel free to leave jobs and connections lying around.
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.executeTest();
   }
   
-  protected void startJob(String jobIDString)
-    throws Exception
-  {
-    Configuration requestObject = new Configuration();
-    
-    Configuration result = performAPIPutOperationViaNodes("start/"+jobIDString,201,requestObject);
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-    }
-  }
-  
-  protected void deleteJob(String jobIDString)
-    throws Exception
-  {
-    Configuration result = performAPIDeleteOperationViaNodes("jobs/"+jobIDString,200);
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-    }
-
-  }
-  
-  protected String getJobStatus(String jobIDString)
-    throws Exception
-  {
-    Configuration result = performAPIGetOperationViaNodes("jobstatusesnocounts/"+jobIDString,200);
-    String status = null;
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-      else if (resultNode.getType().equals("jobstatus"))
-      {
-        int j = 0;
-        while (j < resultNode.getChildCount())
-        {
-          ConfigurationNode childNode = resultNode.findChild(j++);
-          if (childNode.getType().equals("status"))
-            status = childNode.getValue();
-        }
-      }
-    }
-    return status;
-  }
-
-  protected long getJobDocumentsProcessed(String jobIDString)
-    throws Exception
-  {
-    Configuration result = performAPIGetOperationViaNodes("jobstatuses/"+jobIDString,200);
-    String documentsProcessed = null;
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-      else if (resultNode.getType().equals("jobstatus"))
-      {
-        int j = 0;
-        while (j < resultNode.getChildCount())
-        {
-          ConfigurationNode childNode = resultNode.findChild(j++);
-          if (childNode.getType().equals("documents_processed"))
-            documentsProcessed = childNode.getValue();
-        }
-      }
-    }
-    if (documentsProcessed == null)
-      throw new Exception("Expected a documents_processed field, didn't find it");
-    return new Long(documentsProcessed).longValue();
-  }
-
-  protected void waitJobInactive(String jobIDString, long maxTime)
-    throws Exception
-  {
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() < startTime + maxTime)
-    {
-      String status = getJobStatus(jobIDString);
-      if (status == null)
-        throw new Exception("No such job: '"+jobIDString+"'");
-      if (status.equals("not yet run"))
-        throw new Exception("Job was never started.");
-      if (status.equals("done"))
-        return;
-      if (status.equals("error"))
-        throw new Exception("Job reports error.");
-      ManifoldCF.sleep(1000L);
-      continue;
-    }
-    throw new ManifoldCFException("ManifoldCF did not terminate in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
-  }
-  
-  protected void waitJobDeleted(String jobIDString, long maxTime)
-    throws Exception
-  {
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() < startTime + maxTime)
-    {
-      String status = getJobStatus(jobIDString);
-      if (status == null)
-        return;
-      ManifoldCF.sleep(1000L);
-    }
-    throw new ManifoldCFException("ManifoldCF did not delete in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
-  }
-    
-
 }

Modified: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityMySQLIT.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityMySQLIT.java?rev=1226141&r1=1226140&r2=1226141&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityMySQLIT.java (original)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityMySQLIT.java Sat Dec 31 17:23:35 2011
@@ -18,11 +18,6 @@
 */
 package org.apache.manifoldcf.filesystem_tests;
 
-import org.apache.manifoldcf.core.interfaces.*;
-import org.apache.manifoldcf.agents.interfaces.*;
-import org.apache.manifoldcf.crawler.interfaces.*;
-import org.apache.manifoldcf.crawler.system.ManifoldCF;
-
 import java.io.*;
 import java.util.*;
 import org.junit.*;
@@ -30,375 +25,32 @@ import org.junit.*;
 /** This is a very basic sanity check */
 public class APISanityMySQLIT extends BaseMySQL
 {
+  protected APISanityTester tester;
+  
+  public APISanityMySQLIT()
+  {
+    tester = new APISanityTester(mcfInstance);
+  }
   
   @Before
-  public void createTestArea()
+  public void setupTester()
     throws Exception
   {
-    try
-    {
-      File f = new File("testdata");
-      removeDirectory(f);
-      createDirectory(f);
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.setupTestArea();
   }
   
   @After
-  public void removeTestArea()
+  public void teardownTester()
     throws Exception
   {
-    try
-    {
-      File f = new File("testdata");
-      removeDirectory(f);
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.teardownTestArea();
   }
   
   @Test
   public void sanityCheck()
     throws Exception
   {
-    try
-    {
-      // Hey, we were able to install the file system connector etc.
-      // Now, create a local test job and run it.
-      IThreadContext tc = ThreadContextFactory.make();
-      int i;
-      IJobManager jobManager = JobManagerFactory.make(tc);
-
-      // Create a basic file system connection, and save it.
-      ConfigurationNode connectionObject;
-      ConfigurationNode child;
-      Configuration requestObject;
-      Configuration result;
-      
-      connectionObject = new ConfigurationNode("repositoryconnection");
-      
-      child = new ConfigurationNode("name");
-      child.setValue("File Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("class_name");
-      child.setValue("org.apache.manifoldcf.crawler.connectors.filesystem.FileConnector");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("description");
-      child.setValue("File Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      child = new ConfigurationNode("max_connections");
-      child.setValue("100");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      requestObject = new Configuration();
-      requestObject.addChild(0,connectionObject);
-      
-      result = performAPIPutOperationViaNodes("repositoryconnections/File%20Connection",201,requestObject);
-      
-      i = 0;
-      while (i < result.getChildCount())
-      {
-        ConfigurationNode resultNode = result.findChild(i++);
-        if (resultNode.getType().equals("error"))
-          throw new Exception(resultNode.getValue());
-      }
-      
-      // Create a basic null output connection, and save it.
-      connectionObject = new ConfigurationNode("outputconnection");
-      
-      child = new ConfigurationNode("name");
-      child.setValue("Null Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("class_name");
-      child.setValue("org.apache.manifoldcf.agents.output.nullconnector.NullConnector");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("description");
-      child.setValue("Null Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      child = new ConfigurationNode("max_connections");
-      child.setValue("100");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      requestObject = new Configuration();
-      requestObject.addChild(0,connectionObject);
-      
-      result = performAPIPutOperationViaNodes("outputconnections/Null%20Connection",201,requestObject);
-      
-      i = 0;
-      while (i < result.getChildCount())
-      {
-        ConfigurationNode resultNode = result.findChild(i++);
-        if (resultNode.getType().equals("error"))
-          throw new Exception(resultNode.getValue());
-      }
-
-      // Create a job.
-      ConfigurationNode jobObject = new ConfigurationNode("job");
-      
-      child = new ConfigurationNode("description");
-      child.setValue("Test Job");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("repository_connection");
-      child.setValue("File Connection");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("output_connection");
-      child.setValue("Null Connection");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("run_mode");
-      child.setValue("scan once");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("start_mode");
-      child.setValue("manual");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("hopcount_mode");
-      child.setValue("accurate");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("document_specification");
-      // Crawl everything underneath the 'testdata' area
-      File testDataFile = new File("testdata").getCanonicalFile();
-      if (!testDataFile.exists())
-        throw new ManifoldCFException("Test data area not found!  Looking in "+testDataFile.toString());
-      if (!testDataFile.isDirectory())
-        throw new ManifoldCFException("Test data area not a directory!  Looking in "+testDataFile.toString());
-      ConfigurationNode sn = new ConfigurationNode("startpoint");
-      sn.setAttribute("path",testDataFile.toString());
-      ConfigurationNode n = new ConfigurationNode("include");
-      n.setAttribute("type","file");
-      n.setAttribute("match","*");
-      sn.addChild(sn.getChildCount(),n);
-      n = new ConfigurationNode("include");
-      n.setAttribute("type","directory");
-      n.setAttribute("match","*");
-      sn.addChild(sn.getChildCount(),n);
-      child.addChild(child.getChildCount(),sn);
-      jobObject.addChild(jobObject.getChildCount(),child);
-      
-      requestObject = new Configuration();
-      requestObject.addChild(0,jobObject);
-      
-      result = performAPIPostOperationViaNodes("jobs",201,requestObject);
-      
-      String jobIDString = null;
-      i = 0;
-      while (i < result.getChildCount())
-      {
-        ConfigurationNode resultNode = result.findChild(i++);
-        if (resultNode.getType().equals("error"))
-          throw new Exception(resultNode.getValue());
-        else if (resultNode.getType().equals("job_id"))
-          jobIDString = resultNode.getValue();
-      }
-      if (jobIDString == null)
-        throw new Exception("Missing job_id from return!");
-      
-      Long jobID = new Long(jobIDString);
-      
-      // Create the test data files.
-      createFile(new File("testdata/test1.txt"),"This is a test file");
-      createFile(new File("testdata/test2.txt"),"This is another test file");
-      createDirectory(new File("testdata/testdir"));
-      createFile(new File("testdata/testdir/test3.txt"),"This is yet another test file");
-      
-      ConfigurationNode requestNode;
-      
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // Check to be sure we actually processed the right number of documents.
-      // The test data area has 3 documents and one directory, and we have to count the root directory too.
-      long count;
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 5)
-        throw new ManifoldCFException("Wrong number of documents processed - expected 5, saw "+new Long(count).toString());
-      
-      // Add a file and recrawl
-      createFile(new File("testdata/testdir/test4.txt"),"Added file");
-
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // The test data area has 4 documents and one directory, and we have to count the root directory too.
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 6)
-        throw new ManifoldCFException("Wrong number of documents processed after add - expected 6, saw "+new Long(count).toString());
-
-      // Change a file, and recrawl
-      changeFile(new File("testdata/test1.txt"),"Modified contents");
-      
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // The test data area has 4 documents and one directory, and we have to count the root directory too.
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 6)
-        throw new ManifoldCFException("Wrong number of documents processed after change - expected 6, saw "+new Long(count).toString());
-      // We also need to make sure the new document was indexed.  Have to think about how to do this though.
-      // MHL
-      
-      // Delete a file, and recrawl
-      removeFile(new File("testdata/test2.txt"));
-      
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // Check to be sure we actually processed the right number of documents.
-      // The test data area has 3 documents and one directory, and we have to count the root directory too.
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 5)
-        throw new ManifoldCFException("Wrong number of documents processed after delete - expected 5, saw "+new Long(count).toString());
-
-      // Now, delete the job.
-      deleteJob(jobIDString);
-
-      waitJobDeleted(jobIDString, 120000L);
-      
-      // Cleanup is automatic by the base class, so we can feel free to leave jobs and connections lying around.
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.executeTest();
   }
   
-  protected void startJob(String jobIDString)
-    throws Exception
-  {
-    Configuration requestObject = new Configuration();
-    
-    Configuration result = performAPIPutOperationViaNodes("start/"+jobIDString,201,requestObject);
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-    }
-  }
-  
-  protected void deleteJob(String jobIDString)
-    throws Exception
-  {
-    Configuration result = performAPIDeleteOperationViaNodes("jobs/"+jobIDString,200);
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-    }
-
-  }
-  
-  protected String getJobStatus(String jobIDString)
-    throws Exception
-  {
-    Configuration result = performAPIGetOperationViaNodes("jobstatusesnocounts/"+jobIDString,200);
-    String status = null;
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-      else if (resultNode.getType().equals("jobstatus"))
-      {
-        int j = 0;
-        while (j < resultNode.getChildCount())
-        {
-          ConfigurationNode childNode = resultNode.findChild(j++);
-          if (childNode.getType().equals("status"))
-            status = childNode.getValue();
-        }
-      }
-    }
-    return status;
-  }
-
-  protected long getJobDocumentsProcessed(String jobIDString)
-    throws Exception
-  {
-    Configuration result = performAPIGetOperationViaNodes("jobstatuses/"+jobIDString,200);
-    String documentsProcessed = null;
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-      else if (resultNode.getType().equals("jobstatus"))
-      {
-        int j = 0;
-        while (j < resultNode.getChildCount())
-        {
-          ConfigurationNode childNode = resultNode.findChild(j++);
-          if (childNode.getType().equals("documents_processed"))
-            documentsProcessed = childNode.getValue();
-        }
-      }
-    }
-    if (documentsProcessed == null)
-      throw new Exception("Expected a documents_processed field, didn't find it");
-    return new Long(documentsProcessed).longValue();
-  }
-
-  protected void waitJobInactive(String jobIDString, long maxTime)
-    throws Exception
-  {
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() < startTime + maxTime)
-    {
-      String status = getJobStatus(jobIDString);
-      if (status == null)
-        throw new Exception("No such job: '"+jobIDString+"'");
-      if (status.equals("not yet run"))
-        throw new Exception("Job was never started.");
-      if (status.equals("done"))
-        return;
-      if (status.equals("error"))
-        throw new Exception("Job reports error.");
-      ManifoldCF.sleep(1000L);
-      continue;
-    }
-    throw new ManifoldCFException("ManifoldCF did not terminate in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
-  }
-  
-  protected void waitJobDeleted(String jobIDString, long maxTime)
-    throws Exception
-  {
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() < startTime + maxTime)
-    {
-      String status = getJobStatus(jobIDString);
-      if (status == null)
-        return;
-      ManifoldCF.sleep(1000L);
-    }
-    throw new ManifoldCFException("ManifoldCF did not delete in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
-  }
-    
-
 }

Modified: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityPostgresqlIT.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityPostgresqlIT.java?rev=1226141&r1=1226140&r2=1226141&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityPostgresqlIT.java (original)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityPostgresqlIT.java Sat Dec 31 17:23:35 2011
@@ -18,11 +18,6 @@
 */
 package org.apache.manifoldcf.filesystem_tests;
 
-import org.apache.manifoldcf.core.interfaces.*;
-import org.apache.manifoldcf.agents.interfaces.*;
-import org.apache.manifoldcf.crawler.interfaces.*;
-import org.apache.manifoldcf.crawler.system.ManifoldCF;
-
 import java.io.*;
 import java.util.*;
 import org.junit.*;
@@ -30,375 +25,32 @@ import org.junit.*;
 /** This is a very basic sanity check */
 public class APISanityPostgresqlIT extends BasePostgresql
 {
+  protected APISanityTester tester;
+  
+  public APISanityPostgresqlIT()
+  {
+    tester = new APISanityTester(mcfInstance);
+  }
   
   @Before
-  public void createTestArea()
+  public void setupTester()
     throws Exception
   {
-    try
-    {
-      File f = new File("testdata");
-      removeDirectory(f);
-      createDirectory(f);
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.setupTestArea();
   }
   
   @After
-  public void removeTestArea()
+  public void teardownTester()
     throws Exception
   {
-    try
-    {
-      File f = new File("testdata");
-      removeDirectory(f);
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.teardownTestArea();
   }
   
   @Test
   public void sanityCheck()
     throws Exception
   {
-    try
-    {
-      // Hey, we were able to install the file system connector etc.
-      // Now, create a local test job and run it.
-      IThreadContext tc = ThreadContextFactory.make();
-      int i;
-      IJobManager jobManager = JobManagerFactory.make(tc);
-
-      // Create a basic file system connection, and save it.
-      ConfigurationNode connectionObject;
-      ConfigurationNode child;
-      Configuration requestObject;
-      Configuration result;
-      
-      connectionObject = new ConfigurationNode("repositoryconnection");
-      
-      child = new ConfigurationNode("name");
-      child.setValue("File Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("class_name");
-      child.setValue("org.apache.manifoldcf.crawler.connectors.filesystem.FileConnector");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("description");
-      child.setValue("File Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      child = new ConfigurationNode("max_connections");
-      child.setValue("100");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      requestObject = new Configuration();
-      requestObject.addChild(0,connectionObject);
-      
-      result = performAPIPutOperationViaNodes("repositoryconnections/File%20Connection",201,requestObject);
-      
-      i = 0;
-      while (i < result.getChildCount())
-      {
-        ConfigurationNode resultNode = result.findChild(i++);
-        if (resultNode.getType().equals("error"))
-          throw new Exception(resultNode.getValue());
-      }
-      
-      // Create a basic null output connection, and save it.
-      connectionObject = new ConfigurationNode("outputconnection");
-      
-      child = new ConfigurationNode("name");
-      child.setValue("Null Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("class_name");
-      child.setValue("org.apache.manifoldcf.agents.output.nullconnector.NullConnector");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-      
-      child = new ConfigurationNode("description");
-      child.setValue("Null Connection");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      child = new ConfigurationNode("max_connections");
-      child.setValue("100");
-      connectionObject.addChild(connectionObject.getChildCount(),child);
-
-      requestObject = new Configuration();
-      requestObject.addChild(0,connectionObject);
-      
-      result = performAPIPutOperationViaNodes("outputconnections/Null%20Connection",201,requestObject);
-      
-      i = 0;
-      while (i < result.getChildCount())
-      {
-        ConfigurationNode resultNode = result.findChild(i++);
-        if (resultNode.getType().equals("error"))
-          throw new Exception(resultNode.getValue());
-      }
-
-      // Create a job.
-      ConfigurationNode jobObject = new ConfigurationNode("job");
-      
-      child = new ConfigurationNode("description");
-      child.setValue("Test Job");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("repository_connection");
-      child.setValue("File Connection");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("output_connection");
-      child.setValue("Null Connection");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("run_mode");
-      child.setValue("scan once");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("start_mode");
-      child.setValue("manual");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("hopcount_mode");
-      child.setValue("accurate");
-      jobObject.addChild(jobObject.getChildCount(),child);
-
-      child = new ConfigurationNode("document_specification");
-      // Crawl everything underneath the 'testdata' area
-      File testDataFile = new File("testdata").getCanonicalFile();
-      if (!testDataFile.exists())
-        throw new ManifoldCFException("Test data area not found!  Looking in "+testDataFile.toString());
-      if (!testDataFile.isDirectory())
-        throw new ManifoldCFException("Test data area not a directory!  Looking in "+testDataFile.toString());
-      ConfigurationNode sn = new ConfigurationNode("startpoint");
-      sn.setAttribute("path",testDataFile.toString());
-      ConfigurationNode n = new ConfigurationNode("include");
-      n.setAttribute("type","file");
-      n.setAttribute("match","*");
-      sn.addChild(sn.getChildCount(),n);
-      n = new ConfigurationNode("include");
-      n.setAttribute("type","directory");
-      n.setAttribute("match","*");
-      sn.addChild(sn.getChildCount(),n);
-      child.addChild(child.getChildCount(),sn);
-      jobObject.addChild(jobObject.getChildCount(),child);
-      
-      requestObject = new Configuration();
-      requestObject.addChild(0,jobObject);
-      
-      result = performAPIPostOperationViaNodes("jobs",201,requestObject);
-      
-      String jobIDString = null;
-      i = 0;
-      while (i < result.getChildCount())
-      {
-        ConfigurationNode resultNode = result.findChild(i++);
-        if (resultNode.getType().equals("error"))
-          throw new Exception(resultNode.getValue());
-        else if (resultNode.getType().equals("job_id"))
-          jobIDString = resultNode.getValue();
-      }
-      if (jobIDString == null)
-        throw new Exception("Missing job_id from return!");
-      
-      Long jobID = new Long(jobIDString);
-      
-      // Create the test data files.
-      createFile(new File("testdata/test1.txt"),"This is a test file");
-      createFile(new File("testdata/test2.txt"),"This is another test file");
-      createDirectory(new File("testdata/testdir"));
-      createFile(new File("testdata/testdir/test3.txt"),"This is yet another test file");
-      
-      ConfigurationNode requestNode;
-      
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // Check to be sure we actually processed the right number of documents.
-      // The test data area has 3 documents and one directory, and we have to count the root directory too.
-      long count;
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 5)
-        throw new ManifoldCFException("Wrong number of documents processed - expected 5, saw "+new Long(count).toString());
-      
-      // Add a file and recrawl
-      createFile(new File("testdata/testdir/test4.txt"),"Added file");
-
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // The test data area has 4 documents and one directory, and we have to count the root directory too.
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 6)
-        throw new ManifoldCFException("Wrong number of documents processed after add - expected 6, saw "+new Long(count).toString());
-
-      // Change a file, and recrawl
-      changeFile(new File("testdata/test1.txt"),"Modified contents");
-      
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // The test data area has 4 documents and one directory, and we have to count the root directory too.
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 6)
-        throw new ManifoldCFException("Wrong number of documents processed after change - expected 6, saw "+new Long(count).toString());
-      // We also need to make sure the new document was indexed.  Have to think about how to do this though.
-      // MHL
-      
-      // Delete a file, and recrawl
-      removeFile(new File("testdata/test2.txt"));
-      
-      // Now, start the job, and wait until it completes.
-      startJob(jobIDString);
-      waitJobInactive(jobIDString, 120000L);
-
-      // Check to be sure we actually processed the right number of documents.
-      // The test data area has 3 documents and one directory, and we have to count the root directory too.
-      count = getJobDocumentsProcessed(jobIDString);
-      if (count != 5)
-        throw new ManifoldCFException("Wrong number of documents processed after delete - expected 5, saw "+new Long(count).toString());
-
-      // Now, delete the job.
-      deleteJob(jobIDString);
-
-      waitJobDeleted(jobIDString, 120000L);
-      
-      // Cleanup is automatic by the base class, so we can feel free to leave jobs and connections lying around.
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.executeTest();
   }
   
-  protected void startJob(String jobIDString)
-    throws Exception
-  {
-    Configuration requestObject = new Configuration();
-    
-    Configuration result = performAPIPutOperationViaNodes("start/"+jobIDString,201,requestObject);
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-    }
-  }
-  
-  protected void deleteJob(String jobIDString)
-    throws Exception
-  {
-    Configuration result = performAPIDeleteOperationViaNodes("jobs/"+jobIDString,200);
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-    }
-
-  }
-  
-  protected String getJobStatus(String jobIDString)
-    throws Exception
-  {
-    Configuration result = performAPIGetOperationViaNodes("jobstatusesnocounts/"+jobIDString,200);
-    String status = null;
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-      else if (resultNode.getType().equals("jobstatus"))
-      {
-        int j = 0;
-        while (j < resultNode.getChildCount())
-        {
-          ConfigurationNode childNode = resultNode.findChild(j++);
-          if (childNode.getType().equals("status"))
-            status = childNode.getValue();
-        }
-      }
-    }
-    return status;
-  }
-
-  protected long getJobDocumentsProcessed(String jobIDString)
-    throws Exception
-  {
-    Configuration result = performAPIGetOperationViaNodes("jobstatuses/"+jobIDString,200);
-    String documentsProcessed = null;
-    int i = 0;
-    while (i < result.getChildCount())
-    {
-      ConfigurationNode resultNode = result.findChild(i++);
-      if (resultNode.getType().equals("error"))
-        throw new Exception(resultNode.getValue());
-      else if (resultNode.getType().equals("jobstatus"))
-      {
-        int j = 0;
-        while (j < resultNode.getChildCount())
-        {
-          ConfigurationNode childNode = resultNode.findChild(j++);
-          if (childNode.getType().equals("documents_processed"))
-            documentsProcessed = childNode.getValue();
-        }
-      }
-    }
-    if (documentsProcessed == null)
-      throw new Exception("Expected a documents_processed field, didn't find it");
-    return new Long(documentsProcessed).longValue();
-  }
-
-  protected void waitJobInactive(String jobIDString, long maxTime)
-    throws Exception
-  {
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() < startTime + maxTime)
-    {
-      String status = getJobStatus(jobIDString);
-      if (status == null)
-        throw new Exception("No such job: '"+jobIDString+"'");
-      if (status.equals("not yet run"))
-        throw new Exception("Job was never started.");
-      if (status.equals("done"))
-        return;
-      if (status.equals("error"))
-        throw new Exception("Job reports error.");
-      ManifoldCF.sleep(1000L);
-      continue;
-    }
-    throw new ManifoldCFException("ManifoldCF did not terminate in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
-  }
-  
-  protected void waitJobDeleted(String jobIDString, long maxTime)
-    throws Exception
-  {
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() < startTime + maxTime)
-    {
-      String status = getJobStatus(jobIDString);
-      if (status == null)
-        return;
-      ManifoldCF.sleep(1000L);
-    }
-    throw new ManifoldCFException("ManifoldCF did not delete in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
-  }
-    
-
 }

Added: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityTester.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityTester.java?rev=1226141&view=auto
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityTester.java (added)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityTester.java Sat Dec 31 17:23:35 2011
@@ -0,0 +1,263 @@
+/* $Id$ */
+
+/**
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.apache.manifoldcf.filesystem_tests;
+
+import org.apache.manifoldcf.core.interfaces.*;
+import org.apache.manifoldcf.agents.interfaces.*;
+import org.apache.manifoldcf.crawler.interfaces.*;
+import org.apache.manifoldcf.crawler.system.ManifoldCF;
+
+import java.io.*;
+import java.util.*;
+
+/** This is a very basic sanity check */
+public class APISanityTester
+{
+  protected org.apache.manifoldcf.crawler.tests.ManifoldCFInstance instance;
+  
+  public APISanityTester(org.apache.manifoldcf.crawler.tests.ManifoldCFInstance instance)
+  {
+    this.instance = instance;
+  }
+  
+  public void setupTestArea()
+    throws Exception
+  {
+    File f = new File("testdata");
+    FileHelper.removeDirectory(f);
+    FileHelper.createDirectory(f);
+  }
+  
+  public void teardownTestArea()
+    throws Exception
+  {
+    File f = new File("testdata");
+    FileHelper.removeDirectory(f);
+  }
+  
+  public void executeTest()
+    throws Exception
+  {
+    // Hey, we were able to install the file system connector etc.
+    // Now, create a local test job and run it.
+    int i;
+
+    // Create a basic file system connection, and save it.
+    ConfigurationNode connectionObject;
+    ConfigurationNode child;
+    Configuration requestObject;
+    Configuration result;
+      
+    connectionObject = new ConfigurationNode("repositoryconnection");
+    
+    child = new ConfigurationNode("name");
+    child.setValue("File Connection");
+    connectionObject.addChild(connectionObject.getChildCount(),child);
+      
+    child = new ConfigurationNode("class_name");
+    child.setValue("org.apache.manifoldcf.crawler.connectors.filesystem.FileConnector");
+    connectionObject.addChild(connectionObject.getChildCount(),child);
+      
+    child = new ConfigurationNode("description");
+    child.setValue("File Connection");
+    connectionObject.addChild(connectionObject.getChildCount(),child);
+
+    child = new ConfigurationNode("max_connections");
+    child.setValue("100");
+    connectionObject.addChild(connectionObject.getChildCount(),child);
+
+    requestObject = new Configuration();
+    requestObject.addChild(0,connectionObject);
+      
+    result = instance.performAPIPutOperationViaNodes("repositoryconnections/File%20Connection",201,requestObject);
+      
+    i = 0;
+    while (i < result.getChildCount())
+    {
+      ConfigurationNode resultNode = result.findChild(i++);
+      if (resultNode.getType().equals("error"))
+        throw new Exception(resultNode.getValue());
+    }
+      
+    // Create a basic null output connection, and save it.
+    connectionObject = new ConfigurationNode("outputconnection");
+      
+    child = new ConfigurationNode("name");
+    child.setValue("Null Connection");
+    connectionObject.addChild(connectionObject.getChildCount(),child);
+      
+    child = new ConfigurationNode("class_name");
+    child.setValue("org.apache.manifoldcf.agents.output.nullconnector.NullConnector");
+    connectionObject.addChild(connectionObject.getChildCount(),child);
+      
+    child = new ConfigurationNode("description");
+    child.setValue("Null Connection");
+    connectionObject.addChild(connectionObject.getChildCount(),child);
+
+    child = new ConfigurationNode("max_connections");
+    child.setValue("100");
+    connectionObject.addChild(connectionObject.getChildCount(),child);
+
+    requestObject = new Configuration();
+    requestObject.addChild(0,connectionObject);
+      
+    result = instance.performAPIPutOperationViaNodes("outputconnections/Null%20Connection",201,requestObject);
+      
+    i = 0;
+    while (i < result.getChildCount())
+    {
+      ConfigurationNode resultNode = result.findChild(i++);
+      if (resultNode.getType().equals("error"))
+        throw new Exception(resultNode.getValue());
+    }
+
+    // Create a job.
+    ConfigurationNode jobObject = new ConfigurationNode("job");
+      
+    child = new ConfigurationNode("description");
+    child.setValue("Test Job");
+    jobObject.addChild(jobObject.getChildCount(),child);
+
+    child = new ConfigurationNode("repository_connection");
+    child.setValue("File Connection");
+    jobObject.addChild(jobObject.getChildCount(),child);
+
+    child = new ConfigurationNode("output_connection");
+    child.setValue("Null Connection");
+    jobObject.addChild(jobObject.getChildCount(),child);
+
+    child = new ConfigurationNode("run_mode");
+    child.setValue("scan once");
+    jobObject.addChild(jobObject.getChildCount(),child);
+
+    child = new ConfigurationNode("start_mode");
+    child.setValue("manual");
+    jobObject.addChild(jobObject.getChildCount(),child);
+
+    child = new ConfigurationNode("hopcount_mode");
+    child.setValue("accurate");
+    jobObject.addChild(jobObject.getChildCount(),child);
+
+    child = new ConfigurationNode("document_specification");
+    // Crawl everything underneath the 'testdata' area
+    File testDataFile = new File("testdata").getCanonicalFile();
+    if (!testDataFile.exists())
+      throw new ManifoldCFException("Test data area not found!  Looking in "+testDataFile.toString());
+    if (!testDataFile.isDirectory())
+      throw new ManifoldCFException("Test data area not a directory!  Looking in "+testDataFile.toString());
+    ConfigurationNode sn = new ConfigurationNode("startpoint");
+    sn.setAttribute("path",testDataFile.toString());
+    ConfigurationNode n = new ConfigurationNode("include");
+    n.setAttribute("type","file");
+    n.setAttribute("match","*");
+    sn.addChild(sn.getChildCount(),n);
+    n = new ConfigurationNode("include");
+    n.setAttribute("type","directory");
+    n.setAttribute("match","*");
+    sn.addChild(sn.getChildCount(),n);
+    child.addChild(child.getChildCount(),sn);
+    jobObject.addChild(jobObject.getChildCount(),child);
+      
+    requestObject = new Configuration();
+    requestObject.addChild(0,jobObject);
+      
+    result = instance.performAPIPostOperationViaNodes("jobs",201,requestObject);
+      
+    String jobIDString = null;
+    i = 0;
+    while (i < result.getChildCount())
+    {
+      ConfigurationNode resultNode = result.findChild(i++);
+      if (resultNode.getType().equals("error"))
+        throw new Exception(resultNode.getValue());
+      else if (resultNode.getType().equals("job_id"))
+        jobIDString = resultNode.getValue();
+    }
+    if (jobIDString == null)
+      throw new Exception("Missing job_id from return!");
+      
+    Long jobID = new Long(jobIDString);
+      
+    // Create the test data files.
+    FileHelper.createFile(new File("testdata/test1.txt"),"This is a test file");
+    FileHelper.createFile(new File("testdata/test2.txt"),"This is another test file");
+    FileHelper.createDirectory(new File("testdata/testdir"));
+    FileHelper.createFile(new File("testdata/testdir/test3.txt"),"This is yet another test file");
+      
+    ConfigurationNode requestNode;
+      
+    // Now, start the job, and wait until it completes.
+    instance.startJobAPI(jobIDString);
+    instance.waitJobInactiveAPI(jobIDString, 120000L);
+
+    // Check to be sure we actually processed the right number of documents.
+    // The test data area has 3 documents and one directory, and we have to count the root directory too.
+    long count;
+    count = instance.getJobDocumentsProcessedAPI(jobIDString);
+    if (count != 5)
+      throw new ManifoldCFException("Wrong number of documents processed - expected 5, saw "+new Long(count).toString());
+      
+    // Add a file and recrawl
+    FileHelper.createFile(new File("testdata/testdir/test4.txt"),"Added file");
+
+    // Now, start the job, and wait until it completes.
+    instance.startJobAPI(jobIDString);
+    instance.waitJobInactiveAPI(jobIDString, 120000L);
+
+    // The test data area has 4 documents and one directory, and we have to count the root directory too.
+    count = instance.getJobDocumentsProcessedAPI(jobIDString);
+    if (count != 6)
+      throw new ManifoldCFException("Wrong number of documents processed after add - expected 6, saw "+new Long(count).toString());
+
+    // Change a file, and recrawl
+    FileHelper.changeFile(new File("testdata/test1.txt"),"Modified contents");
+      
+    // Now, start the job, and wait until it completes.
+    instance.startJobAPI(jobIDString);
+    instance.waitJobInactiveAPI(jobIDString, 120000L);
+
+    // The test data area has 4 documents and one directory, and we have to count the root directory too.
+    count = instance.getJobDocumentsProcessedAPI(jobIDString);
+    if (count != 6)
+      throw new ManifoldCFException("Wrong number of documents processed after change - expected 6, saw "+new Long(count).toString());
+    // We also need to make sure the new document was indexed.  Have to think about how to do this though.
+    // MHL
+      
+    // Delete a file, and recrawl
+    FileHelper.removeFile(new File("testdata/test2.txt"));
+      
+    // Now, start the job, and wait until it completes.
+    instance.startJobAPI(jobIDString);
+    instance.waitJobInactiveAPI(jobIDString, 120000L);
+
+    // Check to be sure we actually processed the right number of documents.
+    // The test data area has 3 documents and one directory, and we have to count the root directory too.
+    count = instance.getJobDocumentsProcessedAPI(jobIDString);
+    if (count != 5)
+      throw new ManifoldCFException("Wrong number of documents processed after delete - expected 5, saw "+new Long(count).toString());
+
+    // Now, delete the job.
+    instance.deleteJobAPI(jobIDString);
+
+    instance.waitJobDeletedAPI(jobIDString, 120000L);
+      
+    // Cleanup is automatic by the base class, so we can feel free to leave jobs and connections lying around.
+  }
+  
+}

Propchange: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityTester.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/APISanityTester.java
------------------------------------------------------------------------------
    svn:keywords = Id

Modified: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseDerby.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseDerby.java?rev=1226141&r1=1226140&r2=1226141&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseDerby.java (original)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseDerby.java Sat Dec 31 17:23:35 2011
@@ -49,67 +49,4 @@ public class BaseDerby extends org.apach
   {
     return new String[]{"org.apache.manifoldcf.agents.output.nullconnector.NullConnector"};
   }
-  
-  protected void createDirectory(File f)
-    throws Exception
-  {
-    if (f.mkdirs() == false)
-      throw new Exception("Failed to create directory "+f.toString());
-  }
-  
-  protected void removeDirectory(File f)
-    throws Exception
-  {
-    File[] files = f.listFiles();
-    if (files != null)
-    {
-      int i = 0;
-      while (i < files.length)
-      {
-        File subfile = files[i++];
-        if (subfile.isDirectory())
-          removeDirectory(subfile);
-        else
-          subfile.delete();
-      }
-    }
-    f.delete();
-  }
-  
-  protected void createFile(File f, String contents)
-    throws Exception
-  {
-    OutputStream os = new FileOutputStream(f);
-    try
-    {
-      Writer w = new OutputStreamWriter(os,"utf-8");
-      try
-      {
-        w.write(contents);
-      }
-      finally
-      {
-        w.flush();
-      }
-    }
-    finally
-    {
-      os.close();
-    }
-  }
-  
-  protected void removeFile(File f)
-    throws Exception
-  {
-    if (f.delete() == false)
-      throw new Exception("Failed to delete file "+f.toString());
-  }
-  
-  protected void changeFile(File f, String newContents)
-    throws Exception
-  {
-    removeFile(f);
-    createFile(f,newContents);
-  }
-  
 }

Modified: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseHSQLDB.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseHSQLDB.java?rev=1226141&r1=1226140&r2=1226141&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseHSQLDB.java (original)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseHSQLDB.java Sat Dec 31 17:23:35 2011
@@ -49,67 +49,4 @@ public class BaseHSQLDB extends org.apac
   {
     return new String[]{"org.apache.manifoldcf.agents.output.nullconnector.NullConnector"};
   }
-  
-  protected void createDirectory(File f)
-    throws Exception
-  {
-    if (f.mkdirs() == false)
-      throw new Exception("Failed to create directory "+f.toString());
-  }
-  
-  protected void removeDirectory(File f)
-    throws Exception
-  {
-    File[] files = f.listFiles();
-    if (files != null)
-    {
-      int i = 0;
-      while (i < files.length)
-      {
-        File subfile = files[i++];
-        if (subfile.isDirectory())
-          removeDirectory(subfile);
-        else
-          subfile.delete();
-      }
-    }
-    f.delete();
-  }
-  
-  protected void createFile(File f, String contents)
-    throws Exception
-  {
-    OutputStream os = new FileOutputStream(f);
-    try
-    {
-      Writer w = new OutputStreamWriter(os,"utf-8");
-      try
-      {
-        w.write(contents);
-      }
-      finally
-      {
-        w.flush();
-      }
-    }
-    finally
-    {
-      os.close();
-    }
-  }
-  
-  protected void removeFile(File f)
-    throws Exception
-  {
-    if (f.delete() == false)
-      throw new Exception("Failed to delete file "+f.toString());
-  }
-  
-  protected void changeFile(File f, String newContents)
-    throws Exception
-  {
-    removeFile(f);
-    createFile(f,newContents);
-  }
-  
 }

Modified: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseMySQL.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseMySQL.java?rev=1226141&r1=1226140&r2=1226141&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseMySQL.java (original)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BaseMySQL.java Sat Dec 31 17:23:35 2011
@@ -49,67 +49,4 @@ public class BaseMySQL extends org.apach
   {
     return new String[]{"org.apache.manifoldcf.agents.output.nullconnector.NullConnector"};
   }
-  
-  protected void createDirectory(File f)
-    throws Exception
-  {
-    if (f.mkdirs() == false)
-      throw new Exception("Failed to create directory "+f.toString());
-  }
-  
-  protected void removeDirectory(File f)
-    throws Exception
-  {
-    File[] files = f.listFiles();
-    if (files != null)
-    {
-      int i = 0;
-      while (i < files.length)
-      {
-        File subfile = files[i++];
-        if (subfile.isDirectory())
-          removeDirectory(subfile);
-        else
-          subfile.delete();
-      }
-    }
-    f.delete();
-  }
-  
-  protected void createFile(File f, String contents)
-    throws Exception
-  {
-    OutputStream os = new FileOutputStream(f);
-    try
-    {
-      Writer w = new OutputStreamWriter(os,"utf-8");
-      try
-      {
-        w.write(contents);
-      }
-      finally
-      {
-        w.flush();
-      }
-    }
-    finally
-    {
-      os.close();
-    }
-  }
-  
-  protected void removeFile(File f)
-    throws Exception
-  {
-    if (f.delete() == false)
-      throw new Exception("Failed to delete file "+f.toString());
-  }
-  
-  protected void changeFile(File f, String newContents)
-    throws Exception
-  {
-    removeFile(f);
-    createFile(f,newContents);
-  }
-  
 }

Modified: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BasePostgresql.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BasePostgresql.java?rev=1226141&r1=1226140&r2=1226141&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BasePostgresql.java (original)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BasePostgresql.java Sat Dec 31 17:23:35 2011
@@ -49,67 +49,4 @@ public class BasePostgresql extends org.
   {
     return new String[]{"org.apache.manifoldcf.agents.output.nullconnector.NullConnector"};
   }
-  
-  protected void createDirectory(File f)
-    throws Exception
-  {
-    if (f.mkdirs() == false)
-      throw new Exception("Failed to create directory "+f.toString());
-  }
-  
-  protected void removeDirectory(File f)
-    throws Exception
-  {
-    File[] files = f.listFiles();
-    if (files != null)
-    {
-      int i = 0;
-      while (i < files.length)
-      {
-        File subfile = files[i++];
-        if (subfile.isDirectory())
-          removeDirectory(subfile);
-        else
-          subfile.delete();
-      }
-    }
-    f.delete();
-  }
-  
-  protected void createFile(File f, String contents)
-    throws Exception
-  {
-    OutputStream os = new FileOutputStream(f);
-    try
-    {
-      Writer w = new OutputStreamWriter(os,"utf-8");
-      try
-      {
-        w.write(contents);
-      }
-      finally
-      {
-        w.flush();
-      }
-    }
-    finally
-    {
-      os.close();
-    }
-  }
-  
-  protected void removeFile(File f)
-    throws Exception
-  {
-    if (f.delete() == false)
-      throw new Exception("Failed to delete file "+f.toString());
-  }
-  
-  protected void changeFile(File f, String newContents)
-    throws Exception
-  {
-    removeFile(f);
-    createFile(f,newContents);
-  }
-  
 }

Modified: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BigCrawlDerbyLT.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BigCrawlDerbyLT.java?rev=1226141&r1=1226140&r2=1226141&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BigCrawlDerbyLT.java (original)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BigCrawlDerbyLT.java Sat Dec 31 17:23:35 2011
@@ -18,11 +18,6 @@
 */
 package org.apache.manifoldcf.filesystem_tests;
 
-import org.apache.manifoldcf.core.interfaces.*;
-import org.apache.manifoldcf.agents.interfaces.*;
-import org.apache.manifoldcf.crawler.interfaces.*;
-import org.apache.manifoldcf.crawler.system.ManifoldCF;
-
 import java.io.*;
 import java.util.*;
 import org.junit.*;
@@ -30,211 +25,31 @@ import org.junit.*;
 /** This is a very basic sanity check */
 public class BigCrawlDerbyLT extends BaseDerby
 {
+  protected BigCrawlTester tester;
+  
+  public BigCrawlDerbyLT()
+  {
+    tester = new BigCrawlTester(mcfInstance);
+  }
   
   @Before
-  public void createTestArea()
+  public void setupTester()
     throws Exception
   {
-    try
-    {
-      File f = new File("testdata");
-      removeDirectory(f);
-      createDirectory(f);
-      // Create the test data files.
-      String baseFileName = "testdata/";
-      int i0 = 0;
-      while (i0 < 10)
-      {
-        String fileName0 = baseFileName + "/dir-" + i0;
-        createDirectory(new File(fileName0));
-        int i1 = 0;
-        while (i1 < 10)
-        {
-          String fileName1 = fileName0 + "/dir-" + i1;
-          createDirectory(new File(fileName1));
-          int i2 = 0;
-          while (i2 < 10)
-          {
-            String fileName2 = fileName1 + "/dir-" + i2;
-            createDirectory(new File(fileName2));
-            int i3 = 0;
-            while (i3 < 10)
-            {
-              String fileName3 = fileName2 + "/dir-" + i3;
-              createDirectory(new File(fileName3));
-              int i4 = 0;
-              while (i4 < 10)
-              {
-                String fileName4 = fileName3 + "/file-"+i4;
-                createFile(new File(fileName4),"Test file "+i0+":"+i1+":"+i2+":"+i3+":"+i4);
-                i4++;
-              }
-              i3++;
-            }
-            i2++;
-          }
-          i1++;
-        }
-        i0++;
-      }
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
-    System.out.println("Done generating files");
+    tester.setupTestArea();
   }
   
   @After
-  public void removeTestArea()
+  public void teardownTester()
     throws Exception
   {
-    System.out.println("Removing generated files");
-    try
-    {
-      File f = new File("testdata");
-      removeDirectory(f);
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.teardownTestArea();
   }
   
   @Test
   public void bigCrawl()
     throws Exception
   {
-    try
-    {
-      // Hey, we were able to install the file system connector etc.
-      // Now, create a local test job and run it.
-      IThreadContext tc = ThreadContextFactory.make();
-      
-      // Create a basic file system connection, and save it.
-      IRepositoryConnectionManager mgr = RepositoryConnectionManagerFactory.make(tc);
-      IRepositoryConnection conn = mgr.create();
-      conn.setName("File Connection");
-      conn.setDescription("File Connection");
-      conn.setClassName("org.apache.manifoldcf.crawler.connectors.filesystem.FileConnector");
-      conn.setMaxConnections(100);
-      // Now, save
-      mgr.save(conn);
-      
-      // Create a basic null output connection, and save it.
-      IOutputConnectionManager outputMgr = OutputConnectionManagerFactory.make(tc);
-      IOutputConnection outputConn = outputMgr.create();
-      outputConn.setName("Null Connection");
-      outputConn.setDescription("Null Connection");
-      outputConn.setClassName("org.apache.manifoldcf.agents.output.nullconnector.NullConnector");
-      outputConn.setMaxConnections(100);
-      // Now, save
-      outputMgr.save(outputConn);
-
-      // Create a job.
-      IJobManager jobManager = JobManagerFactory.make(tc);
-      IJobDescription job = jobManager.createJob();
-      job.setDescription("Test Job");
-      job.setConnectionName("File Connection");
-      job.setOutputConnectionName("Null Connection");
-      job.setType(job.TYPE_SPECIFIED);
-      job.setStartMethod(job.START_DISABLE);
-      job.setHopcountMode(job.HOPCOUNT_NEVERDELETE);
-      
-      // Now, set up the document specification.
-      DocumentSpecification ds = job.getSpecification();
-      // Crawl everything underneath the 'testdata' area
-      File testDataFile = new File("testdata").getCanonicalFile();
-      if (!testDataFile.exists())
-        throw new ManifoldCFException("Test data area not found!  Looking in "+testDataFile.toString());
-      if (!testDataFile.isDirectory())
-        throw new ManifoldCFException("Test data area not a directory!  Looking in "+testDataFile.toString());
-      SpecificationNode sn = new SpecificationNode("startpoint");
-      sn.setAttribute("path",testDataFile.toString());
-      SpecificationNode n = new SpecificationNode("include");
-      n.setAttribute("type","file");
-      n.setAttribute("match","*");
-      sn.addChild(sn.getChildCount(),n);
-      n = new SpecificationNode("include");
-      n.setAttribute("type","directory");
-      n.setAttribute("match","*");
-      sn.addChild(sn.getChildCount(),n);
-      ds.addChild(ds.getChildCount(),sn);
-      
-      // Set up the output specification.
-      OutputSpecification os = job.getOutputSpecification();
-      // Null output connections have no output specification, so this is a no-op.
-      
-      // Save the job.
-      jobManager.save(job);
-
-      // Now, start the job, and wait until it completes.
-      long startTime = System.currentTimeMillis();
-      jobManager.manualStart(job.getID());
-      waitJobInactive(jobManager,job.getID(),18000000L);
-      System.out.println("Crawl required "+new Long(System.currentTimeMillis()-startTime).toString()+" milliseconds");
-
-      // Check to be sure we actually processed the right number of documents.
-      JobStatus status = jobManager.getStatus(job.getID());
-      // The test data area has 3 documents and one directory, and we have to count the root directory too.
-      if (status.getDocumentsProcessed() != 111111)
-        throw new ManifoldCFException("Wrong number of documents processed - expected 111111, saw "+new Long(status.getDocumentsProcessed()).toString());
-      
-      // Now, delete the job.
-      jobManager.deleteJob(job.getID());
-      waitJobDeleted(jobManager,job.getID(),18000000L);
-      
-      // Cleanup is automatic by the base class, so we can feel free to leave jobs and connections lying around.
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
-  }
-  
-  protected void waitJobInactive(IJobManager jobManager, Long jobID, long maxTime)
-    throws ManifoldCFException, InterruptedException
-  {
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() < startTime + maxTime)
-    {
-      JobStatus status = jobManager.getStatus(jobID);
-      if (status == null)
-        throw new ManifoldCFException("No such job: '"+jobID+"'");
-      int statusValue = status.getStatus();
-      switch (statusValue)
-      {
-        case JobStatus.JOBSTATUS_NOTYETRUN:
-          throw new ManifoldCFException("Job was never started.");
-        case JobStatus.JOBSTATUS_COMPLETED:
-          break;
-        case JobStatus.JOBSTATUS_ERROR:
-          throw new ManifoldCFException("Job reports error status: "+status.getErrorText());
-        default:
-          ManifoldCF.sleep(1000L);
-          continue;
-      }
-      return;
-    }
-    throw new ManifoldCFException("ManifoldCF did not terminate in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
+    tester.executeTest();
   }
-  
-  protected void waitJobDeleted(IJobManager jobManager, Long jobID, long maxTime)
-    throws ManifoldCFException, InterruptedException
-  {
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() < startTime + maxTime)
-    {
-      JobStatus status = jobManager.getStatus(jobID);
-      if (status == null)
-        return;
-      ManifoldCF.sleep(1000L);
-    }
-    throw new ManifoldCFException("ManifoldCF did not delete in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
-  }
-    
-
 }

Modified: incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BigCrawlHSQLDBLT.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BigCrawlHSQLDBLT.java?rev=1226141&r1=1226140&r2=1226141&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BigCrawlHSQLDBLT.java (original)
+++ incubator/lcf/trunk/tests/filesystem/src/test/java/org/apache/manifoldcf/filesystem_tests/BigCrawlHSQLDBLT.java Sat Dec 31 17:23:35 2011
@@ -18,11 +18,6 @@
 */
 package org.apache.manifoldcf.filesystem_tests;
 
-import org.apache.manifoldcf.core.interfaces.*;
-import org.apache.manifoldcf.agents.interfaces.*;
-import org.apache.manifoldcf.crawler.interfaces.*;
-import org.apache.manifoldcf.crawler.system.ManifoldCF;
-
 import java.io.*;
 import java.util.*;
 import org.junit.*;
@@ -30,211 +25,31 @@ import org.junit.*;
 /** This is a very basic sanity check */
 public class BigCrawlHSQLDBLT extends BaseHSQLDB
 {
+  protected BigCrawlTester tester;
+  
+  public BigCrawlHSQLDBLT()
+  {
+    tester = new BigCrawlTester(mcfInstance);
+  }
   
   @Before
-  public void createTestArea()
+  public void setupTester()
     throws Exception
   {
-    try
-    {
-      File f = new File("testdata");
-      removeDirectory(f);
-      createDirectory(f);
-      // Create the test data files.
-      String baseFileName = "testdata/";
-      int i0 = 0;
-      while (i0 < 10)
-      {
-        String fileName0 = baseFileName + "/dir-" + i0;
-        createDirectory(new File(fileName0));
-        int i1 = 0;
-        while (i1 < 10)
-        {
-          String fileName1 = fileName0 + "/dir-" + i1;
-          createDirectory(new File(fileName1));
-          int i2 = 0;
-          while (i2 < 10)
-          {
-            String fileName2 = fileName1 + "/dir-" + i2;
-            createDirectory(new File(fileName2));
-            int i3 = 0;
-            while (i3 < 10)
-            {
-              String fileName3 = fileName2 + "/dir-" + i3;
-              createDirectory(new File(fileName3));
-              int i4 = 0;
-              while (i4 < 10)
-              {
-                String fileName4 = fileName3 + "/file-"+i4;
-                createFile(new File(fileName4),"Test file "+i0+":"+i1+":"+i2+":"+i3+":"+i4);
-                i4++;
-              }
-              i3++;
-            }
-            i2++;
-          }
-          i1++;
-        }
-        i0++;
-      }
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
-    System.out.println("Done generating files");
+    tester.setupTestArea();
   }
   
   @After
-  public void removeTestArea()
+  public void teardownTester()
     throws Exception
   {
-    System.out.println("Removing generated files");
-    try
-    {
-      File f = new File("testdata");
-      removeDirectory(f);
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
+    tester.teardownTestArea();
   }
   
   @Test
   public void bigCrawl()
     throws Exception
   {
-    try
-    {
-      // Hey, we were able to install the file system connector etc.
-      // Now, create a local test job and run it.
-      IThreadContext tc = ThreadContextFactory.make();
-      
-      // Create a basic file system connection, and save it.
-      IRepositoryConnectionManager mgr = RepositoryConnectionManagerFactory.make(tc);
-      IRepositoryConnection conn = mgr.create();
-      conn.setName("File Connection");
-      conn.setDescription("File Connection");
-      conn.setClassName("org.apache.manifoldcf.crawler.connectors.filesystem.FileConnector");
-      conn.setMaxConnections(100);
-      // Now, save
-      mgr.save(conn);
-      
-      // Create a basic null output connection, and save it.
-      IOutputConnectionManager outputMgr = OutputConnectionManagerFactory.make(tc);
-      IOutputConnection outputConn = outputMgr.create();
-      outputConn.setName("Null Connection");
-      outputConn.setDescription("Null Connection");
-      outputConn.setClassName("org.apache.manifoldcf.agents.output.nullconnector.NullConnector");
-      outputConn.setMaxConnections(100);
-      // Now, save
-      outputMgr.save(outputConn);
-
-      // Create a job.
-      IJobManager jobManager = JobManagerFactory.make(tc);
-      IJobDescription job = jobManager.createJob();
-      job.setDescription("Test Job");
-      job.setConnectionName("File Connection");
-      job.setOutputConnectionName("Null Connection");
-      job.setType(job.TYPE_SPECIFIED);
-      job.setStartMethod(job.START_DISABLE);
-      job.setHopcountMode(job.HOPCOUNT_NEVERDELETE);
-      
-      // Now, set up the document specification.
-      DocumentSpecification ds = job.getSpecification();
-      // Crawl everything underneath the 'testdata' area
-      File testDataFile = new File("testdata").getCanonicalFile();
-      if (!testDataFile.exists())
-        throw new ManifoldCFException("Test data area not found!  Looking in "+testDataFile.toString());
-      if (!testDataFile.isDirectory())
-        throw new ManifoldCFException("Test data area not a directory!  Looking in "+testDataFile.toString());
-      SpecificationNode sn = new SpecificationNode("startpoint");
-      sn.setAttribute("path",testDataFile.toString());
-      SpecificationNode n = new SpecificationNode("include");
-      n.setAttribute("type","file");
-      n.setAttribute("match","*");
-      sn.addChild(sn.getChildCount(),n);
-      n = new SpecificationNode("include");
-      n.setAttribute("type","directory");
-      n.setAttribute("match","*");
-      sn.addChild(sn.getChildCount(),n);
-      ds.addChild(ds.getChildCount(),sn);
-      
-      // Set up the output specification.
-      OutputSpecification os = job.getOutputSpecification();
-      // Null output connections have no output specification, so this is a no-op.
-      
-      // Save the job.
-      jobManager.save(job);
-
-      // Now, start the job, and wait until it completes.
-      long startTime = System.currentTimeMillis();
-      jobManager.manualStart(job.getID());
-      waitJobInactive(jobManager,job.getID(),18000000L);
-      System.out.println("Crawl required "+new Long(System.currentTimeMillis()-startTime).toString()+" milliseconds");
-
-      // Check to be sure we actually processed the right number of documents.
-      JobStatus status = jobManager.getStatus(job.getID());
-      // The test data area has 3 documents and one directory, and we have to count the root directory too.
-      if (status.getDocumentsProcessed() != 111111)
-        throw new ManifoldCFException("Wrong number of documents processed - expected 111111, saw "+new Long(status.getDocumentsProcessed()).toString());
-      
-      // Now, delete the job.
-      jobManager.deleteJob(job.getID());
-      waitJobDeleted(jobManager,job.getID(),18000000L);
-      
-      // Cleanup is automatic by the base class, so we can feel free to leave jobs and connections lying around.
-    }
-    catch (Exception e)
-    {
-      e.printStackTrace();
-      throw e;
-    }
-  }
-  
-  protected void waitJobInactive(IJobManager jobManager, Long jobID, long maxTime)
-    throws ManifoldCFException, InterruptedException
-  {
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() < startTime + maxTime)
-    {
-      JobStatus status = jobManager.getStatus(jobID);
-      if (status == null)
-        throw new ManifoldCFException("No such job: '"+jobID+"'");
-      int statusValue = status.getStatus();
-      switch (statusValue)
-      {
-        case JobStatus.JOBSTATUS_NOTYETRUN:
-          throw new ManifoldCFException("Job was never started.");
-        case JobStatus.JOBSTATUS_COMPLETED:
-          break;
-        case JobStatus.JOBSTATUS_ERROR:
-          throw new ManifoldCFException("Job reports error status: "+status.getErrorText());
-        default:
-          ManifoldCF.sleep(1000L);
-          continue;
-      }
-      return;
-    }
-    throw new ManifoldCFException("ManifoldCF did not terminate in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
+    tester.executeTest();
   }
-  
-  protected void waitJobDeleted(IJobManager jobManager, Long jobID, long maxTime)
-    throws ManifoldCFException, InterruptedException
-  {
-    long startTime = System.currentTimeMillis();
-    while (System.currentTimeMillis() < startTime + maxTime)
-    {
-      JobStatus status = jobManager.getStatus(jobID);
-      if (status == null)
-        return;
-      ManifoldCF.sleep(1000L);
-    }
-    throw new ManifoldCFException("ManifoldCF did not delete in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
-  }
-    
-
 }