Author: cwiklik Date: Wed Feb 23 15:30:56 2011 New Revision: 1073784 URL: http://svn.apache.org/viewvc?rev=1073784&view=rev Log: UIMA-2069 Removed hard coded broker URLs. Instead auto detects open ports and sets System property to be used when resolving place holders.
Modified: uima/uima-as/trunk/uimaj-as-activemq/src/test/java/org/apache/uima/ee/test/TestUimaASExtended.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=1073784&r1=1073783&r2=1073784&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 Wed Feb 23 15:30:56 2011 @@ -67,7 +67,6 @@ import org.apache.uima.resource.metadata import org.apache.uima.util.XMLInputSource; public class TestUimaASExtended extends BaseTestSupport { - private static final int DEFAULT_HTTP_PORT = 8888; private CountDownLatch getMetaCountLatch = null; @@ -107,8 +106,7 @@ public class TestUimaASExtended extends } public void testClientHttpTunnellingToAggregate() throws Exception { System.out.println("-------------- testClientHttpTunnellingToAggregate -------------"); - // Add HTTP Connector to the broker. The connector will use port 8888. If this port is not - // available the test fails + // Add HTTP Connector to the broker. String httpURI = getHttpURI(); // Create Uima EE Client BaseUIMAAsynchronousEngine_impl eeUimaEngine = new BaseUIMAAsynchronousEngine_impl(); @@ -186,9 +184,9 @@ public class TestUimaASExtended extends /** * Tests support for ActiveMQ failover protocol expressed in broker * URL as follows "failover:(tcp:IP:Port1,tcp:IP:Port2)". The test launches a secondary - * broker on port 8200, launches a Primitive service that uses that broker, - * and finally configures the UIMA AS Client to connect to ther broker on port - * 8200 and specifies broker on port 8118 as an alternative. This test + * broker, launches a Primitive service that uses that broker, + * and finally configures the UIMA AS Client to connect to the secondary broker + * and specifies an alternative broker on a different port. This test * only tests ability of UIMA AS to handle a complex URL, and it does *not* * test the actual failover from one broker to the next. * @@ -198,17 +196,14 @@ public class TestUimaASExtended extends System.out.println("-------------- testBrokerFailoverSupportUsingTCP -------------"); // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(8200, true, true); - broker2.start(); - addHttpConnector(broker2, 1088); - - System.setProperty("BrokerURL", "failover:(http://localhost:1088,http://localhost:8200)?randomize=false"); //tcp://localhost:8200"); + BrokerService broker2 = setupSecondaryBroker(false); + + String bhttpURL = addHttpConnector(broker2, findOpenPort(DEFAULT_HTTP_PORT2)); + String burl = "failover:("+bhttpURL+","+broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString().replaceAll("tcp","http")+")?randomize=false"; + System.setProperty("BrokerURL", burl); // Deploy Uima AS Primitive Service deployService(uimaAsEngine, relativePath + "/Deploy_NoOpAnnotatorWithPlaceholder.xml"); - // Client will use a failover protocol and use broker on port 8200 - // as primary - Map<String, Object> appCtx = buildContext("failover:(http://localhost:1088,http://localhost:8200)?randomize=false","NoOpAnnotatorQueue"); + Map<String, Object> appCtx = buildContext(burl,"NoOpAnnotatorQueue"); appCtx.put(UimaAsynchronousEngine.Timeout, 1100); appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100); initialize(uimaAsEngine, appCtx); @@ -237,9 +232,9 @@ public class TestUimaASExtended extends /** * Tests support for ActiveMQ failover protocol expressed in broker * URL as follows "failover:(tcp:IP:Port1,tcp:IP:Port2)". The test launches a secondary - * broker on port 8200, launches a Primitive service that uses that broker, - * and finally configures the UIMA AS Client to connect to ther broker on port - * 8200 and specifies broker on port 8118 as an alternative. This test + * broker, launches a Primitive service that uses that broker, + * and finally configures the UIMA AS Client to connect to the secondary broker + * and specifies an alternate broker on a different port. This test * only tests ability of UIMA AS to handle a complex URL, and it does *not* * test the actual failover from one broker to the next. * @@ -249,15 +244,11 @@ public class TestUimaASExtended extends System.out.println("-------------- testBrokerFailoverSupportUsingTCP -------------"); // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(8200, true,true); - broker2.start(); - System.setProperty("BrokerURL", "tcp://localhost:8200"); + + BrokerService broker2 = setupSecondaryBroker(true); // Deploy Uima AS Primitive Service deployService(uimaAsEngine, relativePath + "/Deploy_NoOpAnnotatorWithPlaceholder.xml"); - // Client will use a failover protocol and use broker on port 8200 - // as primary - Map<String, Object> appCtx = buildContext("failover:(tcp://localhost:8200,tcp://localhost:8118)?randomize=false","NoOpAnnotatorQueue"); + Map<String, Object> appCtx = buildContext("failover:("+System.getProperty("BrokerURL")+","+getBrokerUri()+")?randomize=false","NoOpAnnotatorQueue"); appCtx.put(UimaAsynchronousEngine.Timeout, 1100); appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100); initialize(uimaAsEngine, appCtx); @@ -286,9 +277,9 @@ public class TestUimaASExtended extends } /** - * This test starts a broker on port 8200, starts NoOp Annotator, and + * This test starts a secondary broker, starts NoOp Annotator, and * using synchronous sendAndReceive() sends 10 CASes for analysis. Before sending 11th, the test - * stops the broker and sends 5 more CASes. All CASes sent after + * stops the secondary broker and sends 5 more CASes. All CASes sent after * the broker shutdown result in GetMeta ping and a subsequent timeout. * @throws Exception */ @@ -297,15 +288,11 @@ public class TestUimaASExtended extends System.out.println("-------------- testSyncClientRecoveryFromBrokerStop -------------"); // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); - - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(8200, true,true); - broker2.start(); - System.setProperty("BrokerURL", "tcp://localhost:8200"); + BrokerService broker2 = setupSecondaryBroker(true); // Deploy Uima AS Primitive Service deployService(uimaAsEngine, relativePath + "/Deploy_NoOpAnnotatorWithPlaceholder.xml"); - Map<String, Object> appCtx = buildContext("tcp://localhost:8200", - "NoOpAnnotatorQueue"); + Map<String, Object> appCtx = + buildContext(broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString(), "NoOpAnnotatorQueue"); appCtx.put(UimaAsynchronousEngine.Timeout, 1100); appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100); initialize(uimaAsEngine, appCtx); @@ -340,9 +327,9 @@ public class TestUimaASExtended extends } } /** - * This test starts a broker on port 8200, starts NoOp Annotator, and + * This test starts a secondary broker, starts NoOp Annotator, and * using synchronous sendAndReceive() sends 5 CASes for analysis. Before sending 6th, the test - * stops the broker and sends 5 more CASes. All CASes sent after + * stops the secondary broker and sends 5 more CASes. All CASes sent after * the broker shutdown result in GetMeta ping and a subsequent timeout. Before * sending 11th CAS the test starts the broker again and sends 10 more CASes * @throws Exception @@ -351,15 +338,12 @@ public class TestUimaASExtended extends System.out.println("-------------- testSyncClientRecoveryFromBrokerStopAndRestart -------------"); // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); - - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(8200, true, true); - broker2.start(); - System.setProperty("BrokerURL", "tcp://localhost:8200"); + BrokerService broker2 = setupSecondaryBroker(true); // Deploy Uima AS Primitive Service deployService(uimaAsEngine, relativePath + "/Deploy_NoOpAnnotatorWithPlaceholder.xml"); - Map<String, Object> appCtx = buildContext("tcp://localhost:8200", - "NoOpAnnotatorQueue"); + + Map<String, Object> appCtx = + buildContext(broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString(), "NoOpAnnotatorQueue"); appCtx.put(UimaAsynchronousEngine.Timeout, 1100); appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100); initialize(uimaAsEngine, appCtx); @@ -375,7 +359,8 @@ public class TestUimaASExtended extends } else if ( i == 10 ) { // restart the broker System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - broker2 = createBroker(8200, true, true); + broker2 = setupSecondaryBroker(true); + broker2.start(); synchronized(this) { wait(3000); // allow broker some time to start @@ -420,10 +405,7 @@ public class TestUimaASExtended extends */ public void testMultipleSyncClientsRecoveryFromBrokerStopAndRestart() throws Exception { System.out.println("-------------- testMultipleSyncClientsRecoveryFromBrokerStopAndRestart -------------"); - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(8200, true, true); - broker2.start(); - System.setProperty("BrokerURL", "tcp://localhost:8200"); + final BrokerService broker2 = setupSecondaryBroker(true); final CountDownLatch latch = new CountDownLatch(4); Thread[] clientThreads = new Thread[4]; @@ -435,13 +417,13 @@ public class TestUimaASExtended extends try { // Deploy Uima AS Primitive Service deployService(uimaAsEngine, relativePath + "/Deploy_NoOpAnnotatorWithPlaceholder.xml"); - Map<String, Object> appCtx = buildContext("tcp://localhost:8200", - "NoOpAnnotatorQueue"); + Map<String, Object> appCtx = + buildContext(broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString(), "NoOpAnnotatorQueue"); + appCtx.put(UimaAsynchronousEngine.Timeout, 1100); appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100); initialize(uimaAsEngine, appCtx); waitUntilInitialized(); - int errorCount=0; for (int i = 0; i < 1000; i++) { if ( i == 5 ) { latch.countDown(); // indicate that some CASes were processed @@ -467,7 +449,7 @@ public class TestUimaASExtended extends }; clientThreads[i].start(); } - + BrokerService broker3 = null; try { latch.await(); // wait for all threads to process a few CASes @@ -478,45 +460,44 @@ public class TestUimaASExtended extends } System.out.println("Restarting Broker - wait ..."); // restart the broker - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - broker2 = createBroker(8200, true, true); - broker2.start(); + broker3 = setupSecondaryBroker(true); + synchronized(this) { wait(3000); // allow broker some time to start } } catch ( Exception e ) { - } - for(int i=0; i < 4; i++ ) { - clientThreads[i].join(); - } - System.out.println("Stopping Broker - wait ..."); - super.cleanBroker(broker2); + } finally { + for(int i=0; i < 4; i++ ) { + clientThreads[i].join(); + } + System.out.println("Stopping Broker - wait ..."); + if ( broker3 != null ) { + super.cleanBroker(broker3); - broker2.stop(); - synchronized(this) { - wait(3000); // allow broker some time to stop + broker3.stop(); + synchronized(this) { + wait(3000); // allow broker some time to stop + } + } } } /** - * This test starts a broker on port 8200, starts NoOp Annotator, and + * This test starts a secondary broker, starts NoOp Annotator, and * using asynchronous send() sends a total of 15 CASes for analysis. After processing 11th - * the test stops the broker and sends 4 more CASes which fails due to broker not running. + * the test stops the secondary broker and sends 4 more CASes which fails due to broker not running. * * @throws Exception */ public void testAsyncClientRecoveryFromBrokerStop() throws Exception { System.out.println("-------------- testAsyncClientRecoveryFromBrokerStop -------------"); - System.setProperty("BrokerURL", "tcp://localhost:8200"); - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(8200, true, true); - - broker2.start(); + + BrokerService broker2 = setupSecondaryBroker(true); // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); deployService(uimaAsEngine, relativePath + "/Deploy_NoOpAnnotatorWithPlaceholder.xml"); - Map<String, Object> appCtx = buildContext("tcp://localhost:8200", - "NoOpAnnotatorQueue"); + Map<String, Object> appCtx = + buildContext(broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString(), "NoOpAnnotatorQueue"); appCtx.put(UimaAsynchronousEngine.Timeout, 1100); appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100); initialize(uimaAsEngine, appCtx); @@ -546,16 +527,15 @@ public class TestUimaASExtended extends public void testAsyncClientRecoveryFromBrokerStopAndRestart() throws Exception { System.out.println("-------------- testAsyncClientRecoveryFromBrokerStopAndRestart -------------"); - System.setProperty("BrokerURL", "tcp://localhost:8200"); - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(8200, true, true); - broker2.start(); + + BrokerService broker2 = setupSecondaryBroker(true); // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); // Deploy Uima AS Primitive Service deployService(uimaAsEngine, relativePath + "/Deploy_NoOpAnnotatorWithPlaceholder.xml"); - Map<String, Object> appCtx = buildContext("tcp://localhost:8200", - "NoOpAnnotatorQueue"); + Map<String, Object> appCtx = + buildContext(broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString(), "NoOpAnnotatorQueue"); + appCtx.put(UimaAsynchronousEngine.Timeout, 1100); appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100); initialize(uimaAsEngine, appCtx); @@ -568,9 +548,7 @@ public class TestUimaASExtended extends wait(3000); // allow broker some time to stop } } else if ( i == 20 ) { - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - broker2 = createBroker(8200, true, true); - broker2.start(); + broker2 = setupSecondaryBroker(true); synchronized(this) { wait(3000); // allow broker some time to start } @@ -611,17 +589,14 @@ public class TestUimaASExtended extends public void testMultipleClientsRecoveryFromBrokerStopAndRestart() throws Exception { System.out.println("-------------- testMultipleClientsRecoveryFromBrokerStopAndRestart -------------"); - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(8200, true, true); - broker2.start(); - System.setProperty("BrokerURL", "tcp://localhost:8200"); - + BrokerService broker2 = setupSecondaryBroker(true); // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaClient1 = new BaseUIMAAsynchronousEngine_impl(); // Deploy Uima AS Primitive Service deployService(uimaClient1, relativePath + "/Deploy_NoOpAnnotatorWithPlaceholder.xml"); - Map<String, Object> appCtx = buildContext("tcp://localhost:8200", - "NoOpAnnotatorQueue"); + Map<String, Object> appCtx = + buildContext(broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString(), "NoOpAnnotatorQueue"); + appCtx.put(UimaAsynchronousEngine.Timeout, 1100); appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100); initialize(uimaClient1, appCtx); @@ -629,8 +604,10 @@ public class TestUimaASExtended extends // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaClient2 = new BaseUIMAAsynchronousEngine_impl(); - Map<String, Object> appCtx2 = buildContext("tcp://localhost:8200", - "NoOpAnnotatorQueue"); + Map<String, Object> appCtx2 = + buildContext(broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString(), "NoOpAnnotatorQueue"); + + appCtx2.put(UimaAsynchronousEngine.Timeout, 1100); appCtx2.put(UimaAsynchronousEngine.CpcTimeout, 1100); initialize(uimaClient2, appCtx2); @@ -647,9 +624,7 @@ public class TestUimaASExtended extends } // restart broker before 3rd CAS is sent // restart the broker - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - broker2 = createBroker(8200, true, true); - broker2.start(); + broker2 = setupSecondaryBroker(true); synchronized(this) { wait(3000); // allow broker some time to start } @@ -701,18 +676,17 @@ public class TestUimaASExtended extends */ public void testAggregateRecoveryFromBrokerStopAndRestart() throws Exception { System.out.println("-------------- testAggregateRecoveryFromBrokerStopAndRestart -------------"); - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(8200, true,true); - broker2.start(); - System.setProperty("BrokerURL", "tcp://localhost:8200"); + BrokerService broker2 = setupSecondaryBroker(false); + System.setProperty("BrokerURL", broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString()); // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaClient1 = new BaseUIMAAsynchronousEngine_impl(); // Deploy Uima AS Primitive Service deployService(uimaClient1, relativePath + "/Deploy_NoOpAnnotatorWithPlaceholder.xml"); deployService(uimaClient1, relativePath + "/Deploy_AggregateWithRemoteNoOpOnBroker8200.xml"); - Map<String, Object> appCtx = buildContext("tcp://localhost:8200", - "NoOpAnnotatorQueue"); + Map<String, Object> appCtx = + buildContext(broker.getMasterConnectorURI(), "TopLevelTaeQueue"); + appCtx.put(UimaAsynchronousEngine.Timeout, 1100); appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100); initialize(uimaClient1, appCtx); @@ -723,17 +697,14 @@ public class TestUimaASExtended extends for (int i = 0; i < 10; i++) { // Stop broker before second CAS is sent to the service if ( i == 1 ) { - System.out.println("Stopping Broker Running on Port 8200"); + System.out.println("Stopping Secondary Broker Running on Port:"+broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString()); broker2.stop(); synchronized(this) { wait(3000); // allow broker some time to stop } // restart broker before 3rd CAS is sent // restart the broker - System.out.println("Starting Broker on Port 8200"); - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - broker2 = createBroker(8200, true, true); - broker2.start(); + broker2 = setupSecondaryBroker(true); synchronized(this) { wait(3000); // allow broker some time to start } @@ -743,6 +714,7 @@ public class TestUimaASExtended extends System.out.println("UIMA AS Client Sending CAS#" + (i + 1) + " Request to a Service"); try { uimaClient1.sendAndReceiveCAS(cas); + System.out.println("UIMA AS Client Received Reply For CAS#" + (i + 1) ); } catch( Exception e) { errorCount++; System.out.println("UIMA AS Client Received Expected Error on CAS:"+(i+1)); @@ -773,7 +745,7 @@ public class TestUimaASExtended extends // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); deployService(uimaAsEngine, relativePath + "/Deploy_NoOpAnnotatorAWithLongDelay.xml"); - Map<String, Object> appCtx = buildContext("tcp://localhost:8118", + Map<String, Object> appCtx = buildContext(broker.getMasterConnectorURI(), "NoOpAnnotatorAQueue"); appCtx.put(UimaAsynchronousEngine.Timeout, 5000); appCtx.put(UimaAsynchronousEngine.CpcTimeout, 1100); @@ -792,7 +764,6 @@ public class TestUimaASExtended extends public void testClientProcess() throws Exception { System.out.println("-------------- testClientProcess -------------"); - // Instantiate Uima AS Client BaseUIMAAsynchronousEngine_impl uimaAsEngine = new BaseUIMAAsynchronousEngine_impl(); // Deploy Uima AS Primitive Service @@ -812,6 +783,7 @@ public class TestUimaASExtended extends } uimaAsEngine.collectionProcessingComplete(); + System.clearProperty("DefaultBrokerURL"); uimaAsEngine.stop(); } @@ -1410,8 +1382,6 @@ public class TestUimaASExtended extends .println("-------------- testDeployAggregateServiceWithBrokerPlaceholder -------------"); final BaseUIMAAsynchronousEngine_impl eeUimaEngine = new BaseUIMAAsynchronousEngine_impl(); System.setProperty(JmsConstants.SessionTimeoutOverride, "2500000"); - System.setProperty("AggregateBroker", "tcp://localhost:8120"); - System.setProperty("NoOpBroker", "tcp://localhost:8120"); try { Thread t = new Thread() { @@ -1423,9 +1393,9 @@ public class TestUimaASExtended extends this.wait(5000); // wait for 5 secs } // Create a new broker that runs a different port that the rest of testcases - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - bs = createBroker(8120, true, true); - bs.start(); + bs = setupSecondaryBroker(false); + System.setProperty("AggregateBroker", bs.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString()); + System.setProperty("NoOpBroker", bs.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString()); deployService(eeUimaEngine, relativePath + "/Deploy_NoOpAnnotatorUsingPlaceholder.xml"); deployService(eeUimaEngine, relativePath + "/Deploy_AggregateAnnotatorUsingPlaceholder.xml"); @@ -1453,8 +1423,6 @@ public class TestUimaASExtended extends } catch (Exception e) { e.printStackTrace(); } - // runTest(null,eeUimaEngine,String.valueOf(broker.getMasterConnectorURI()),"TopLevelTaeQueue", - // 1, PROCESS_LATCH); } /** @@ -1470,9 +1438,29 @@ public class TestUimaASExtended extends public void testDelayedBrokerWithAggregateService() throws Exception { System.out.println("-------------- testDelayedBrokerWithAggregateService -------------"); final BaseUIMAAsynchronousEngine_impl eeUimaEngine = new BaseUIMAAsynchronousEngine_impl(); + BrokerService bs = null; deployService(eeUimaEngine, relativePath + "/Deploy_NoOpAnnotator.xml"); + // set up and start secondary broker. It is started only to detect an open port so that we + // define SecondaryBrokerURL property. This property is used to resolve a placeholder + // in the aggregate descriptor. Once the property is set we shutdown the secondary broker to + // test aggregate recovery from missing broker. Hopefully the same port is still open when + // the test starts the secondary broker for the second time. + bs = setupSecondaryBroker(false); + System.setProperty("SecondaryBrokerURL",bs.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString()); + bs.stop(); + // wait for the broker to stop + while( bs.isStarted() ) { + try { + synchronized(this) { + this.wait(100); + } + } catch( Exception e) {} + } + // Deploy aggregate on a secondary broker which was shutdown above. The aggregate should + // detect missing broker and silently wait for the broker to come up deployService(eeUimaEngine, relativePath + "/Deploy_AggregateAnnotatorOnSecondaryBroker.xml"); try { + // spin a thread to restart a broker after 5 seconds Thread t = new Thread() { public void run() { BrokerService bs = null; @@ -1482,12 +1470,11 @@ public class TestUimaASExtended extends this.wait(5000); // wait for 5 secs } // Create a new broker on port 8119 - System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - bs = createBroker(8119, true, true); - bs.start(); + bs = setupSecondaryBroker(false); + System.setProperty("SecondaryBrokerURL",bs.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString()); // Start the uima AS client. It connects to the top level service and sends // 10 messages - runTest(null, eeUimaEngine, "tcp://localhost:8119", "TopLevelTaeQueue", 10, + runTest(null, eeUimaEngine, bs.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString(), "TopLevelTaeQueue", 10, PROCESS_LATCH); } catch (InterruptedException e) { } catch (Exception e) { @@ -1539,7 +1526,6 @@ public class TestUimaASExtended extends deployService(eeUimaEngine, relativePath + "/Deploy_NoOpAnnotator.xml"); deployService(eeUimaEngine, relativePath + "/Deploy_AggregateAnnotatorWithInternalCM1000Docs.xml"); - // deployService(eeUimaEngine, relativePath+"/Deploy_AggregateAnnotatorWith1MillionDocs.xml"); runTest(null, eeUimaEngine, String.valueOf(broker.getMasterConnectorURI()), "TopLevelTaeQueue", 1, PROCESS_LATCH); @@ -1560,33 +1546,6 @@ public class TestUimaASExtended extends * * @throws Exception */ - /* - * - * public void testCollectionReader() throws Exception { - * System.out.println("-------------- testCollectionReader -------------"); // Instantiate Uima EE - * Client BaseUIMAAsynchronousEngine_impl eeUimaEngine = new BaseUIMAAsynchronousEngine_impl(); - * deployService(eeUimaEngine, relativePath+"/Deploy_PersonTitleAnnotator.xml"); Map<String, - * Object> appCtx = buildContext( - * String.valueOf(broker.getMasterConnectorURI()),"PersonTitleAnnotatorQueue" ); // reduce the cas - * pool size and reply window appCtx.remove(UimaAsynchronousEngine.CasPoolSize); - * appCtx.put(UimaAsynchronousEngine.CasPoolSize, Integer.valueOf(2)); - * appCtx.remove(UimaAsynchronousEngine.ReplyWindow); - * appCtx.put(UimaAsynchronousEngine.ReplyWindow, 1); // set the collection reader File - * collectionReaderDescriptor = new - * File("resources/descriptors/collection_reader/FileSystemCollectionReader.xml"); - * CollectionReaderDescription collectionReaderDescription = UIMAFramework.getXMLParser() - * .parseCollectionReaderDescription(new XMLInputSource(collectionReaderDescriptor)); - * collectionReader = UIMAFramework - * .produceCollectionReader(collectionReaderDescription); - * eeUimaEngine.setCollectionReader(collectionReader); initialize(eeUimaEngine, appCtx); - * waitUntilInitialized(); runCrTest(eeUimaEngine, 7); eeUimaEngine.stop(); } - */ - /** - * Tests exception thrown in the Uima EE Client when the Collection Reader is added after the uima - * ee client is initialized - * - * @throws Exception - */ public void testExceptionOnPostInitializeCollectionReaderInjection() throws Exception { System.out .println("-------------- testExceptionOnPostInitializeCollectionReaderInjection -------------"); @@ -2174,10 +2133,8 @@ public class TestUimaASExtended extends System.out .println("-------------- testProcessWithAggregateUsingRemoteMultiplierOnSeparateBroker -------------"); System.setProperty("activemq.broker.jmx.domain","org.apache.activemq.test"); - BrokerService broker2 = createBroker(8200, true,true); - // start a broker that manages top level aggregate service input queue - broker2.start(); - System.setProperty("BrokerURL", "tcp://localhost:8200"); + BrokerService broker2 = setupSecondaryBroker(true); + System.setProperty("BrokerURL", broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString()); BaseUIMAAsynchronousEngine_impl eeUimaEngine = new BaseUIMAAsynchronousEngine_impl(); deployService(eeUimaEngine, relativePath + "/Deploy_RemoteCasMultiplier.xml"); @@ -2185,10 +2142,10 @@ public class TestUimaASExtended extends deployService(eeUimaEngine, relativePath + "/Deploy_AggregateWithRemoteMultiplier.xml"); Map<String, Object> appCtx = new HashMap(); - appCtx.put(UimaAsynchronousEngine.ServerUri, "tcp://localhost:8200"); + appCtx.put(UimaAsynchronousEngine.ServerUri, broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString()); appCtx.put(UimaAsynchronousEngine.Endpoint, "TopLevelTaeQueue"); appCtx.put(UimaAsynchronousEngine.GetMetaTimeout, 0); - runTest(appCtx, eeUimaEngine, "tcp://localhost:8200", + runTest(appCtx, eeUimaEngine, broker2.getConnectorByName(DEFAULT_BROKER_URL_KEY_2).getUri().toString(), "TopLevelTaeQueue", 1, PROCESS_LATCH); super.cleanBroker(broker2); @@ -2312,7 +2269,6 @@ public class TestUimaASExtended extends // CM1 --> CM2 --> Remote AggregateCM --> Candidate Answer --> CC deployService(eeUimaEngine, relativePath + "/Deploy_TopLevelBlueJAggregateCM.xml"); - // runTest2(null,eeUimaEngine,"tcp://localhost:61616","BJTopLevelAggregate", 1, PROCESS_LATCH); runTest2(null, eeUimaEngine, String.valueOf(broker.getMasterConnectorURI()), "TopLevelTaeQueue", 10, PROCESS_LATCH); } @@ -2447,109 +2403,6 @@ public class TestUimaASExtended extends 1, CPC_LATCH); } -// public void testClientHttpTunnelling() throws Exception { -// System.out.println("-------------- testClientHttpTunnelling -------------"); -// // Add HTTP Connector to the broker. The connector will use port 8888. If this port is not -// // available the test fails -// String httpURI = addHttpConnector(DEFAULT_HTTP_PORT); -// // Create Uima EE Client -// BaseUIMAAsynchronousEngine_impl eeUimaEngine = new BaseUIMAAsynchronousEngine_impl(); -// // Deploy remote service -// deployService(eeUimaEngine, relativePath + "/Deploy_NoOpAnnotator.xml"); -// // Initialize and run the Test. Wait for a completion and cleanup resources. -// runTest(null, eeUimaEngine, httpURI, "NoOpAnnotatorQueue", 1, CPC_LATCH); -// // Remove the HTTP Connector -// removeHttpConnector(); -// } -// -// public void testClientHttpTunnellingToAggregate() throws Exception { -// System.out.println("-------------- testClientHttpTunnellingToAggregate -------------"); -// // Add HTTP Connector to the broker. The connector will use port 8888. If this port is not -// // available the test fails -// String httpURI = addHttpConnector(DEFAULT_HTTP_PORT); -// // Create Uima EE Client -// BaseUIMAAsynchronousEngine_impl eeUimaEngine = new BaseUIMAAsynchronousEngine_impl(); -// // Deploy remote service -// deployService(eeUimaEngine, relativePath + "/Deploy_NoOpAnnotator.xml"); -// deployService(eeUimaEngine, relativePath + "/Deploy_AggregateAnnotator.xml"); -// // Initialize and run the Test. Wait for a completion and cleanup resources. -// runTest(null, eeUimaEngine, httpURI, "TopLevelTaeQueue", 1, CPC_LATCH); -// // Remove the HTTP Connector -// removeHttpConnector(); -// } -// -// public void testClientHttpTunnellingWithDoubleByteText() throws Exception { -// System.out.println("-------------- testClientHttpTunnellingWithDoubleByteText -------------"); -// -// BufferedReader in = null; -// try { -// File file = new File(relativeDataPath + "/DoubleByteText.txt"); -// System.out.println("Checking for existence of File:" + file.getAbsolutePath()); -// // Process only if the file exists -// if (file.exists()) { -// System.out -// .println(" *** DoubleByteText.txt exists and will be sent through http connector."); -// System.out.println(" *** If the vanilla activemq release is being used,"); -// System.out -// .println(" *** and DoubleByteText.txt is bigger than 64KB or so, this test case will hang."); -// System.out -// .println(" *** To fix, override the classpath with the jar files in and under the"); -// System.out -// .println(" *** apache-uima-as/uima-as-distr/src/main/apache-activemq-X.y.z directory"); -// System.out.println(" *** in the apache-uima-as source distribution."); -// -// // Add HTTP Connector to the broker. The connector will use port 8888. If this port is not -// // available the test fails -// String httpURI = addHttpConnector(DEFAULT_HTTP_PORT); -// // Create Uima EE Client -// BaseUIMAAsynchronousEngine_impl eeUimaEngine = new BaseUIMAAsynchronousEngine_impl(); -// // Deploy remote service -// deployService(eeUimaEngine, relativePath + "/Deploy_NoOpAnnotator.xml"); -// -// InputStream fis = new FileInputStream(file); -// Reader rd = new InputStreamReader(fis, "UTF-8"); -// in = new BufferedReader(rd); -// // Set the double-byte text. This is what will be sent to the service -// String line = in.readLine(); -// super.setDoubleByteText(line); -// int err = XMLUtils.checkForNonXmlCharacters(line); -// if (err >= 0) { -// fail("Illegal XML char at offset " + err); -// } -// // Initialize and run the Test. Wait for a completion and cleanup resources. -// runTest(null, eeUimaEngine, httpURI, "NoOpAnnotatorQueue", 1, CPC_LATCH); -// } -// } catch (Exception e) { -// // Double-Byte Text file not present. Continue on with the next test -// e.printStackTrace(); -// fail("Could not complete test"); -// } finally { -// if (in != null) { -// in.close(); -// } -// // Remove the HTTP Connector -// removeHttpConnector(); -// } -// } -// -// public void testAggregateHttpTunnelling() throws Exception { -// System.out.println("-------------- testAggregateHttpTunnelling -------------"); -// // Add HTTP Connector to the broker. The connector will use port 8888. If this port is not -// // available the test fails -// addHttpConnector(DEFAULT_HTTP_PORT); -// // Create Uima EE Client -// BaseUIMAAsynchronousEngine_impl eeUimaEngine = new BaseUIMAAsynchronousEngine_impl(); -// // Deploy remote service -// deployService(eeUimaEngine, relativePath + "/Deploy_NoOpAnnotator.xml"); -// // Deploy top level aggregate that communicates with the remote via Http Tunnelling -// deployService(eeUimaEngine, relativePath + "/Deploy_AggregateAnnotatorWithHttpDelegate.xml"); -// -// // Initialize and run the Test. Wait for a completion and cleanup resources. -// runTest(null, eeUimaEngine, String.valueOf(broker.getMasterConnectorURI()), "TopLevelTaeQueue", -// 10, CPC_LATCH); -// // Remove the HTTP Connector -// removeHttpConnector(); -// } /** * Tests exception thrown in the Uima EE Client when the Collection Reader is added after the uima @@ -2842,8 +2695,6 @@ public class TestUimaASExtended extends deployService(eeUimaEngine, relativePath + "/Deploy_SyncAggregateWithJmsService.xml"); runTest(null, eeUimaEngine, String.valueOf(broker.getMasterConnectorURI()), "TopLevelTaeQueue", 10, PROCESS_LATCH); - // runTest(null,eeUimaEngine,"tcp://hbca-3.watson.ibm.com:61616","TopLevelTaeQueue", 10, - // PROCESS_LATCH); } /* * Tests Uima AS client placeholder handling and substitution. The Uima Aggregate instantiates @@ -2882,7 +2733,6 @@ public class TestUimaASExtended extends System.out.println("-------------- testJmsServiceAdapterWithException -------------"); BaseUIMAAsynchronousEngine_impl eeUimaEngine = new BaseUIMAAsynchronousEngine_impl(); deployService(eeUimaEngine, relativePath + "/Deploy_NoOpAnnotatorWithException.xml"); - // deployService(eeUimaEngine, relativePath+"/Deploy_NoOpAnnotator.xml"); deployService(eeUimaEngine, relativePath + "/Deploy_SyncAggregateWithJmsService.xml"); Map<String, Object> appCtx = buildContext(String.valueOf(broker.getMasterConnectorURI()), "TopLevelTaeQueue"); @@ -2899,8 +2749,6 @@ public class TestUimaASExtended extends cas.reset(); } eeUimaEngine.stop(); - // runTest(null,eeUimaEngine,String.valueOf(broker.getMasterConnectorURI()),"TopLevelTaeQueue", - // 1, EXCEPTION_LATCH); } public void testJmsServiceAdapterWithProcessTimeout() throws Exception {