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 2010/12/16 10:16:25 UTC
svn commit: r1049834 - in /incubator/lcf/trunk: ./ connectors/filesystem/
framework/ tests/filesystem/org/apache/manifoldcf/filesystem_tests/
Author: kwright
Date: Thu Dec 16 09:16:25 2010
New Revision: 1049834
URL: http://svn.apache.org/viewvc?rev=1049834&view=rev
Log:
Tests to support valid completion of CONNECTORS-128.
Added:
incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Expiration.java (with props)
incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Hopcount.java (with props)
Modified:
incubator/lcf/trunk/build.xml
incubator/lcf/trunk/connectors/filesystem/build.xml
incubator/lcf/trunk/framework/build.xml
incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/APISanity.java
incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Sanity.java
Modified: incubator/lcf/trunk/build.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/build.xml?rev=1049834&r1=1049833&r2=1049834&view=diff
==============================================================================
--- incubator/lcf/trunk/build.xml (original)
+++ incubator/lcf/trunk/build.xml Thu Dec 16 09:16:25 2010
@@ -1424,7 +1424,7 @@
<target name="run-filesystem-tests" depends="compile-filesystem-tests,calculate-filesystem-tests-condition" if="filesystem-tests.include">
<mkdir dir="test-output/filesystem"/>
- <junit fork="true" maxmemory="128m" dir="test-output/filesystem" showoutput="true">
+ <junit fork="true" maxmemory="128m" dir="test-output/filesystem" showoutput="true" haltonfailure="true">
<classpath>
<fileset dir="framework/lib">
<include name="*.jar"/>
@@ -1451,13 +1451,15 @@
</classpath>
<test name="org.apache.manifoldcf.filesystem_tests.Sanity" todir="test-output/filesystem"/>
<test name="org.apache.manifoldcf.filesystem_tests.APISanity" todir="test-output/filesystem"/>
+ <test name="org.apache.manifoldcf.filesystem_tests.Hopcount" todir="test-output/filesystem"/>
+ <test name="org.apache.manifoldcf.filesystem_tests.Expiration" todir="test-output/filesystem"/>
<!-- MHL -->
</junit>
</target>
<target name="run-sharepoint-tests" depends="compile-sharepoint-tests,calculate-sharepoint-tests-condition" if="sharepoint-tests.include">
<mkdir dir="test-output/sharepoint"/>
- <junit fork="true" maxmemory="128m" dir="test-output/sharepoint" showoutput="true">
+ <junit fork="true" maxmemory="128m" dir="test-output/sharepoint" showoutput="true" haltonfailure="true">
<classpath>
<fileset dir="framework/lib">
<include name="*.jar"/>
@@ -1574,21 +1576,21 @@ All targets requiring Apache Forrest als
</echo>
</target>
-<target name="-taskdef">
- <typedef resource="org/apache/rat/anttasks/antlib.xml" uri="antlib:rat.anttasks">
- <classpath>
- <fileset dir="." includes="rat*.jar"/>
- </classpath>
- </typedef>
- </target>
- <target name="rat-sources" depends="-taskdef"
- description="runs the tasks over src/java excluding the license directory">
- <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
- <fileset dir="connectors/"/>
- <fileset dir="framework/"/>
- <fileset dir="site/src/"/>
- </rat:report>
- </target>
+ <target name="-taskdef">
+ <typedef resource="org/apache/rat/anttasks/antlib.xml" uri="antlib:rat.anttasks">
+ <classpath>
+ <fileset dir="." includes="rat*.jar"/>
+ </classpath>
+ </typedef>
+ </target>
+ <target name="rat-sources" depends="-taskdef"
+ description="runs the tasks over src/java excluding the license directory">
+ <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
+ <fileset dir="connectors/"/>
+ <fileset dir="framework/"/>
+ <fileset dir="site/src/"/>
+ </rat:report>
+ </target>
</project>
Modified: incubator/lcf/trunk/connectors/filesystem/build.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/connectors/filesystem/build.xml?rev=1049834&r1=1049833&r2=1049834&view=diff
==============================================================================
--- incubator/lcf/trunk/connectors/filesystem/build.xml (original)
+++ incubator/lcf/trunk/connectors/filesystem/build.xml Thu Dec 16 09:16:25 2010
@@ -71,7 +71,7 @@
<target name="run-tests" depends="compile-tests">
<mkdir dir="test-output"/>
- <junit fork="true" maxmemory="128m" dir="test-output" showoutput="true">
+ <junit fork="true" maxmemory="128m" dir="test-output" showoutput="true" haltonfailure="true">
<classpath>
<fileset dir="lib">
<include name="*.jar"/>
Modified: incubator/lcf/trunk/framework/build.xml
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/framework/build.xml?rev=1049834&r1=1049833&r2=1049834&view=diff
==============================================================================
--- incubator/lcf/trunk/framework/build.xml (original)
+++ incubator/lcf/trunk/framework/build.xml Thu Dec 16 09:16:25 2010
@@ -447,7 +447,7 @@
<target name="run-tests" depends="compile-tests">
<mkdir dir="test-output"/>
- <junit fork="true" maxmemory="128m" dir="test-output" showoutput="true">
+ <junit fork="true" maxmemory="128m" dir="test-output" showoutput="true" haltonfailure="true">
<classpath>
<fileset dir="lib">
<include name="*.jar"/>
Modified: incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/APISanity.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/APISanity.java?rev=1049834&r1=1049833&r2=1049834&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/APISanity.java (original)
+++ incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/APISanity.java Thu Dec 16 09:16:25 2010
@@ -222,7 +222,7 @@ public class APISanity extends TestBase
// Now, start the job, and wait until it completes.
startJob(jobIDString);
- waitJobInactive(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.
@@ -236,7 +236,7 @@ public class APISanity extends TestBase
// Now, start the job, and wait until it completes.
startJob(jobIDString);
- waitJobInactive(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);
@@ -248,7 +248,7 @@ public class APISanity extends TestBase
// Now, start the job, and wait until it completes.
startJob(jobIDString);
- waitJobInactive(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);
@@ -262,7 +262,7 @@ public class APISanity extends TestBase
// Now, start the job, and wait until it completes.
startJob(jobIDString);
- waitJobInactive(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.
@@ -273,7 +273,7 @@ public class APISanity extends TestBase
// Now, delete the job.
deleteJob(jobIDString);
- waitJobDeleted(jobIDString);
+ waitJobDeleted(jobIDString, 120000L);
// Cleanup is automatic by the base class, so we can feel free to leave jobs and connections lying around.
}
@@ -365,10 +365,11 @@ public class APISanity extends TestBase
return new Long(documentsProcessed).longValue();
}
- protected void waitJobInactive(String jobIDString)
+ protected void waitJobInactive(String jobIDString, long maxTime)
throws Exception
{
- while (true)
+ long startTime = System.currentTimeMillis();
+ while (System.currentTimeMillis() < startTime + maxTime)
{
String status = getJobStatus(jobIDString);
if (status == null)
@@ -376,24 +377,27 @@ public class APISanity extends TestBase
if (status.equals("not yet run"))
throw new Exception("Job was never started.");
if (status.equals("done"))
- break;
+ return;
if (status.equals("error"))
throw new Exception("Job reports error.");
- ManifoldCF.sleep(10000L);
+ 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)
+ protected void waitJobDeleted(String jobIDString, long maxTime)
throws Exception
{
- while (true)
+ long startTime = System.currentTimeMillis();
+ while (System.currentTimeMillis() < startTime + maxTime)
{
String status = getJobStatus(jobIDString);
if (status == null)
- break;
- ManifoldCF.sleep(10000L);
+ 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/org/apache/manifoldcf/filesystem_tests/Expiration.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Expiration.java?rev=1049834&view=auto
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Expiration.java (added)
+++ incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Expiration.java Thu Dec 16 09:16:25 2010
@@ -0,0 +1,259 @@
+/* $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.*;
+import org.junit.*;
+
+/** This is a test which checks to see if document expiration works properly. */
+public class Expiration extends TestBase
+{
+
+ @Before
+ public void createTestArea()
+ throws Exception
+ {
+ try
+ {
+ File f = new File("testdata");
+ removeDirectory(f);
+ createDirectory(f);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ @After
+ public void removeTestArea()
+ throws Exception
+ {
+ try
+ {
+ File f = new File("testdata");
+ removeDirectory(f);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ @Test
+ public void expirationCheck()
+ 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_ACCURATE);
+ // 60-second expiration for all documents..
+ job.setExpiration(new Long(60000L));
+ // Infinite rescan interval.
+ job.setInterval(null);
+ // Continuous job.
+ job.setType(IJobDescription.TYPE_CONTINUOUS);
+
+ // 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);
+
+ // 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");
+ createDirectory(new File("testdata/testdir/seconddir"));
+ createFile(new File("testdata/testdir/seconddir/test4.txt"),"Lowest test file");
+
+ // Now, start the job, and wait until it is running.
+ jobManager.manualStart(job.getID());
+ waitJobRunning(jobManager,job.getID(),30000L);
+
+ JobStatus status;
+
+ // Now we wait, and we should see 7 documents eventually.
+ long startTime = System.currentTimeMillis();
+ while (System.currentTimeMillis() < startTime + 120000L)
+ {
+ status = jobManager.getStatus(job.getID());
+ if (status.getDocumentsProcessed() == 7)
+ break;
+
+ ManifoldCF.sleep(1000L);
+ }
+
+ // At this point there should be 7 documents.
+ // OK, documents should expire starting a minute later. The number of documents will go quickly to zero after this time.
+ // So all we need to do is confirm that the job stops within 2 minutes.
+ waitJobInactive(jobManager,job.getID(),180000L);
+
+ status = jobManager.getStatus(job.getID());
+ if (status.getDocumentsProcessed() != 0)
+ throw new ManifoldCFException("Wrong number of documents processed - expected 0, saw "+new Long(status.getDocumentsProcessed()).toString());
+
+
+ // Now, delete the job.
+ jobManager.deleteJob(job.getID());
+ waitJobDeleted(jobManager,job.getID(),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;
+ }
+ }
+
+ 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");
+ }
+
+ protected void waitJobRunning(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:
+ throw new ManifoldCFException("Job ended on its own!");
+ case JobStatus.JOBSTATUS_ERROR:
+ throw new ManifoldCFException("Job reports error status: "+status.getErrorText());
+ case JobStatus.JOBSTATUS_RUNNING:
+ break;
+ default:
+ ManifoldCF.sleep(1000L);
+ continue;
+ }
+ return;
+ }
+ throw new ManifoldCFException("ManifoldCF did not start in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
+ }
+
+ 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");
+ }
+
+
+}
Propchange: incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Expiration.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Expiration.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Hopcount.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Hopcount.java?rev=1049834&view=auto
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Hopcount.java (added)
+++ incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Hopcount.java Thu Dec 16 09:16:25 2010
@@ -0,0 +1,209 @@
+/* $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.*;
+import org.junit.*;
+
+/** This is a test which checks to be sure hopcount functionality is working properly. */
+public class Hopcount extends TestBase
+{
+
+ @Before
+ public void createTestArea()
+ throws Exception
+ {
+ try
+ {
+ File f = new File("testdata");
+ removeDirectory(f);
+ createDirectory(f);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ @After
+ public void removeTestArea()
+ throws Exception
+ {
+ try
+ {
+ File f = new File("testdata");
+ removeDirectory(f);
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ @Test
+ public void hopcountCheck()
+ 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_ACCURATE);
+ job.addHopCountFilter("child",new Long(2));
+
+ // 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);
+
+ // 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");
+ createDirectory(new File("testdata/testdir/seconddir"));
+ createFile(new File("testdata/testdir/seconddir/test4.txt"),"Lowest test file");
+
+ // Now, start the job, and wait until it completes.
+ jobManager.manualStart(job.getID());
+ waitJobInactive(jobManager,job.getID(),120000L);
+
+ // Check to be sure we actually processed the right number of documents.
+ JobStatus status = jobManager.getStatus(job.getID());
+ // The test data area has 4 documents and 2 directories and we have to count the root directory too.
+ // But the max hopcount is 2, so one file will be left behind, so the count should be 6, not 7.
+ if (status.getDocumentsProcessed() != 6)
+ throw new ManifoldCFException("Wrong number of documents processed - expected 6, saw "+new Long(status.getDocumentsProcessed()).toString());
+
+ // Now, delete the job.
+ jobManager.deleteJob(job.getID());
+ waitJobDeleted(jobManager,job.getID(), 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;
+ }
+ }
+
+ 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");
+ }
+
+ 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");
+ }
+
+
+}
Propchange: incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Hopcount.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Hopcount.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Sanity.java
URL: http://svn.apache.org/viewvc/incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Sanity.java?rev=1049834&r1=1049833&r2=1049834&view=diff
==============================================================================
--- incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Sanity.java (original)
+++ incubator/lcf/trunk/tests/filesystem/org/apache/manifoldcf/filesystem_tests/Sanity.java Thu Dec 16 09:16:25 2010
@@ -139,7 +139,7 @@ public class Sanity extends TestBase
// Now, start the job, and wait until it completes.
jobManager.manualStart(job.getID());
- waitJobInactive(jobManager,job.getID());
+ waitJobInactive(jobManager,job.getID(),120000L);
// Check to be sure we actually processed the right number of documents.
JobStatus status = jobManager.getStatus(job.getID());
@@ -152,7 +152,7 @@ public class Sanity extends TestBase
// Now, start the job, and wait until it completes.
jobManager.manualStart(job.getID());
- waitJobInactive(jobManager,job.getID());
+ waitJobInactive(jobManager,job.getID(),120000L);
status = jobManager.getStatus(job.getID());
// The test data area has 4 documents and one directory, and we have to count the root directory too.
@@ -164,7 +164,7 @@ public class Sanity extends TestBase
// Now, start the job, and wait until it completes.
jobManager.manualStart(job.getID());
- waitJobInactive(jobManager,job.getID());
+ waitJobInactive(jobManager,job.getID(),120000L);
status = jobManager.getStatus(job.getID());
// The test data area has 4 documents and one directory, and we have to count the root directory too.
@@ -178,7 +178,7 @@ public class Sanity extends TestBase
// Now, start the job, and wait until it completes.
jobManager.manualStart(job.getID());
- waitJobInactive(jobManager,job.getID());
+ waitJobInactive(jobManager,job.getID(),120000L);
// Check to be sure we actually processed the right number of documents.
status = jobManager.getStatus(job.getID());
@@ -188,7 +188,7 @@ public class Sanity extends TestBase
// Now, delete the job.
jobManager.deleteJob(job.getID());
- waitJobDeleted(jobManager,job.getID());
+ waitJobDeleted(jobManager,job.getID(),120000L);
// Cleanup is automatic by the base class, so we can feel free to leave jobs and connections lying around.
}
@@ -199,10 +199,11 @@ public class Sanity extends TestBase
}
}
- protected void waitJobInactive(IJobManager jobManager, Long jobID)
+ protected void waitJobInactive(IJobManager jobManager, Long jobID, long maxTime)
throws ManifoldCFException, InterruptedException
{
- while (true)
+ long startTime = System.currentTimeMillis();
+ while (System.currentTimeMillis() < startTime + maxTime)
{
JobStatus status = jobManager.getStatus(jobID);
if (status == null)
@@ -217,23 +218,26 @@ public class Sanity extends TestBase
case JobStatus.JOBSTATUS_ERROR:
throw new ManifoldCFException("Job reports error status: "+status.getErrorText());
default:
- ManifoldCF.sleep(10000L);
+ ManifoldCF.sleep(1000L);
continue;
}
- break;
+ return;
}
+ throw new ManifoldCFException("ManifoldCF did not terminate in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
}
- protected void waitJobDeleted(IJobManager jobManager, Long jobID)
+ protected void waitJobDeleted(IJobManager jobManager, Long jobID, long maxTime)
throws ManifoldCFException, InterruptedException
{
- while (true)
+ long startTime = System.currentTimeMillis();
+ while (System.currentTimeMillis() < startTime + maxTime)
{
JobStatus status = jobManager.getStatus(jobID);
if (status == null)
- break;
- ManifoldCF.sleep(10000L);
+ return;
+ ManifoldCF.sleep(1000L);
}
+ throw new ManifoldCFException("ManifoldCF did not delete in the allotted time of "+new Long(maxTime).toString()+" milliseconds");
}