|
|
@ -21,6 +21,7 @@ from network.tcp import Socks4aBMConnection, Socks5BMConnection, TCPConnection |
|
|
|
from queues import excQueue |
|
|
|
|
|
|
|
knownnodes_file = os.path.join(state.appdata, 'knownnodes.dat') |
|
|
|
program = None |
|
|
|
|
|
|
|
|
|
|
|
def pickle_knownnodes(): |
|
|
@ -132,6 +133,7 @@ class TestCore(unittest.TestCase): |
|
|
|
self._outdate_knownnodes() |
|
|
|
# time.sleep(303) # singleCleaner wakes up every 5 min |
|
|
|
knownnodes.cleanupKnownNodes() |
|
|
|
self.assertTrue(knownnodes.knownNodes[1]) |
|
|
|
while True: |
|
|
|
try: |
|
|
|
thread, exc = excQueue.get(block=False) |
|
|
@ -140,14 +142,15 @@ class TestCore(unittest.TestCase): |
|
|
|
if thread == 'Asyncore' and isinstance(exc, IndexError): |
|
|
|
self.fail("IndexError because of empty knownNodes!") |
|
|
|
|
|
|
|
def test_bootstrap(self): |
|
|
|
"""test bootstrapping""" |
|
|
|
def _initiate_bootstrap(self): |
|
|
|
BMConfigParser().set('bitmessagesettings', 'dontconnect', 'true') |
|
|
|
self._outdate_knownnodes() |
|
|
|
knownnodes.cleanupKnownNodes() |
|
|
|
# it's weird, knownnodes appear empty |
|
|
|
knownnodes.addKnownNode(1, state.Peer('127.0.0.1', 8444), is_self=True) |
|
|
|
time.sleep(0.25) |
|
|
|
knownnodes.cleanupKnownNodes() |
|
|
|
time.sleep(2) |
|
|
|
|
|
|
|
def _check_bootstrap(self): |
|
|
|
_started = time.time() |
|
|
|
BMConfigParser().remove_option('bitmessagesettings', 'dontconnect') |
|
|
|
proxy_type = BMConfigParser().safeGet( |
|
|
|
'bitmessagesettings', 'socksproxytype') |
|
|
@ -157,20 +160,31 @@ class TestCore(unittest.TestCase): |
|
|
|
connection_base = Socks4aBMConnection |
|
|
|
else: |
|
|
|
connection_base = TCPConnection |
|
|
|
_started = time.time() |
|
|
|
for _ in range(180): |
|
|
|
time.sleep(1) |
|
|
|
for peer, con in BMConnectionPool().outboundConnections.iteritems(): |
|
|
|
if not peer.host.startswith('bootstrap'): |
|
|
|
self.assertIsInstance(con, connection_base) |
|
|
|
self.assertNotEqual(peer.host, '127.0.0.1') |
|
|
|
return |
|
|
|
else: # pylint: disable=useless-else-on-loop |
|
|
|
self.fail( |
|
|
|
'Failed to connect during %s sec' % (time.time() - _started)) |
|
|
|
|
|
|
|
def test_bootstrap(self): |
|
|
|
"""test bootstrapping""" |
|
|
|
self._initiate_bootstrap() |
|
|
|
self._check_bootstrap() |
|
|
|
self._initiate_bootstrap() |
|
|
|
BMConfigParser().set('bitmessagesettings', 'socksproxytype', 'stem') |
|
|
|
program.start_proxyconfig(BMConfigParser()) |
|
|
|
self._check_bootstrap() |
|
|
|
|
|
|
|
|
|
|
|
def run(): |
|
|
|
def run(prog): |
|
|
|
"""Starts all tests defined in this module""" |
|
|
|
global program # pylint: disable=global-statement |
|
|
|
program = prog |
|
|
|
loader = unittest.TestLoader() |
|
|
|
loader.sortTestMethodsUsing = None |
|
|
|
suite = loader.loadTestsFromTestCase(TestCore) |
|
|
|