removed old share implementations
[p2pool.git] / p2pool / test / test_node.py
index 515f54a..bbcc38e 100644 (file)
@@ -15,6 +15,9 @@ class bitcoinp2p(object):
     def send_block(self, block):
         pass
     
+    def send_tx(self, tx):
+        pass
+    
     def get_block_header(self, hash):
         if hash == 0x16c169477c25421250ec5d32cf9c6d38538b5de970a2355fd89:
             return defer.succeed({
@@ -53,7 +56,7 @@ class bitcoind(object):
         return {
             "version" : 2,
             "previousblockhash" : "000000000000016c169477c25421250ec5d32cf9c6d38538b5de970a2355fd89",
-            "transactions" : [
+            "transactions" : ([
                 {
                     "data" : "01000000014c6ade5af7e7803fdf2ecae88d939ec044fdb3de84bc70168723969666b30e38010000008b483045022100e1fce6361811e24d57b494c3d71a9e653e54b9489dd5a1889affdef8a1e912b002204079a4720f25b55a0f092bcd70a5824e38a85072bb8e58477df8eb6a66b967ae01410426952de5ee7e5fea3c2065ffceada913d7d643f5631f0d714d667a0b81b599aada24f6e0b46d4bd4051b8111be95cf460fbd1977eadb3f2adc68b4018f8b5ba6ffffffff020065cd1d000000001976a9144799fc9c1b2cfb2c0187551be50f6ea41ed37ed888ac80969800000000001976a914ac2092a73378e8b80a127748a10274c962579f5188ac00000000",
                     "hash" : "9665fece00aceffd175a28912707889c9b2039be004c77e1497b59d8f5132966",
@@ -78,7 +81,7 @@ class bitcoind(object):
                     "fee" : 0,
                     "sigops" : 2
                 }
-            ],
+            ] if random.randrange(2) else []),
             "coinbaseaux" : {
                 "flags" : "062f503253482f"
             },
@@ -98,6 +101,20 @@ class bitcoind(object):
             "height" : 205801
         }
 
+@apply
+class mm_provider(object):
+    def __getattr__(self, name):
+        print '>>>>>>>', name
+    def rpc_getauxblock(self, request, result1=None, result2=None):
+        if result1 is not None:
+            print result1, result2
+            return True
+        return {
+            "target" : "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", # 2**256*2/3
+            "hash" : "2756ea0315d46dc3d8d974f34380873fc88863845ac01a658ef11bc3b368af52",
+            "chainid" : 1
+        }
+
 mynet = math.Object(
     PARENT=networks.nets['litecoin_testnet'],
     SHARE_PERIOD=3, # seconds
@@ -120,16 +137,16 @@ mynet = math.Object(
 class MiniNode(object):
     @classmethod
     @defer.inlineCallbacks
-    def start(cls, net, factory, bitcoind, peer_ports):
+    def start(cls, net, factory, bitcoind, peer_ports, merged_urls):
         self = cls()
         
         self.n = node.Node(factory, bitcoind, [], [], net)
         yield self.n.start()
         
-        self.n.p2p_node = node.P2PNode(self.n, 0, 1000000, {}, [('127.0.0.1', peer_port) for peer_port in peer_ports])
+        self.n.p2p_node = node.P2PNode(self.n, port=0, max_incoming_conns=1000000, addr_store={}, connect_addrs=[('127.0.0.1', peer_port) for peer_port in peer_ports])
         self.n.p2p_node.start()
         
-        wb = work.WorkerBridge(node=self.n, my_pubkey_hash=random.randrange(2**160), donation_percentage=random.uniform(0, 10), merged_urls=[], worker_fee=3)
+        wb = work.WorkerBridge(node=self.n, my_pubkey_hash=random.randrange(2**160), donation_percentage=random.uniform(0, 10), merged_urls=merged_urls, worker_fee=3)
         web_root = resource.Resource()
         worker_interface.WorkerInterface(wb).attach_to(web_root)
         self.web_port = reactor.listenTCP(0, server.Site(web_root))
@@ -146,10 +163,14 @@ class MiniNode(object):
 class Test(unittest.TestCase):
     @defer.inlineCallbacks
     def test_node(self):
+        mm_root = resource.Resource()
+        mm_root.putChild('', jsonrpc.Server(mm_provider))
+        mm_port = reactor.listenTCP(0, server.Site(mm_root))
+        
         n = node.Node(factory, bitcoind, [], [], mynet)
         yield n.start()
         
-        wb = work.WorkerBridge(node=n, my_pubkey_hash=42, donation_percentage=2, merged_urls=[], worker_fee=3)
+        wb = work.WorkerBridge(node=n, my_pubkey_hash=42, donation_percentage=2, merged_urls=[('http://127.0.0.1:%i' % (mm_port.getHost().port,), '')], worker_fee=3)
         web_root = resource.Resource()
         worker_interface.WorkerInterface(wb).attach_to(web_root)
         port = reactor.listenTCP(0, server.Site(web_root))
@@ -167,6 +188,7 @@ class Test(unittest.TestCase):
         assert len(n.tracker.items) == 100
         assert n.tracker.verified.get_height(n.best_share_var.value) == 100
         
+        wb.stop()
         n.stop()
         
         yield port.stopListening()
@@ -177,20 +199,17 @@ class Test(unittest.TestCase):
         gc.collect()
         
         yield deferral.sleep(20) # waiting for work_poller to exit
+        yield mm_port.stopListening()
     #test_node.timeout = 15
     
     @defer.inlineCallbacks
     def test_nodes(self):
-      try:
-        old_successor = data.Share.SUCCESSOR
-        data.Share.SUCCESSOR = data.NewShare
-        
         N = 3
         SHARES = 600
         
         nodes = []
         for i in xrange(N):
-            nodes.append((yield MiniNode.start(mynet, factory, bitcoind, [mn.n.p2p_node.serverfactory.listen_port.getHost().port for mn in nodes])))
+            nodes.append((yield MiniNode.start(mynet, factory, bitcoind, [mn.n.p2p_node.serverfactory.listen_port.getHost().port for mn in nodes], [])))
         
         yield deferral.sleep(3)
         
@@ -207,7 +226,7 @@ class Test(unittest.TestCase):
         for i, n in enumerate(nodes):
             assert len(n.n.tracker.items) == SHARES, (i, len(n.n.tracker.items))
             assert n.n.tracker.verified.get_height(n.n.best_share_var.value) == SHARES, (i, n.n.tracker.verified.get_height(n.n.best_share_var.value))
-            assert type(n.n.tracker.items[nodes[0].n.best_share_var.value]) is data.NewShare
+            assert type(n.n.tracker.items[nodes[0].n.best_share_var.value]) is data.Share
             assert type(n.n.tracker.items[n.n.tracker.get_nth_parent_hash(nodes[0].n.best_share_var.value, SHARES - 5)]) is data.Share
         
         for n in nodes:
@@ -220,5 +239,3 @@ class Test(unittest.TestCase):
         gc.collect()
         
         yield deferral.sleep(20) # waiting for work_poller to exit
-      finally:
-        data.Share.SUCCESSOR = old_successor