--- /dev/null
+/**
+ * © 2008 INA Service GmbH
+ */
+package net.pterodactylus.util.fcp;
+
+import net.pterodactylus.util.fcp.message.CloseConnectionDuplicateClientName;
+import net.pterodactylus.util.fcp.message.NodeHello;
+
+/**
+ * Adapter for {@link FcpListener}.
+ *
+ * @author <a href="mailto:dr@ina-germany.de">David Roden</a>
+ * @version $Id$
+ */
+public class FcpAdapter implements FcpListener {
+
+ /**
+ * @see net.pterodactylus.util.fcp.FcpListener#receivedNodeHello(net.pterodactylus.util.fcp.FcpConnection,
+ * net.pterodactylus.util.fcp.message.NodeHello)
+ */
+ public void receivedNodeHello(FcpConnection fcpConnection, NodeHello nodeHello) {
+ /* empty. */
+ }
+
+ /**
+ * @see net.pterodactylus.util.fcp.FcpListener#receivedCloseConnectionDuplicateClientName(net.pterodactylus.util.fcp.FcpConnection,
+ * net.pterodactylus.util.fcp.message.CloseConnectionDuplicateClientName)
+ */
+ public void receivedCloseConnectionDuplicateClientName(FcpConnection fcpConnection, CloseConnectionDuplicateClientName closeConnectionDuplicateClientName) {
+ /* empty. */
+ }
+
+ /**
+ * @see net.pterodactylus.util.fcp.FcpListener#receivedMessage(net.pterodactylus.util.fcp.FcpConnection,
+ * net.pterodactylus.util.fcp.FcpMessage)
+ */
+ public void receivedMessage(FcpConnection fcpConnection, FcpMessage fcpMessage) {
+ /* empty. */
+ }
+
+}
package net.pterodactylus.util.fcp;
import java.io.IOException;
-import java.util.List;
-import java.util.Map;
import junit.framework.TestCase;
-
+import net.pterodactylus.util.fcp.message.ClientHello;
+import net.pterodactylus.util.fcp.message.CloseConnectionDuplicateClientName;
+import net.pterodactylus.util.fcp.message.GenerateSSK;
+import net.pterodactylus.util.fcp.message.NodeHello;
/**
- * TODO
+ * Tests various commands and the FCP connection.
+ *
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
* @version $Id$
*/
public class FcpTest extends TestCase {
+ /** The FCP connection. */
private FcpConnection fcpConnection;
-
+
/**
* {@inheritDoc}
*/
@Override
protected void setUp() throws Exception {
- fcpConnection = new FcpConnection("wing", "FcpTest");
+ fcpConnection = new FcpConnection("wing");
fcpConnection.connect();
+ fcpConnection.sendMessage(new ClientHello("FcpTest"));
}
-
+
/**
* {@inheritDoc}
*/
protected void tearDown() throws Exception {
fcpConnection.disconnect();
}
-
+
+ /**
+ * Tests the FCP connection be simply {@link #setUp() setting it up} and
+ * {@link #tearDown() tearing it down} again.
+ *
+ * @throws FcpException
+ * if an FCP error occurs
+ * @throws IOException
+ * if an I/O error occurs
+ */
public void testFcpConnection() throws FcpException, IOException {
+ /* do nothing. */
}
-
- public void testListPeers() throws FcpException, IOException {
- List<Map<String, String>> peers = fcpConnection.sendListPeers(true, true);
- for (Map<String, String> peer: peers) {
- for (Map.Entry<String, String> entry: peer.entrySet()) {
- System.out.println(entry.getKey() + ": " + entry.getValue());
+
+// public void testListPeers() throws FcpException, IOException {
+// List<Map<String, String>> peers = fcpConnection.sendListPeers(true, true);
+// for (Map<String, String> peer: peers) {
+// for (Map.Entry<String, String> entry: peer.entrySet()) {
+// System.out.println(entry.getKey() + ": " + entry.getValue());
+// }
+// }
+// }
+
+// public void testListPeerNotes() throws FcpException, IOException {
+// List<Map<String, String>> peers = fcpConnection.sendListPeerNotes("AY6rGAGjayoyQD2CkvQibf1Ct3mh6iwqyntzNpfRsiM");
+// for (Map<String, String> peer: peers) {
+// for (Map.Entry<String, String> entry: peer.entrySet()) {
+// System.out.println(entry.getKey() + ": " + entry.getValue());
+// }
+// }
+// }
+
+ /**
+ * Generates an SSK key pair.
+ *
+ * @throws FcpException
+ * if an FCP error occurs
+ * @throws IOException
+ * if an I/O error occurs
+ * @throws InterruptedException
+ * if {@link Object#wait()} wakes up spuriously
+ */
+ public void testGenerateSSK() throws IOException, FcpException, InterruptedException {
+ final boolean[] result = new boolean[1];
+ FcpAdapter fcpAdapter = new FcpAdapter() {
+ /**
+ * @see net.pterodactylus.util.fcp.FcpAdapter#receivedNodeHello(net.pterodactylus.util.fcp.FcpConnection,
+ * net.pterodactylus.util.fcp.message.NodeHello)
+ */
+ @Override
+ public void receivedNodeHello(FcpConnection fcpConnection, NodeHello nodeHello) {
+ result[0] = true;
+ synchronized (this) {
+ notify();
+ }
}
- }
- }
-
- public void testListPeerNotes() throws FcpException, IOException {
- List<Map<String, String>> peers = fcpConnection.sendListPeerNotes("AY6rGAGjayoyQD2CkvQibf1Ct3mh6iwqyntzNpfRsiM");
- for (Map<String, String> peer: peers) {
- for (Map.Entry<String, String> entry: peer.entrySet()) {
- System.out.println(entry.getKey() + ": " + entry.getValue());
+
+ /**
+ * @see net.pterodactylus.util.fcp.FcpAdapter#receivedCloseConnectionDuplicateClientName(net.pterodactylus.util.fcp.FcpConnection,
+ * net.pterodactylus.util.fcp.message.CloseConnectionDuplicateClientName)
+ */
+ @Override
+ public void receivedCloseConnectionDuplicateClientName(FcpConnection fcpConnection, CloseConnectionDuplicateClientName closeConnectionDuplicateClientName) {
+ result[0] = false;
+ synchronized (this) {
+ notify();
+ }
}
+ };
+ synchronized (fcpAdapter) {
+ fcpConnection.sendMessage(new GenerateSSK());
+ fcpAdapter.wait();
}
+ assertTrue("received NodeHello", result[0]);
}
-
- public void testGenerateSSK() throws IOException, FcpException {
- FcpKeyPair keyPair = fcpConnection.generateSSK();
- System.out.println("PrivateKey: " + keyPair.getPrivateKey());
- System.out.println("PublicKey: " + keyPair.getPublicKey());
- }
-
+
}