diff options
author | Eike Stepper | 2006-10-23 17:41:10 +0000 |
---|---|---|
committer | Eike Stepper | 2006-10-23 17:41:10 +0000 |
commit | a95acf5fcc86191fe51a7e0c8e899bd4614462df (patch) | |
tree | 2ceff92429cce2fa7cdeb5270432c22c583b7916 /plugins/org.eclipse.net4j.tests/src | |
parent | 697d6277d2715b06e41abc790ab8b053df1520c7 (diff) | |
download | cdo-a95acf5fcc86191fe51a7e0c8e899bd4614462df.tar.gz cdo-a95acf5fcc86191fe51a7e0c8e899bd4614462df.tar.xz cdo-a95acf5fcc86191fe51a7e0c8e899bd4614462df.zip |
Signal protocol
Diffstat (limited to 'plugins/org.eclipse.net4j.tests/src')
9 files changed, 232 insertions, 28 deletions
diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/EncodingTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/EncodingTest.java new file mode 100644 index 0000000000..298bbc1135 --- /dev/null +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/EncodingTest.java @@ -0,0 +1,27 @@ +/*************************************************************************** + * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + **************************************************************************/ +package org.eclipse.net4j.tests; + +import org.eclipse.net4j.util.HexUtil; + +/** + * @author Eike Stepper + */ +public class EncodingTest +{ + public static void main(String[] args) + { + System.out.println(HexUtil.toHex(0)); + System.out.println(HexUtil.toHex(127)); + System.out.println(HexUtil.toHex(128)); + System.out.println(HexUtil.toHex(255)); + } +} diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/HugeData.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/HugeData.java index 5bb9429e46..f2b7650329 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/HugeData.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/HugeData.java @@ -13,9 +13,6 @@ package org.eclipse.net4j.tests; import java.util.StringTokenizer; /** - * TODO The {@link HugeData} class. - * <p> - * * @author Eike Stepper */ public final class HugeData diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/SignalTest.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/SignalTest.java index 9967a59603..8dcd2ce52b 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/SignalTest.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/SignalTest.java @@ -10,21 +10,27 @@ **************************************************************************/ package org.eclipse.net4j.tests; -import org.eclipse.net4j.tests.signal.Signal1Actor; +import org.eclipse.net4j.tests.signal.Request1; +import org.eclipse.net4j.tests.signal.Request2; import org.eclipse.net4j.tests.signal.TestSignalProtocol; import org.eclipse.net4j.transport.BufferProvider; import org.eclipse.net4j.transport.Channel; import org.eclipse.net4j.transport.ProtocolFactory; +import org.eclipse.net4j.util.lifecycle.AbstractLifecycle; import org.eclipse.net4j.util.lifecycle.LifecycleUtil; import org.eclipse.net4j.util.registry.HashMapRegistry; import org.eclipse.net4j.util.registry.IRegistry; +import org.eclipse.net4j.util.stream.BufferInputStream; +import org.eclipse.net4j.util.stream.BufferOutputStream; +import org.eclipse.internal.net4j.transport.BufferImpl; import org.eclipse.internal.net4j.transport.BufferUtil; import org.eclipse.internal.net4j.transport.tcp.AbstractTCPConnector; import org.eclipse.internal.net4j.transport.tcp.TCPAcceptorImpl; import org.eclipse.internal.net4j.transport.tcp.TCPSelectorImpl; import org.eclipse.internal.net4j.transport.tcp.TCPUtil; +import java.util.Arrays; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -47,11 +53,16 @@ public class SignalTest extends TestCase protected void setUp() throws Exception { super.setUp(); + AbstractLifecycle.DUMP_ON_ACTIVATE = true; + BufferImpl.TRACE = true; + BufferInputStream.TRACE = true; + BufferOutputStream.TRACE = true; + System.out.print("================================= "); System.out.print(getName()); System.out.println(" ================================="); - bufferPool = BufferUtil.createBufferPool(); + bufferPool = BufferUtil.createBufferPool((short)64); LifecycleUtil.activate(bufferPool); assertTrue(LifecycleUtil.isActive(bufferPool)); @@ -118,7 +129,7 @@ public class SignalTest extends TestCase super.tearDown(); } - public void testConnect() throws Exception + public void testInteger() throws Exception { ExecutorService threadPool = Executors.newCachedThreadPool(); IRegistry<String, ProtocolFactory> registry = new HashMapRegistry(); @@ -134,8 +145,30 @@ public class SignalTest extends TestCase assertTrue(connector.connect(1000)); Channel channel = connector.openChannel(TestSignalProtocol.PROTOCOL_ID); - byte[] data = HugeData.getBytes(); - byte[] result = new Signal1Actor(channel, data).start(); + int data = 0x0a; + int result = new Request1(channel, data).start(); assertEquals(data, result); } + + public void testArray() throws Exception + { + ExecutorService threadPool = Executors.newCachedThreadPool(); + IRegistry<String, ProtocolFactory> registry = new HashMapRegistry(); + registry.register(new TestSignalProtocol.Factory()); + + acceptor.setReceiveExecutor(threadPool); + acceptor.setProtocolFactoryRegistry(registry); + acceptor.activate(); + assertTrue(acceptor.isActive()); + + connector.setReceiveExecutor(threadPool); + connector.setProtocolFactoryRegistry(registry); + assertTrue(connector.connect(1000)); + + Channel channel = connector.openChannel(TestSignalProtocol.PROTOCOL_ID); + byte[] data = TinyData.getBytes(); + byte[] result = new Request2(channel, data).start(); + assertTrue(Arrays.equals(data, result)); + + } } diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TinyData.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TinyData.java new file mode 100644 index 0000000000..7e3da640ea --- /dev/null +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TinyData.java @@ -0,0 +1,41 @@ +/*************************************************************************** + * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + **************************************************************************/ +package org.eclipse.net4j.tests; + +import java.util.StringTokenizer; + +/** + * @author Eike Stepper + */ +public final class TinyData +{ + public static final String NL = System.getProperty("line.separator"); + + public static StringTokenizer getTokenizer() + { + return new StringTokenizer(getText(), NL); + } + + public static String[] getArray() + { + return getText().split(NL); + } + + public static byte[] getBytes() + { + return getText().getBytes(); + } + + public static String getText() + { + return "Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany. All rights reserved."; + } +} diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Signal1Reactor.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Indication1.java index ce8586ab91..ffded24350 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Signal1Reactor.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Indication1.java @@ -10,15 +10,19 @@ **************************************************************************/ package org.eclipse.net4j.tests.signal; -import org.eclipse.net4j.signal.SignalReactor; -import org.eclipse.net4j.util.stream.BufferInputStream; -import org.eclipse.net4j.util.stream.BufferOutputStream; +import org.eclipse.net4j.signal.IndicationWithResponse; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; /** * @author Eike Stepper */ -public class Signal1Reactor extends SignalReactor +public class Indication1 extends IndicationWithResponse { + private int data; + @Override protected short getSignalID() { @@ -26,11 +30,14 @@ public class Signal1Reactor extends SignalReactor } @Override - protected void execute(BufferInputStream in, BufferOutputStream out) throws Exception + protected void indicating(DataInputStream in) throws IOException { - byte[] data = readByteArray(); + data = in.readInt(); + } - writeByteArray(data); - out.flush(); + @Override + protected void responding(DataOutputStream out) throws IOException + { + out.writeInt(data); } } diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Indication2.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Indication2.java new file mode 100644 index 0000000000..6468b1b57d --- /dev/null +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Indication2.java @@ -0,0 +1,43 @@ +/*************************************************************************** + * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + **************************************************************************/ +package org.eclipse.net4j.tests.signal; + +import org.eclipse.net4j.signal.IndicationWithResponse; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class Indication2 extends IndicationWithResponse +{ + private byte[] data; + + @Override + protected short getSignalID() + { + return TestSignalProtocol.SIGNAL2; + } + + @Override + protected void indicating(DataInputStream in) throws IOException + { + data = readByteArray(); + } + + @Override + protected void responding(DataOutputStream out) throws IOException + { + writeByteArray(data); + } +} diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Request1.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Request1.java new file mode 100644 index 0000000000..6aaf6423bb --- /dev/null +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Request1.java @@ -0,0 +1,50 @@ +/*************************************************************************** + * Copyright (c) 2004, 2005, 2006 Eike Stepper, Germany. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + **************************************************************************/ +package org.eclipse.net4j.tests.signal; + +import org.eclipse.net4j.signal.RequestWithConfirmation; +import org.eclipse.net4j.transport.Channel; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +/** + * @author Eike Stepper + */ +public class Request1 extends RequestWithConfirmation<Integer> +{ + private int data; + + public Request1(Channel channel, int data) + { + super(channel); + this.data = data; + } + + @Override + protected short getSignalID() + { + return TestSignalProtocol.SIGNAL1; + } + + @Override + protected void requesting(DataOutputStream out) throws IOException + { + out.writeInt(data); + } + + @Override + protected Integer confirming(DataInputStream in) throws IOException + { + return in.readInt(); + } +} diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Signal1Actor.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Request2.java index 3d3da78466..63b568a159 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Signal1Actor.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Request2.java @@ -10,19 +10,21 @@ **************************************************************************/ package org.eclipse.net4j.tests.signal; -import org.eclipse.net4j.signal.SignalActor; +import org.eclipse.net4j.signal.RequestWithConfirmation; import org.eclipse.net4j.transport.Channel; -import org.eclipse.net4j.util.stream.BufferInputStream; -import org.eclipse.net4j.util.stream.BufferOutputStream; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; /** * @author Eike Stepper */ -public class Signal1Actor extends SignalActor<byte[]> +public class Request2 extends RequestWithConfirmation<byte[]> { private byte[] data; - public Signal1Actor(Channel channel, byte[] data) + public Request2(Channel channel, byte[] data) { super(channel); this.data = data; @@ -31,16 +33,18 @@ public class Signal1Actor extends SignalActor<byte[]> @Override protected short getSignalID() { - return TestSignalProtocol.SIGNAL1; + return TestSignalProtocol.SIGNAL2; } @Override - protected void execute(BufferInputStream in, BufferOutputStream out) throws Exception + protected void requesting(DataOutputStream out) throws IOException { writeByteArray(data); - out.flush(); - - byte[] result = readByteArray(); - setResult(result); + } + + @Override + protected byte[] confirming(DataInputStream in) throws IOException + { + return readByteArray(); } } diff --git a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/TestSignalProtocol.java b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/TestSignalProtocol.java index 51de4ae53a..d185032e0b 100644 --- a/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/TestSignalProtocol.java +++ b/plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/TestSignalProtocol.java @@ -52,7 +52,9 @@ public class TestSignalProtocol extends SignalProtocol switch (signalID) { case SIGNAL1: - return new Signal1Reactor(); + return new Indication1(); + case SIGNAL2: + return new Indication2(); } throw new IllegalArgumentException("Invalid signalID " + signalID); |