You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2012/06/21 18:23:00 UTC
svn commit: r1352597 - in /uima/uima-as/trunk:
uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/
uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/
uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/
Author: cwiklik
Date: Thu Jun 21 16:22:59 2012
New Revision: 1352597
URL: http://svn.apache.org/viewvc?rev=1352597&view=rev
Log:
UIMA-2423 Refactored uima-as client process() method to wait until all CASes are accounted for (via exception or successful reply). Added new testcase
Modified:
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.java
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/ActiveMQSupport.java
uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/BaseTestSupport.java
uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java
Modified: uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.java?rev=1352597&r1=1352596&r2=1352597&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.java (original)
+++ uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.java Thu Jun 21 16:22:59 2012
@@ -60,6 +60,7 @@ import org.apache.uima.aae.monitor.stati
import org.apache.uima.adapter.jms.JmsConstants;
import org.apache.uima.adapter.jms.activemq.JmsOutputChannel;
import org.apache.uima.adapter.jms.activemq.SpringContainerDeployer;
+import org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl;
import org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngine_impl;
import org.apache.uima.adapter.jms.message.JmsMessageContext;
import org.apache.uima.analysis_engine.AnalysisEngineDescription;
@@ -78,6 +79,7 @@ import org.apache.uima.resource.Resource
import org.apache.uima.resource.metadata.ProcessingResourceMetaData;
import org.apache.uima.resourceSpecifier.factory.DeploymentDescriptorFactory;
import org.apache.uima.resourceSpecifier.factory.UimaASDeploymentDescriptor;
+import org.apache.uima.util.Level;
import org.apache.uima.util.XMLInputSource;
import org.josql.expressions.IsNullExpression;
import org.xml.sax.SAXException;
@@ -1050,17 +1052,68 @@ public class TestUimaASExtended extends
}
uimaAsEngine.stop();
}
-
+ public void testClientCRProcess() throws Exception {
+ System.out.println("-------------- testClientCRProcess -------------");
+ super.resetCASesProcessed();
+
+ // Instantiate Uima AS Client
+ final BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl();
+// UIMAFramework.getLogger(BaseUIMAAsynchronousEngineCommon_impl.class).setLevel(Level.FINEST);
+// UIMAFramework.getLogger(BaseUIMAAsynchronousEngine_impl.class).setLevel(Level.FINEST);
+// UIMAFramework.getLogger().setLevel(Level.FINEST);
+// UIMAFramework.getLogger().setOutputStream(System.out);
+
+ // Deploy Uima AS Primitive Service
+ deployService(uimaAsEngine, relativePath + "/Deploy_NoOpAnnotatorWithLongDelay.xml");
+ Map<String, Object> appCtx = buildContext(String.valueOf(broker.getMasterConnectorURI()),
+ "NoOpAnnotatorQueueLongDelay");
+ appCtx.put(UimaAsynchronousEngine.Timeout, 0);
+ appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100);
+ appCtx.put(UimaAsynchronousEngine.CasPoolSize,10);
+
+ String collectionReaderDescriptor =
+ resourceDirPath + System.getProperty("file.separator") +
+ "descriptors"+ System.getProperty("file.separator") +
+ "collection_reader"+ System.getProperty("file.separator") +
+ "FileSystemCollectionReader.xml";
+
+ // add Collection Reader if specified
+ try {
+ CollectionReaderDescription collectionReaderDescription =
+ UIMAFramework.getXMLParser()
+ .parseCollectionReaderDescription(new XMLInputSource(collectionReaderDescriptor));
+ collectionReaderDescription.getCollectionReaderMetaData().
+ getConfigurationParameterSettings().
+ setParameterValue("InputDirectory", relativeDataPath);
+ CollectionReader collectionReader = UIMAFramework
+ .produceCollectionReader(collectionReaderDescription);
+ uimaAsEngine.setCollectionReader(collectionReader);
+ } catch( Throwable e) {
+ e.printStackTrace();
+ }
+
+ initialize(uimaAsEngine, appCtx);
+ waitUntilInitialized();
+
+ uimaAsEngine.process();
+
+ Assert.assertEquals(8, getNumberOfCASesProcessed());
+ System.clearProperty("DefaultBrokerURL");
+ uimaAsEngine.stop();
+ }
+
public void testClientProcess() throws Exception {
System.out.println("-------------- testClientProcess -------------");
+
// Instantiate Uima AS Client
- BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl();
+ final BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl();
// Deploy Uima AS Primitive Service
deployService(uimaAsEngine, relativePath + "/Deploy_PersonTitleAnnotator.xml");
Map<String, Object> appCtx = buildContext(String.valueOf(broker.getMasterConnectorURI()),
- "PersonTitleAnnotatorQueue");
- appCtx.put(UimaAsynchronousEngine.Timeout, 1100);
+ "PersonTitleAnnotatorQueue");
+ appCtx.put(UimaAsynchronousEngine.Timeout, 0);
appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100);
+ appCtx.put(UimaAsynchronousEngine.CasPoolSize,2);
initialize(uimaAsEngine, appCtx);
waitUntilInitialized();
Modified: uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/ActiveMQSupport.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/ActiveMQSupport.java?rev=1352597&r1=1352596&r2=1352597&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/ActiveMQSupport.java (original)
+++ uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/ActiveMQSupport.java Thu Jun 21 16:22:59 2012
@@ -68,6 +68,9 @@ public class ActiveMQSupport extends Tes
+ "test" + System.getProperty("file.separator") + "resources"
+ System.getProperty("file.separator") + "deployment";
+ protected static final String resourceDirPath = "src" + System.getProperty("file.separator")
+ + "test" + System.getProperty("file.separator") + "resources";
+
protected static final String relativeDataPath = "src" + System.getProperty("file.separator")
+ "test" + System.getProperty("file.separator") + "resources"
+ System.getProperty("file.separator") + "data";
Modified: uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/BaseTestSupport.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/BaseTestSupport.java?rev=1352597&r1=1352596&r2=1352597&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/BaseTestSupport.java (original)
+++ uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/utils/BaseTestSupport.java Thu Jun 21 16:22:59 2012
@@ -639,7 +639,9 @@ public abstract class BaseTestSupport ex
public long getNumberOfCASesProcessed() {
return responseCounter;
}
-
+ public void resetCASesProcessed() {
+ responseCounter = 0;
+ }
protected class UimaAsTestCallbackListener extends UimaAsBaseCallbackListener {
private String casSent = null;
Modified: uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java?rev=1352597&r1=1352596&r2=1352597&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java (original)
+++ uima/uima-as/trunk/uimaj-as-jms/src/main/java/org/apache/uima/adapter/jms/client/BaseUIMAAsynchronousEngineCommon_impl.java Thu Jun 21 16:22:59 2012
@@ -780,13 +780,26 @@ public abstract class BaseUIMAAsynchrono
}
} catch (Exception e) {
e.printStackTrace();
- try {
- } catch( Exception ex){}
- // throw new ResourceProcessException(e);
+ throw new ResourceProcessException(e);
}
}
- if (hasNext == false) {
- collectionProcessingComplete();
+ // If the CR is done, enter a polling loop waiting for outstanding CASes to return
+ // from a service
+ if (hasNext == false ) {
+ Object mObject = new Object();
+ // if client is running and there are outstanding CASe go sleep for awhile and
+ // try again, until all CASes come back from a service
+ while ( running && serviceDelegate.getCasPendingReplyListSize() > 0 ) {
+ synchronized(mObject) {
+ try {
+ mObject.wait(100);
+ } catch( Exception e) {
+ e.printStackTrace();
+ throw new ResourceProcessException(e);
+ }
+ }
+ }
+ collectionProcessingComplete();
}
}