diff options
author | Florian Dold <florian.dold@gmail.com> | 2014-02-03 23:03:52 +0000 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2014-02-03 23:03:52 +0000 |
commit | 50c29845e1ed1646050fa7e71b64c6683287ffde (patch) | |
tree | a83ca2bb2beda2ed5f5b521fd41aa5d393daf287 /src/test/java/org | |
parent | 617842c973a7c05053fc770960fda60e7ef77368 (diff) | |
download | gnunet-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')
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 | ||
21 | package org.gnunet.consensus; | 21 | package org.gnunet.consensus; |
22 | 22 | ||
23 | import org.gnunet.testing.TestingFixture; | ||
23 | import org.gnunet.testing.TestingSubsystem; | 24 | import org.gnunet.testing.TestingSubsystem; |
24 | import org.gnunet.util.*; | 25 | import org.gnunet.util.*; |
25 | import org.junit.Assert; | 26 | import 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 | */ |
34 | public class ConsensusSingleTest { | 35 | public 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; | |||
5 | import org.gnunet.testbed.Host; | 5 | import org.gnunet.testbed.Host; |
6 | import org.gnunet.testbed.SimpleTestbed; | 6 | import org.gnunet.testbed.SimpleTestbed; |
7 | import org.gnunet.testbed.callbacks.*; | 7 | import org.gnunet.testbed.callbacks.*; |
8 | import org.gnunet.testing.TestingFixture; | ||
8 | import org.gnunet.util.*; | 9 | import org.gnunet.util.*; |
9 | import org.junit.Assert; | 10 | import org.junit.Assert; |
10 | import org.junit.Test; | 11 | import 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 | */ |
18 | public class ConsensusTestbedTest { | 19 | public 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 @@ | |||
21 | package org.gnunet.identity; | 21 | package org.gnunet.identity; |
22 | 22 | ||
23 | 23 | ||
24 | import org.gnunet.testing.TestingFixture; | ||
24 | import org.gnunet.testing.TestingSubsystem; | 25 | import org.gnunet.testing.TestingSubsystem; |
25 | import org.gnunet.util.Program; | 26 | import org.gnunet.util.Program; |
26 | import org.gnunet.util.Scheduler; | 27 | import org.gnunet.util.Scheduler; |
@@ -28,7 +29,7 @@ import org.gnunet.util.Wrapper; | |||
28 | import org.junit.Assert; | 29 | import org.junit.Assert; |
29 | import org.junit.Test; | 30 | import org.junit.Test; |
30 | 31 | ||
31 | public class IdentityTest { | 32 | public 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; | |||
23 | import org.gnunet.hello.HelloMessage; | 23 | import org.gnunet.hello.HelloMessage; |
24 | import org.gnunet.peerinfo.PeerInfo; | 24 | import org.gnunet.peerinfo.PeerInfo; |
25 | import org.gnunet.peerinfo.PeerProcessor; | 25 | import org.gnunet.peerinfo.PeerProcessor; |
26 | import org.gnunet.testing.TestingFixture; | ||
26 | import org.gnunet.testing.TestingSubsystem; | 27 | import org.gnunet.testing.TestingSubsystem; |
27 | import org.gnunet.transport.callbacks.HelloUpdateCallback; | 28 | import org.gnunet.transport.callbacks.HelloUpdateCallback; |
28 | import org.gnunet.util.*; | 29 | import org.gnunet.util.*; |
@@ -30,8 +31,8 @@ import org.junit.Test; | |||
30 | 31 | ||
31 | import static org.junit.Assert.assertTrue; | 32 | import static org.junit.Assert.assertTrue; |
32 | 33 | ||
33 | public class TransportTest { | 34 | public 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; | |||
3 | import com.google.common.collect.Lists; | 3 | import com.google.common.collect.Lists; |
4 | import org.gnunet.construct.UInt32; | 4 | import org.gnunet.construct.UInt32; |
5 | import org.gnunet.construct.UnionCase; | 5 | import org.gnunet.construct.UnionCase; |
6 | import org.gnunet.testing.TestingFixture; | ||
6 | import org.gnunet.testing.TestingServer; | 7 | import org.gnunet.testing.TestingServer; |
7 | import org.gnunet.testing.TestingSetup; | 8 | import org.gnunet.testing.TestingSetup; |
8 | import org.junit.Assert; | 9 | import org.junit.Assert; |
@@ -20,7 +21,7 @@ import java.util.ArrayList; | |||
20 | * | 21 | * |
21 | * @author Florian Dold | 22 | * @author Florian Dold |
22 | */ | 23 | */ |
23 | public class ClientServerTest { | 24 | public 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.*; | |||
24 | import org.junit.Assert; | 24 | import org.junit.Assert; |
25 | import org.junit.Test; | 25 | import org.junit.Test; |
26 | 26 | ||
27 | import java.math.BigInteger; | ||
28 | |||
27 | public class EcdsaTest { | 29 | public 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 | } |