|
|
|
@ -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)
|
|
|
|
|