summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2010-11-01 17:29:29 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2010-11-01 17:29:29 +0000
commitcab9e5e0c2ee4bd15ba65625fd9ff75ced777c75 (patch)
tree5e44173936ec546594a4fffbda7604213745aa8a
parente07774394f9234e5ef095dcede98b08e79dff878 (diff)
Wanted to try some concurrent calls to an COMPOSITE scoped component to make sure it runs OK so though it may be useful to start a test for it. Don't think we have one already. If someone can point me at one I can just ditch this. Not in the build yet.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1029756 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to '')
-rw-r--r--sca-java-1.x/trunk/itest/concurrency/pom.xml60
-rw-r--r--sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldClientImpl.java78
-rw-r--r--sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldService.java30
-rw-r--r--sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldServiceImpl.java43
-rw-r--r--sca-java-1.x/trunk/itest/concurrency/src/main/resources/helloworld.composite36
-rw-r--r--sca-java-1.x/trunk/itest/concurrency/src/test/java/org/apache/tuscany/sca/itest/ConcurrencyTestCase.java63
6 files changed, 310 insertions, 0 deletions
diff --git a/sca-java-1.x/trunk/itest/concurrency/pom.xml b/sca-java-1.x/trunk/itest/concurrency/pom.xml
new file mode 100644
index 0000000000..003681062c
--- /dev/null
+++ b/sca-java-1.x/trunk/itest/concurrency/pom.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-itest</artifactId>
+ <version>1.7-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+ <artifactId>itest-concurrency</artifactId>
+ <name>Apache Tuscany SCA iTest Concurrency</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-api</artifactId>
+ <version>1.7-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-node-impl</artifactId>
+ <version>1.7-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-implementation-java-runtime</artifactId>
+ <version>1.7-SNAPSHOT</version>
+ <scope>runtime</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.5</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+</project>
diff --git a/sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldClientImpl.java b/sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldClientImpl.java
new file mode 100644
index 0000000000..9d243b8d20
--- /dev/null
+++ b/sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldClientImpl.java
@@ -0,0 +1,78 @@
+/*
+ * 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 helloworld;
+
+import java.util.concurrent.CountDownLatch;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This class implements the HelloWorld service.
+ */
+@Service(HelloWorldService.class)
+public class HelloWorldClientImpl implements HelloWorldService {
+
+ @Reference
+ protected HelloWorldService helloworld;
+
+ CountDownLatch resultsReceivedCountdown;
+
+ private static int threadCount = 1000;
+
+ public String getGreetings(String name) {
+ resultsReceivedCountdown = new CountDownLatch(threadCount);
+
+ SendRequest[] requests = new SendRequest[threadCount];
+ for (int i=0; i < threadCount; i++){
+ requests[i] = new SendRequest(name+i);
+ }
+
+ long start = System.currentTimeMillis();
+
+ for (int i=0; i < threadCount; i++){
+ new Thread(requests[i]).start();
+ }
+
+ try {
+ resultsReceivedCountdown.await();
+ } catch (InterruptedException ex) {
+ }
+
+ long stop = System.currentTimeMillis();
+
+ return "Time = " + (stop - start);
+ }
+
+ public class SendRequest implements Runnable {
+ String name;
+
+ public SendRequest(String name){
+ this.name = name;
+ }
+
+ public void run() {
+ String response = "Client Hello " + helloworld.getGreetings(name);
+ System.out.println(response);
+ resultsReceivedCountdown.countDown();
+ }
+
+ }
+
+}
diff --git a/sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldService.java b/sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldService.java
new file mode 100644
index 0000000000..74d22ed830
--- /dev/null
+++ b/sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldService.java
@@ -0,0 +1,30 @@
+/*
+ * 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 helloworld;
+
+import org.osoa.sca.annotations.Remotable;
+
+/**
+ * This is the business interface of the HelloWorld greetings service.
+ */
+@Remotable
+public interface HelloWorldService {
+
+ public String getGreetings(String name);
+}
diff --git a/sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldServiceImpl.java b/sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldServiceImpl.java
new file mode 100644
index 0000000000..f5b17c087d
--- /dev/null
+++ b/sca-java-1.x/trunk/itest/concurrency/src/main/java/helloworld/HelloWorldServiceImpl.java
@@ -0,0 +1,43 @@
+/*
+ * 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 helloworld;
+
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+/**
+ * This class implements the HelloWorld service.
+ */
+@Scope("COMPOSITE")
+@Service(HelloWorldService.class)
+public class HelloWorldServiceImpl implements HelloWorldService {
+
+ public String getGreetings(String name) {
+ String response = "Hello " + name;
+ System.out.println("start" + response);
+ try{
+ Thread.currentThread().sleep(5000);
+ } catch (Exception ex){
+ ex.printStackTrace();
+ }
+ System.out.println("start" + response);
+ return response;
+ }
+
+}
diff --git a/sca-java-1.x/trunk/itest/concurrency/src/main/resources/helloworld.composite b/sca-java-1.x/trunk/itest/concurrency/src/main/resources/helloworld.composite
new file mode 100644
index 0000000000..f766dd403e
--- /dev/null
+++ b/sca-java-1.x/trunk/itest/concurrency/src/main/resources/helloworld.composite
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ targetNamespace="http://itest/policy"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:ip="http://itest/policy"
+ name="Helloworld">
+
+ <component name="HelloWorldClientComponent">
+ <implementation.java class="helloworld.HelloWorldClientImpl" />
+ <reference name="helloworld" target="HelloWorldServiceComponent"/>
+ </component>
+
+ <component name="HelloWorldServiceComponent">
+ <implementation.java class="helloworld.HelloWorldServiceImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-1.x/trunk/itest/concurrency/src/test/java/org/apache/tuscany/sca/itest/ConcurrencyTestCase.java b/sca-java-1.x/trunk/itest/concurrency/src/test/java/org/apache/tuscany/sca/itest/ConcurrencyTestCase.java
new file mode 100644
index 0000000000..3f28ce61f6
--- /dev/null
+++ b/sca-java-1.x/trunk/itest/concurrency/src/test/java/org/apache/tuscany/sca/itest/ConcurrencyTestCase.java
@@ -0,0 +1,63 @@
+/*
+ * 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.tuscany.sca.itest;
+
+import java.io.ByteArrayInputStream;
+
+import junit.framework.Assert;
+import helloworld.HelloWorldService;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class ConcurrencyTestCase {
+ private static SCANode node;
+ private static HelloWorldService service;
+
+ @BeforeClass
+ public static void init() throws Exception {
+ try {
+ SCANodeFactory factory = SCANodeFactory.newInstance();
+ node = factory.createSCANodeFromClassLoader("helloworld.composite",
+ ConcurrencyTestCase.class.getClassLoader());
+ node.start();
+
+ service = ((SCAClient)node).getService(HelloWorldService.class, "HelloWorldClientComponent");
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ @AfterClass
+ public static void destroy() throws Exception {
+ node.stop();
+ }
+
+ @Test
+ public void testConcurrency() {
+ String greetings = service.getGreetings("Simon");
+ System.out.println(">>>" + greetings);
+ }
+}