aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2014-02-03 23:03:52 +0000
committerFlorian Dold <florian.dold@gmail.com>2014-02-03 23:03:52 +0000
commit50c29845e1ed1646050fa7e71b64c6683287ffde (patch)
treea83ca2bb2beda2ed5f5b521fd41aa5d393daf287 /src/test/java/org
parent617842c973a7c05053fc770960fda60e7ef77368 (diff)
downloadgnunet-java-50c29845e1ed1646050fa7e71b64c6683287ffde.tar.gz
gnunet-java-50c29845e1ed1646050fa7e71b64c6683287ffde.zip
- scheduler-per-thread
- fixed ECDSA and crypto endianess - Gns and GnsTool implemented - updated consensus protocol
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/gnunet/consensus/ConsensusSingleTest.java13
-rw-r--r--src/test/java/org/gnunet/consensus/ConsensusTestbedTest.java11
-rw-r--r--src/test/java/org/gnunet/core/CoreTest.java4
-rw-r--r--src/test/java/org/gnunet/identity/IdentityTest.java3
-rw-r--r--src/test/java/org/gnunet/transport/TransportTest.java5
-rw-r--r--src/test/java/org/gnunet/util/ClientServerTest.java3
-rw-r--r--src/test/java/org/gnunet/util/EcdheTest.java24
-rw-r--r--src/test/java/org/gnunet/util/EcdsaTest.java10
-rw-r--r--src/test/java/org/gnunet/util/Ed25519Test.java13
9 files changed, 66 insertions, 20 deletions
diff --git a/src/test/java/org/gnunet/consensus/ConsensusSingleTest.java b/src/test/java/org/gnunet/consensus/ConsensusSingleTest.java
index f86d5f5..f6033dc 100644
--- a/src/test/java/org/gnunet/consensus/ConsensusSingleTest.java
+++ b/src/test/java/org/gnunet/consensus/ConsensusSingleTest.java
@@ -20,6 +20,7 @@
20 20
21package org.gnunet.consensus; 21package org.gnunet.consensus;
22 22
23import org.gnunet.testing.TestingFixture;
23import org.gnunet.testing.TestingSubsystem; 24import org.gnunet.testing.TestingSubsystem;
24import org.gnunet.util.*; 25import org.gnunet.util.*;
25import org.junit.Assert; 26import org.junit.Assert;
@@ -31,7 +32,7 @@ import java.util.List;
31/** 32/**
32 * Test consensus with only one peer. 33 * Test consensus with only one peer.
33 */ 34 */
34public class ConsensusSingleTest { 35public class ConsensusSingleTest extends TestingFixture {
35 @Test 36 @Test
36 public void test_consensus_single() { 37 public void test_consensus_single() {
37 Configuration armConf = new Configuration(); 38 Configuration armConf = new Configuration();
@@ -41,8 +42,12 @@ public class ConsensusSingleTest {
41 TestingSubsystem ts = new TestingSubsystem("arm", armConf.writeTemp().getAbsolutePath()); 42 TestingSubsystem ts = new TestingSubsystem("arm", armConf.writeTemp().getAbsolutePath());
42 final Wrapper<Boolean> isDone = new Wrapper<Boolean>(false); 43 final Wrapper<Boolean> isDone = new Wrapper<Boolean>(false);
43 44
44 final Consensus consensus = new Consensus(ts.getConfiguration(), new PeerIdentity[0], 45 final Consensus consensus = new Consensus(
45 HashCode.random()); 46 ts.getConfiguration(),
47 new PeerIdentity[0],
48 HashCode.random(),
49 AbsoluteTime.now(),
50 AbsoluteTime.now().add(RelativeTime.SECOND.multiply(10)));
46 51
47 consensus.insertElement(new ConsensusElement("foo".getBytes(), 0)); 52 consensus.insertElement(new ConsensusElement("foo".getBytes(), 0));
48 consensus.insertElement(new ConsensusElement("bar".getBytes(), 0)); 53 consensus.insertElement(new ConsensusElement("bar".getBytes(), 0));
@@ -50,7 +55,7 @@ public class ConsensusSingleTest {
50 55
51 final List<String> received = new LinkedList<String>(); 56 final List<String> received = new LinkedList<String>();
52 57
53 consensus.conclude(RelativeTime.SECOND, new ConsensusCallback() { 58 consensus.conclude(new ConsensusCallback() {
54 @Override 59 @Override
55 public void onElement(ConsensusElement element) { 60 public void onElement(ConsensusElement element) {
56 Assert.assertNotNull(element); 61 Assert.assertNotNull(element);
diff --git a/src/test/java/org/gnunet/consensus/ConsensusTestbedTest.java b/src/test/java/org/gnunet/consensus/ConsensusTestbedTest.java
index e5b4d3b..d544a43 100644
--- a/src/test/java/org/gnunet/consensus/ConsensusTestbedTest.java
+++ b/src/test/java/org/gnunet/consensus/ConsensusTestbedTest.java
@@ -5,6 +5,7 @@ import org.gnunet.testbed.ControllerProc;
5import org.gnunet.testbed.Host; 5import org.gnunet.testbed.Host;
6import org.gnunet.testbed.SimpleTestbed; 6import org.gnunet.testbed.SimpleTestbed;
7import org.gnunet.testbed.callbacks.*; 7import org.gnunet.testbed.callbacks.*;
8import org.gnunet.testing.TestingFixture;
8import org.gnunet.util.*; 9import org.gnunet.util.*;
9import org.junit.Assert; 10import org.junit.Assert;
10import org.junit.Test; 11import org.junit.Test;
@@ -15,7 +16,7 @@ import java.util.Set;
15/** 16/**
16 * Test for consensus with multiple peers using testbed. 17 * Test for consensus with multiple peers using testbed.
17 */ 18 */
18public class ConsensusTestbedTest { 19public class ConsensusTestbedTest extends TestingFixture {
19 @Test 20 @Test
20 public void test_consensus_testbed_2peers() { 21 public void test_consensus_testbed_2peers() {
21 final Wrapper<Boolean> done = new Wrapper<Boolean>(false); 22 final Wrapper<Boolean> done = new Wrapper<Boolean>(false);
@@ -33,6 +34,8 @@ public class ConsensusTestbedTest {
33 int peersStarted; 34 int peersStarted;
34 int peersConcludeDone; 35 int peersConcludeDone;
35 HashCode sessionId = HashCode.random(); 36 HashCode sessionId = HashCode.random();
37 AbsoluteTime start;
38 AbsoluteTime deadline;
36 39
37 class MyConsensusCallback implements ConsensusCallback { 40 class MyConsensusCallback implements ConsensusCallback {
38 int n; 41 int n;
@@ -69,11 +72,11 @@ public class ConsensusTestbedTest {
69 @Override 72 @Override
70 public void onConnect(Configuration cfg) { 73 public void onConnect(Configuration cfg) {
71 System.out.println("connecting to consensus"); 74 System.out.println("connecting to consensus");
72 consensi[n] = new Consensus(cfg, identities, sessionId); 75 consensi[n] = new Consensus(cfg, identities, sessionId, start, deadline);
73 consensi[n].insertElement(new ConsensusElement("foo".getBytes(), 0)); 76 consensi[n].insertElement(new ConsensusElement("foo".getBytes(), 0));
74 consensi[n].insertElement(new ConsensusElement("bar".getBytes(), 0)); 77 consensi[n].insertElement(new ConsensusElement("bar".getBytes(), 0));
75 consensi[n].insertElement(new ConsensusElement(("num" + n).getBytes(), 0)); 78 consensi[n].insertElement(new ConsensusElement(("num" + n).getBytes(), 0));
76 consensi[n].conclude(RelativeTime.SECOND.multiply(10), new MyConsensusCallback(n)); 79 consensi[n].conclude(new MyConsensusCallback(n));
77 } 80 }
78 81
79 @Override 82 @Override
@@ -152,6 +155,8 @@ public class ConsensusTestbedTest {
152 155
153 @Override 156 @Override
154 public void run() { 157 public void run() {
158 start = AbsoluteTime.now();
159 deadline = start.add(RelativeTime.SECOND.multiply(10));
155 // use local peer's config, does that really make sense? 160 // use local peer's config, does that really make sense?
156 h = new Host(null, null, getConfiguration(), 0); 161 h = new Host(null, null, getConfiguration(), 0);
157 cp = new ControllerProc(); 162 cp = new ControllerProc();
diff --git a/src/test/java/org/gnunet/core/CoreTest.java b/src/test/java/org/gnunet/core/CoreTest.java
index 0cb7817..adbcd26 100644
--- a/src/test/java/org/gnunet/core/CoreTest.java
+++ b/src/test/java/org/gnunet/core/CoreTest.java
@@ -77,6 +77,7 @@ public class CoreTest extends TestingFixture {
77 final Core core = new Core(ts.getConfiguration()); 77 final Core core = new Core(ts.getConfiguration());
78 core.setMessageHandler(new Runabout() { 78 core.setMessageHandler(new Runabout() {
79 public void visit(TestMessage t) { 79 public void visit(TestMessage t) {
80 System.out.println("got core response");
80 gotResponse.set(true); 81 gotResponse.set(true);
81 core.disconnect(); 82 core.disconnect();
82 } 83 }
@@ -85,7 +86,8 @@ public class CoreTest extends TestingFixture {
85 core.init(new InitCallback() { 86 core.init(new InitCallback() {
86 @Override 87 @Override
87 public void onInit(PeerIdentity myIdentity) { 88 public void onInit(PeerIdentity myIdentity) {
88 System.out.println("in core init"); 89 System.out.println("in core init, my identity is " + myIdentity);
90 // we want to send a 4-byte TestMessage
89 core.notifyTransmitReady(0, RelativeTime.FOREVER, myIdentity, 4, new MessageTransmitter() { 91 core.notifyTransmitReady(0, RelativeTime.FOREVER, myIdentity, 4, new MessageTransmitter() {
90 @Override 92 @Override
91 public void transmit(Connection.MessageSink sink) { 93 public void transmit(Connection.MessageSink sink) {
diff --git a/src/test/java/org/gnunet/identity/IdentityTest.java b/src/test/java/org/gnunet/identity/IdentityTest.java
index cda4e6b..d2102dd 100644
--- a/src/test/java/org/gnunet/identity/IdentityTest.java
+++ b/src/test/java/org/gnunet/identity/IdentityTest.java
@@ -21,6 +21,7 @@
21package org.gnunet.identity; 21package org.gnunet.identity;
22 22
23 23
24import org.gnunet.testing.TestingFixture;
24import org.gnunet.testing.TestingSubsystem; 25import org.gnunet.testing.TestingSubsystem;
25import org.gnunet.util.Program; 26import org.gnunet.util.Program;
26import org.gnunet.util.Scheduler; 27import org.gnunet.util.Scheduler;
@@ -28,7 +29,7 @@ import org.gnunet.util.Wrapper;
28import org.junit.Assert; 29import org.junit.Assert;
29import org.junit.Test; 30import org.junit.Test;
30 31
31public class IdentityTest { 32public class IdentityTest extends TestingFixture {
32 @Test 33 @Test
33 public void test_identity_connect() { 34 public void test_identity_connect() {
34 final Wrapper<Boolean> reachedEnd = new Wrapper<Boolean>(false); 35 final Wrapper<Boolean> reachedEnd = new Wrapper<Boolean>(false);
diff --git a/src/test/java/org/gnunet/transport/TransportTest.java b/src/test/java/org/gnunet/transport/TransportTest.java
index 728c990..5c286fe 100644
--- a/src/test/java/org/gnunet/transport/TransportTest.java
+++ b/src/test/java/org/gnunet/transport/TransportTest.java
@@ -23,6 +23,7 @@ package org.gnunet.transport;
23import org.gnunet.hello.HelloMessage; 23import org.gnunet.hello.HelloMessage;
24import org.gnunet.peerinfo.PeerInfo; 24import org.gnunet.peerinfo.PeerInfo;
25import org.gnunet.peerinfo.PeerProcessor; 25import org.gnunet.peerinfo.PeerProcessor;
26import org.gnunet.testing.TestingFixture;
26import org.gnunet.testing.TestingSubsystem; 27import org.gnunet.testing.TestingSubsystem;
27import org.gnunet.transport.callbacks.HelloUpdateCallback; 28import org.gnunet.transport.callbacks.HelloUpdateCallback;
28import org.gnunet.util.*; 29import org.gnunet.util.*;
@@ -30,8 +31,8 @@ import org.junit.Test;
30 31
31import static org.junit.Assert.assertTrue; 32import static org.junit.Assert.assertTrue;
32 33
33public class TransportTest { 34public class TransportTest extends TestingFixture {
34 @Test 35 @Test(timeout = 5000)
35 public void test_transport_get_hello() { 36 public void test_transport_get_hello() {
36 Program.configureLogging("debug"); 37 Program.configureLogging("debug");
37 final Wrapper<Boolean> ended = new Wrapper<Boolean>(false); 38 final Wrapper<Boolean> ended = new Wrapper<Boolean>(false);
diff --git a/src/test/java/org/gnunet/util/ClientServerTest.java b/src/test/java/org/gnunet/util/ClientServerTest.java
index 616ce98..e20198e 100644
--- a/src/test/java/org/gnunet/util/ClientServerTest.java
+++ b/src/test/java/org/gnunet/util/ClientServerTest.java
@@ -3,6 +3,7 @@ package org.gnunet.util;
3import com.google.common.collect.Lists; 3import com.google.common.collect.Lists;
4import org.gnunet.construct.UInt32; 4import org.gnunet.construct.UInt32;
5import org.gnunet.construct.UnionCase; 5import org.gnunet.construct.UnionCase;
6import org.gnunet.testing.TestingFixture;
6import org.gnunet.testing.TestingServer; 7import org.gnunet.testing.TestingServer;
7import org.gnunet.testing.TestingSetup; 8import org.gnunet.testing.TestingSetup;
8import org.junit.Assert; 9import org.junit.Assert;
@@ -20,7 +21,7 @@ import java.util.ArrayList;
20 * 21 *
21 * @author Florian Dold 22 * @author Florian Dold
22 */ 23 */
23public class ClientServerTest { 24public class ClientServerTest extends TestingFixture {
24 25
25 @Test 26 @Test
26 public void test_start_stop() { 27 public void test_start_stop() {
diff --git a/src/test/java/org/gnunet/util/EcdheTest.java b/src/test/java/org/gnunet/util/EcdheTest.java
index 1ecb6d5..e7a9791 100644
--- a/src/test/java/org/gnunet/util/EcdheTest.java
+++ b/src/test/java/org/gnunet/util/EcdheTest.java
@@ -74,13 +74,29 @@ public class EcdheTest {
74 privKey1.d = new byte[32]; 74 privKey1.d = new byte[32];
75 EcdhePrivateKey privKey2 = new EcdhePrivateKey(); 75 EcdhePrivateKey privKey2 = new EcdhePrivateKey();
76 privKey2.d = new byte[32]; 76 privKey2.d = new byte[32];
77 Strings.stringToData("FH7DONLOP82RMELK26NDEP8655HQFU9LUO36LNO1ENOJ5KOSRR00", privKey1.d); 77 Strings.stringToData("A46TL3L8CF7R3BPPQDE8LJS999NQ58HD43DV11MPFI2B5JNJMM40", privKey1.d);
78 Strings.stringToData("LAJES5PBR68MJQP067I7DLJO3RUGG0EUHSOAVOFIDF24KBDE0SEG", privKey2.d); 78 Strings.stringToData("B60MFOBFKCVT0IVFDI800MH345FG372UJ4T7GEMNMO72O64G0D00", privKey2.d);
79 79
80 EcdhePublicKey pubKey1 = privKey1.getPublicKey(); 80 EcdhePublicKey pubKey1 = privKey1.getPublicKey();
81 EcdhePublicKey pubKey2 = privKey2.getPublicKey(); 81 EcdhePublicKey pubKey2 = privKey2.getPublicKey();
82 82
83 Assert.assertEquals("VU5U4KNC3OH5RUL6M5T6BPH52BFBICEG5Q60A43V97HQV1VD3AG0", pubKey1.toString()); 83 Assert.assertEquals("JLU00RUGNB04APG6I9RKVT1CJLB16U8T7G130CC2IV4O3LJG5K40", pubKey1.toString());
84 Assert.assertEquals("8DSB6D0OKS1SD71BKRTVT8OK18Q73Q7MUALJ76V9DQJO6J0170RG", pubKey2.toString()); 84
85 Assert.assertEquals("G9TDOQVP3CFA2K5Q7PSS8Q935FVEHAF3C08JPV1H3MPDK1ESLM6G", pubKey2.toString());
86
87 HashCode h1 = privKey1.ecdh(pubKey2);
88 HashCode h2 = privKey2.ecdh(pubKey1);
89
90 Assert.assertEquals(h1, h2);
91
92 byte[] gnunet_data = new byte[64];
93 boolean success = Strings.stringToData(
94 "R9A80A2VU4R0IL3NT4FBIMFRCGVP72DQODHTQQ1SGR65I4PMF1" +
95 "6C3ELIF2RSB9L8H0KLOUU795IM5L0CLCISI607B5P1QE8HRAPA56O",
96 gnunet_data);
97 Assert.assertTrue(success);
98
99 Assert.assertArrayEquals(gnunet_data, h1.data);
100
85 } 101 }
86} 102}
diff --git a/src/test/java/org/gnunet/util/EcdsaTest.java b/src/test/java/org/gnunet/util/EcdsaTest.java
index 898bc9a..f06b4e9 100644
--- a/src/test/java/org/gnunet/util/EcdsaTest.java
+++ b/src/test/java/org/gnunet/util/EcdsaTest.java
@@ -24,13 +24,21 @@ import org.gnunet.util.crypto.*;
24import org.junit.Assert; 24import org.junit.Assert;
25import org.junit.Test; 25import org.junit.Test;
26 26
27import java.math.BigInteger;
28
27public class EcdsaTest { 29public class EcdsaTest {
28 @Test 30 @Test
29 public void test_sign_success() { 31 public void test_sign_success() {
30 byte[] data = "GNUnet".getBytes(); 32 byte[] data = "GNUnet".getBytes();
31 EcdsaPrivateKey privateKey = EcdsaPrivateKey.createRandom(); 33 //EcdsaPrivateKey privateKey = EcdsaPrivateKey.createRandom();
34 EcdsaPrivateKey privateKey = new EcdsaPrivateKey();
35 privateKey.d = Ed25519.encodeScalar(new BigInteger("9751885127070397687372377515580876465521419304255864589795046632195735740054"));
32 EcdsaPublicKey publicKey = privateKey.getPublicKey(); 36 EcdsaPublicKey publicKey = privateKey.getPublicKey();
33 EcdsaSignature signature = privateKey.sign(publicKey, 0, data); 37 EcdsaSignature signature = privateKey.sign(publicKey, 0, data);
38 System.out.println("private key: " + Ed25519.decodeScalar(privateKey.d));
39 System.out.println("public key: " + publicKey.asPoint());
40 System.out.println("signature r: " + Ed25519.decodeScalar(signature.r));
41 System.out.println("signature s: " + Ed25519.decodeScalar(signature.s));
34 Assert.assertTrue(signature.verify(data, 0, publicKey)); 42 Assert.assertTrue(signature.verify(data, 0, publicKey));
35 } 43 }
36 44
diff --git a/src/test/java/org/gnunet/util/Ed25519Test.java b/src/test/java/org/gnunet/util/Ed25519Test.java
index 4ae39a7..58b329c 100644
--- a/src/test/java/org/gnunet/util/Ed25519Test.java
+++ b/src/test/java/org/gnunet/util/Ed25519Test.java
@@ -46,7 +46,7 @@ public class Ed25519Test {
46 /** 46 /**
47 * Raw ECDH check. 47 * Raw ECDH check.
48 */ 48 */
49 //@Test 49 @Test
50 public void test_ecdh() { 50 public void test_ecdh() {
51 for (int i = 0; i < 5; ++i) { 51 for (int i = 0; i < 5; ++i) {
52 System.out.println("try " + i); 52 System.out.println("try " + i);
@@ -92,10 +92,10 @@ public class Ed25519Test {
92 /** 92 /**
93 * Test if decode is the inverse of encode. 93 * Test if decode is the inverse of encode.
94 */ 94 */
95 //@Test 95 @Test
96 public void test_encode_inverse() { 96 public void test_encode_inverse() {
97 Random r = new Random(); 97 Random r = new Random();
98 for (int i = 0; i < 100; i++) { 98 for (int i = 0; i < 5; i++) {
99 byte[] d1 = new byte[32]; 99 byte[] d1 = new byte[32];
100 r.nextBytes(d1); 100 r.nextBytes(d1);
101 d1[31] &= 127; 101 d1[31] &= 127;
@@ -139,4 +139,11 @@ public class Ed25519Test {
139 Assert.assertArrayEquals(d1, d2); 139 Assert.assertArrayEquals(d1, d2);
140 } 140 }
141 } 141 }
142
143 @Test
144 public void test_order() {
145 Ed25519 P = Ed25519.B.scalarmult(Ed25519.l);
146 System.out.println("Point P: " + P);
147 Assert.assertTrue(P.isIdentity());
148 }
142} 149}