diff options
Diffstat (limited to 'java/sca/contrib/modules/implementation-notification/src/test')
3 files changed, 222 insertions, 0 deletions
diff --git a/java/sca/contrib/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java b/java/sca/contrib/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java new file mode 100644 index 0000000000..f9a20edccd --- /dev/null +++ b/java/sca/contrib/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java @@ -0,0 +1,136 @@ +/*
+ * 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.implementation.notification;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.ComponentReference;
+import org.apache.tuscany.sca.assembly.SCABinding;
+import org.apache.tuscany.sca.binding.sca.impl.SCABindingFactoryImpl;
+import org.apache.tuscany.sca.interfacedef.Operation;
+import org.apache.tuscany.sca.invocation.Interceptor;
+import org.apache.tuscany.sca.invocation.InvocationChain;
+import org.apache.tuscany.sca.invocation.Invoker;
+import org.apache.tuscany.sca.invocation.Message;
+import org.apache.tuscany.sca.runtime.EndpointReference;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
+import org.apache.tuscany.sca.runtime.RuntimeComponentReference;
+import org.apache.tuscany.sca.runtime.RuntimeWire;
+import org.easymock.EasyMock;
+
+/**
+ *
+ * @version $Rev$ $Date$
+ *
+ */
+public class NotificationComponentTestCase extends TestCase {
+
+ public void testLocalNotificationComponent() throws Exception {
+ try {
+ Operation operation = EasyMock.createNiceMock(Operation.class);
+ EasyMock.replay(operation);
+
+ InvocationChain sub1Chain = EasyMock.createNiceMock(InvocationChain.class);
+ EasyMock.expect(sub1Chain.getTargetOperation()).andReturn(operation);
+ EasyMock.expect(sub1Chain.getHeadInvoker()).andReturn(new MockInterceptor());
+ EasyMock.replay(sub1Chain);
+ List<InvocationChain> sub1Chains = new ArrayList<InvocationChain>();
+ sub1Chains.add(sub1Chain);
+ SCABinding b1 = new SCABindingFactoryImpl().createSCABinding();
+ EndpointReference epr1 = EasyMock.createNiceMock(EndpointReference.class);
+ EasyMock.expect(epr1.getURI()).andReturn("wire1Target");
+ EasyMock.expect(epr1.getBinding()).andReturn(b1);
+ EasyMock.replay(epr1);
+ RuntimeWire sub1Wire = EasyMock.createNiceMock(RuntimeWire.class);
+ EasyMock.expect(sub1Wire.getInvocationChains()).andReturn(sub1Chains);
+ EasyMock.expect(sub1Wire.getTarget()).andReturn(epr1).anyTimes();
+ EasyMock.replay(sub1Wire);
+ ArrayList<RuntimeWire> rtWires1 = new ArrayList<RuntimeWire>();
+ rtWires1.add(sub1Wire);
+ RuntimeComponentReference rtCompRef1 = EasyMock.createNiceMock(RuntimeComponentReference.class);
+ EasyMock.expect(rtCompRef1.getName()).andReturn("sub1Reference");
+ EasyMock.expect(rtCompRef1.getRuntimeWires()).andReturn(rtWires1);
+ EasyMock.replay(rtCompRef1);
+
+ InvocationChain sub2Chain = EasyMock.createNiceMock(InvocationChain.class);
+ EasyMock.expect(sub2Chain.getTargetOperation()).andReturn(operation);
+ EasyMock.expect(sub2Chain.getHeadInvoker()).andReturn(new MockInterceptor());
+ EasyMock.replay(sub2Chain);
+ List<InvocationChain> sub2Chains = new ArrayList<InvocationChain>();
+ sub2Chains.add(sub2Chain);
+ SCABinding b2 = new SCABindingFactoryImpl().createSCABinding();
+ EndpointReference epr2 = EasyMock.createNiceMock(EndpointReference.class);
+ EasyMock.expect(epr2.getURI()).andReturn("wire2Target");
+ EasyMock.expect(epr2.getBinding()).andReturn(b2);
+ EasyMock.replay(epr2);
+ RuntimeWire sub2Wire = EasyMock.createNiceMock(RuntimeWire.class);
+ EasyMock.expect(sub2Wire.getInvocationChains()).andReturn(sub2Chains);
+ EasyMock.expect(sub2Wire.getTarget()).andReturn(epr2).anyTimes();
+ EasyMock.replay(sub2Wire);
+ ArrayList<RuntimeWire> rtWires2 = new ArrayList<RuntimeWire>();
+ rtWires2.add(sub2Wire);
+ RuntimeComponentReference rtCompRef2 = EasyMock.createNiceMock(RuntimeComponentReference.class);
+ EasyMock.expect(rtCompRef2.getName()).andReturn("sub2Reference");
+ EasyMock.expect(rtCompRef2.getRuntimeWires()).andReturn(rtWires2);
+ EasyMock.replay(rtCompRef2);
+
+ ArrayList<ComponentReference> references = new ArrayList<ComponentReference>();
+ references.add(rtCompRef1);
+ references.add(rtCompRef2);
+ RuntimeComponent component = EasyMock.createNiceMock(RuntimeComponent.class);
+ EasyMock.expect(component.getName()).andReturn("LocalNotificationComponentTest");
+ EasyMock.expect(component.getReferences()).andReturn(references);
+ EasyMock.replay(component);
+
+ Invoker localNotificationInvoker = new NotificationComponentInvoker(operation, component);
+
+ Message msg = EasyMock.createNiceMock(Message.class);
+ EasyMock.expect(msg.getBody()).andReturn("msg").times(3); // once per sub int + once in notif target invoker
+ EasyMock.replay(msg);
+ localNotificationInvoker.invoke(msg);
+ EasyMock.verify(msg);
+ } catch(Throwable e) {
+ e.printStackTrace();
+ }
+ }
+
+ class MockInterceptor implements Interceptor {
+
+ public Message invoke(Message msg) {
+ Assert.assertEquals("msg", msg.getBody());
+ return msg;
+ }
+
+ public void setNext(Invoker next) {
+ throw new AssertionError();
+ }
+
+ public Interceptor getNext() {
+ throw new AssertionError();
+ }
+
+ public boolean isOptimizable() {
+ throw new AssertionError();
+ }
+ }
+}
diff --git a/java/sca/contrib/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoaderTestCase.java b/java/sca/contrib/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoaderTestCase.java new file mode 100644 index 0000000000..89cbd3ec48 --- /dev/null +++ b/java/sca/contrib/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoaderTestCase.java @@ -0,0 +1,56 @@ +/*
+ * 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.implementation.notification;
+
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamReader;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.assembly.Implementation;
+import org.easymock.EasyMock;
+
+/**
+ *
+ * @version $Rev$ $Date$
+ *
+ */
+public class NotificationImplementationLoaderTestCase extends TestCase {
+
+ public void testRead() throws Exception {
+ try {
+ NotificationImplementationProcessor implementationLoader =
+ new NotificationImplementationProcessor(new DefaultNotificationImplementationFactory());
+
+ XMLStreamReader reader = EasyMock.createMock(XMLStreamReader.class);
+ EasyMock.expect(reader.getName()).andReturn(NotificationImplementationProcessor.IMPLEMENTATION_NOTIFICATION).times(2);
+ EasyMock.expect(reader.getAttributeValue(null, "name")).andReturn("TrafficAdvisoryNotificationTestCase");
+ EasyMock.expect(reader.getAttributeValue(null, "type")).andReturn(null);
+ EasyMock.expect(reader.hasNext()).andReturn(true);
+ EasyMock.expect(reader.next()).andReturn(XMLStreamConstants.END_ELEMENT);
+ EasyMock.replay(reader);
+
+ Implementation impl = implementationLoader.read(reader);
+ Assert.assertNotNull(impl);
+ } catch(Throwable e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/java/sca/contrib/modules/implementation-notification/src/test/resources/TrafficAdvisoryNotificationTestCase.componentType b/java/sca/contrib/modules/implementation-notification/src/test/resources/TrafficAdvisoryNotificationTestCase.componentType new file mode 100644 index 0000000000..1fd952a0a8 --- /dev/null +++ b/java/sca/contrib/modules/implementation-notification/src/test/resources/TrafficAdvisoryNotificationTestCase.componentType @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="ASCII"?>
+<!--
+ * 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.
+-->
+
+<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <service name="TrafficAdvisoryNotificationService">
+ <interface.java interface="org.apache.tuscany.sca.implementation.notification.TrafficAdvisory"/>
+ </service>
+
+ <reference name="TrafficAdvisoryNotificationReference"
+ multiplicity="0..n">
+ <interface.java interface="org.apache.tuscany.sca.implementation.notification.TrafficAdvisory"/>
+ </reference>
+</componentType>
|