Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Stepper2006-10-23 17:41:10 +0000
committerEike Stepper2006-10-23 17:41:10 +0000
commita95acf5fcc86191fe51a7e0c8e899bd4614462df (patch)
tree2ceff92429cce2fa7cdeb5270432c22c583b7916 /plugins/org.eclipse.net4j.tests/src
parent697d6277d2715b06e41abc790ab8b053df1520c7 (diff)
downloadcdo-a95acf5fcc86191fe51a7e0c8e899bd4614462df.tar.gz
cdo-a95acf5fcc86191fe51a7e0c8e899bd4614462df.tar.xz
cdo-a95acf5fcc86191fe51a7e0c8e899bd4614462df.zip
Signal protocol
Diffstat (limited to 'plugins/org.eclipse.net4j.tests/src')
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/EncodingTest.java27
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/HugeData.java3
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/SignalTest.java43
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/TinyData.java41
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Indication1.java (renamed from plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Signal1Reactor.java)23
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Indication2.java43
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Request1.java50
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Request2.java (renamed from plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/Signal1Actor.java)26
-rw-r--r--plugins/org.eclipse.net4j.tests/src/org/eclipse/net4j/tests/signal/TestSignalProtocol.java4
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);

Back to the top