diff options
Diffstat (limited to 'sca-java-1.x/branches/sca-java-1.2/modules/implementation-notification/src/test')
3 files changed, 222 insertions, 0 deletions
diff --git a/sca-java-1.x/branches/sca-java-1.2/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java b/sca-java-1.x/branches/sca-java-1.2/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationComponentTestCase.java new file mode 100644 index 0000000000..561499a43b --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/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/sca-java-1.x/branches/sca-java-1.2/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoaderTestCase.java b/sca-java-1.x/branches/sca-java-1.2/modules/implementation-notification/src/test/java/org/apache/tuscany/sca/implementation/notification/NotificationImplementationLoaderTestCase.java new file mode 100644 index 0000000000..f5fe1854f7 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/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/sca-java-1.x/branches/sca-java-1.2/modules/implementation-notification/src/test/resources/TrafficAdvisoryNotificationTestCase.componentType b/sca-java-1.x/branches/sca-java-1.2/modules/implementation-notification/src/test/resources/TrafficAdvisoryNotificationTestCase.componentType new file mode 100644 index 0000000000..1fd952a0a8 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-1.2/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>
|