made mining test start a jsonrpc server and go through that to maximize coverage
authorForrest Voight <forrest@forre.st>
Wed, 31 Oct 2012 17:18:13 +0000 (13:18 -0400)
committerForrest Voight <forrest@forre.st>
Wed, 31 Oct 2012 17:19:11 +0000 (13:19 -0400)
p2pool/test/test_node.py

index d41c1b7..f262c32 100644 (file)
@@ -1,8 +1,10 @@
-from twisted.internet import defer
+from twisted.internet import defer, reactor
 from twisted.trial import unittest
+from twisted.web import resource, server
 
 from p2pool import networks, node, work
-from p2pool.util import deferral, variable
+from p2pool.bitcoin import worker_interface
+from p2pool.util import deferral, jsonrpc, variable
 
 class factory(object):
     new_headers = variable.Event()
@@ -48,12 +50,6 @@ class bitcoind(object):
             "height" : 205801
         }
 
-class FakeRequest(object):
-    def getUser(self):
-        return 'fakeuser'
-    def getClientIP(self):
-        return 'fakeclientip'
-
 class Test(unittest.TestCase):
     @defer.inlineCallbacks
     def test_node(self):
@@ -62,13 +58,17 @@ class Test(unittest.TestCase):
         yield n.start()
         
         wb = work.WorkerBridge(node=n, my_pubkey_hash=42, donation_percentage=2, merged_urls=[], worker_fee=3)
+        web_root = resource.Resource()
+        worker_interface.WorkerInterface(wb).attach_to(web_root)
+        port = reactor.listenTCP(8080, server.Site(web_root))
+        
+        proxy = jsonrpc.Proxy('http://127.0.0.1:8080')
         
         yield deferral.sleep(3)
         
         for i in xrange(100):
-            ba, got_resp = wb.get_work(pubkey_hash=4242, desired_share_target=2**256-1, desired_pseudoshare_target=2**256-1)
-            got_resp(dict(version=ba.version, previous_block=ba.previous_block, merkle_root=ba.merkle_root, timestamp=ba.timestamp, bits=ba.bits, nonce=42), FakeRequest())
-            yield deferral.sleep(.01)
+            blah = yield proxy.rpc_getwork()
+            yield proxy.rpc_getwork(blah['data'])
         
         yield deferral.sleep(3)
         
@@ -77,4 +77,11 @@ class Test(unittest.TestCase):
         
         n.stop()
         
+        yield port.stopListening()
+        del net, n, wb, web_root, port, proxy
+        import gc
+        gc.collect()
+        gc.collect()
+        gc.collect()
+        
         yield deferral.sleep(20) # waiting for work_poller to exit