18
18
19
19
package hu .netmind .bitcoin .net .p2p ;
20
20
21
+ import hu .netmind .bitcoin .BitcoinException ;
22
+ import hu .netmind .bitcoin .block .BitcoinFactory ;
23
+ import hu .netmind .bitcoin .block .Testnet3BitcoinFactory ;
21
24
import hu .netmind .bitcoin .net .AlertMessage ;
22
25
import hu .netmind .bitcoin .net .BitCoinInputStream ;
23
26
import hu .netmind .bitcoin .net .BitCoinOutputStream ;
24
27
import hu .netmind .bitcoin .net .Message ;
25
28
import hu .netmind .bitcoin .net .MessageMarshaller ;
29
+ import hu .netmind .bitcoin .net .NetworkMessageFactory ;
26
30
import hu .netmind .bitcoin .net .NodeAddress ;
27
31
import hu .netmind .bitcoin .net .PingMessage ;
28
32
import hu .netmind .bitcoin .net .VerackMessage ;
38
42
import java .util .Map ;
39
43
import java .util .concurrent .Semaphore ;
40
44
import java .util .concurrent .TimeUnit ;
45
+ import java .util .logging .Level ;
41
46
import org .easymock .EasyMock ;
42
47
import org .slf4j .Logger ;
43
48
import org .slf4j .LoggerFactory ;
@@ -57,13 +62,20 @@ public class NodeTests
57
62
58
63
private List <DummyNode > dummyNodes = new ArrayList <>();
59
64
private Node savedNode = null ;
65
+ private BitcoinFactory bitcoinFactory ;
66
+ private NetworkMessageFactory messageFactory ;
60
67
68
+ public NodeTests () throws BitcoinException
69
+ {
70
+ bitcoinFactory = new Testnet3BitcoinFactory (null );
71
+ messageFactory = bitcoinFactory .getMessageFactory ();
72
+ }
61
73
/**
62
74
* Create a node which will be destroyed at the end of test.
63
75
*/
64
76
public Node createNode ()
65
77
{
66
- savedNode = new Node ();
78
+ savedNode = new Node (bitcoinFactory . getMessageMagic () );
67
79
return savedNode ;
68
80
}
69
81
@@ -137,7 +149,7 @@ public void testStartStop()
137
149
throws IOException
138
150
{
139
151
// Create node with defaults
140
- Node node = new Node ();
152
+ Node node = new Node (bitcoinFactory . getMessageMagic () );
141
153
// Check that there are no node threads running before start
142
154
Assert .assertFalse (isNodeThreadActive (),"there is a node thread before starting" );
143
155
// Start
@@ -181,9 +193,9 @@ public void testDetectConnectioToSelf()
181
193
EasyMock .replay (source );
182
194
183
195
final NodeAddress dummyNodeAddress = new NodeAddress (1 , new InetSocketAddress (51234 ));
184
- final VersionMessage verMsg1 = new VersionMessage ( Message . MAGIC_TEST , BC_PROTOCOL_VERSION , 0 , System .currentTimeMillis () / 1000 ,
196
+ final VersionMessage verMsg1 = messageFactory . newVersionMessage ( BC_PROTOCOL_VERSION , 0 , System .currentTimeMillis () / 1000 ,
185
197
dummyNodeAddress , dummyNodeAddress , 123 , "test" , 1 );
186
- final VersionMessage verMsg2 = new VersionMessage ( Message . MAGIC_TEST , BC_PROTOCOL_VERSION , 0 , System .currentTimeMillis () / 1000 ,
198
+ final VersionMessage verMsg2 = messageFactory . newVersionMessage ( BC_PROTOCOL_VERSION , 0 , System .currentTimeMillis () / 1000 ,
187
199
dummyNodeAddress , dummyNodeAddress , 124 , "test" , 1 );
188
200
189
201
// Create node
@@ -238,7 +250,7 @@ public void testCommunicationConcept()
238
250
dummyNode .accept ();
239
251
240
252
// Send a message to node
241
- dummyNode .send (new AlertMessage ( Message . MAGIC_TEST , "Message" ));
253
+ dummyNode .send (messageFactory . newAlertMessage ( "Message" ));
242
254
// Get the repeated message right back
243
255
AlertMessage answer = (AlertMessage ) dummyNode .read ();
244
256
// Check
@@ -267,7 +279,7 @@ public void testBroadcast()
267
279
for ( int i =0 ; i <dummyNodes .length ; i ++ )
268
280
dummyNodes [i ].accept ();
269
281
// Broadcast a message to all connected nodes
270
- node .broadcast (new AlertMessage ( Message . MAGIC_TEST , "Message" ));
282
+ node .broadcast (messageFactory . newAlertMessage ( "Message" ));
271
283
// Get the messages from all nodes
272
284
for ( int i =0 ; i <dummyNodes .length ; i ++ )
273
285
{
@@ -296,8 +308,8 @@ public void testSameAddressTwice()
296
308
// Accept the connection from node
297
309
dummyNode .accept ();
298
310
// Broadcast 2 messages
299
- node .broadcast (new AlertMessage ( Message . MAGIC_TEST , "Message1" ));
300
- node .broadcast (new AlertMessage ( Message . MAGIC_TEST , "Message2" ));
311
+ node .broadcast (messageFactory . newAlertMessage ( "Message1" ));
312
+ node .broadcast (messageFactory . newAlertMessage ( "Message2" ));
301
313
// Now check that the 1st message arrives only once
302
314
AlertMessage message = (AlertMessage ) dummyNode .read ();
303
315
Assert .assertEquals (message .getMessage (),"Message1" );
@@ -318,7 +330,7 @@ public void testAcceptExternalConnection()
318
330
// Wait unilt the node really connected to the node
319
331
waiter .waitForJoin ();
320
332
// Check connection
321
- node .broadcast (new AlertMessage ( Message . MAGIC_TEST , "Message" ));
333
+ node .broadcast (messageFactory . newAlertMessage ( "Message" ));
322
334
AlertMessage message = (AlertMessage ) dummyNode .read ();
323
335
Assert .assertEquals (message .getMessage (),"Message" );
324
336
}
@@ -388,7 +400,7 @@ public void onLeave(Connection conn)
388
400
Assert .fail ("didn't receive the 'leave' event of closed node in time" );
389
401
// Now try to connect new node and communicate
390
402
DummyNode dummyNode2 = createDummyNode (new InetSocketAddress (node .getPort ()));
391
- dummyNode2 .send (new PingMessage ( Message . MAGIC_TEST ));
403
+ dummyNode2 .send (messageFactory . newPingMessage ( ));
392
404
Message message = dummyNode2 .read ();
393
405
}
394
406
@@ -423,8 +435,8 @@ public void testMultiHandlerReply()
423
435
// Accept the connection from node
424
436
dummyNode .accept ();
425
437
// Send two messages to node
426
- dummyNode .send (new AlertMessage ( Message . MAGIC_TEST , "Message1" ));
427
- dummyNode .send (new AlertMessage ( Message . MAGIC_TEST , "Message2" ));
438
+ dummyNode .send (bitcoinFactory . getMessageFactory (). newAlertMessage ( "Message1" ));
439
+ dummyNode .send (bitcoinFactory . getMessageFactory (). newAlertMessage ( "Message2" ));
428
440
// Check that easy is only replied once by the node, meaning that only one repeater handler
429
441
// is allowed to answer.
430
442
AlertMessage incoming = (AlertMessage ) dummyNode .read ();
@@ -462,7 +474,7 @@ public void onJoin(Connection conn)
462
474
{
463
475
try
464
476
{
465
- conn .send (new VerackMessage ( Message . MAGIC_TEST ));
477
+ conn .send (messageFactory . newVerackMessage ( ));
466
478
} catch (IOException ex )
467
479
{
468
480
}
@@ -530,7 +542,7 @@ public DummyNode(InetSocketAddress address)
530
542
socket .connect (address ,1000 ); // 0.5 seconds to connect
531
543
input = new BitCoinInputStream (new BufferedInputStream (socket .getInputStream ()));
532
544
output = new BitCoinOutputStream (socket .getOutputStream ());
533
- marshaller = new MessageMarshaller ();
545
+ marshaller = new MessageMarshaller (bitcoinFactory . getMessageMagic () );
534
546
}
535
547
536
548
/**
@@ -542,7 +554,7 @@ public DummyNode()
542
554
serverSocket = new ServerSocket (0 );
543
555
address = (InetSocketAddress ) serverSocket .getLocalSocketAddress ();
544
556
serverSocket .setSoTimeout (1000 ); // Wait for incoming for 0.5 sec
545
- marshaller = new MessageMarshaller ();
557
+ marshaller = new MessageMarshaller (bitcoinFactory . getMessageMagic () );
546
558
}
547
559
548
560
public InetSocketAddress getAddress ()
0 commit comments