2019-09-14 06:29:31 +00:00
|
|
|
import sys, os
|
|
|
|
sys.path.append(".")
|
2019-11-21 09:26:23 +00:00
|
|
|
sys.path.append("src/")
|
2019-09-14 06:29:31 +00:00
|
|
|
import unittest, uuid
|
|
|
|
import base64
|
|
|
|
|
|
|
|
TEST_DIR = 'testdata/%s-%s' % (uuid.uuid4(), os.path.basename(__file__)) + '/'
|
|
|
|
print("Test directory:", TEST_DIR)
|
|
|
|
os.environ["ONIONR_HOME"] = TEST_DIR
|
|
|
|
from onionrpeers import peerprofiles
|
|
|
|
import onionrexceptions
|
|
|
|
from coredb import keydb
|
|
|
|
from utils import createdirs
|
|
|
|
from onionrutils import stringvalidators, epoch
|
|
|
|
TEST_PEER = '3n5wclq4w4pfkcfmjcpqrjluctpm2tzt7etfblavf42cntv6hrerkzyb.onion'
|
|
|
|
createdirs.create_dirs()
|
|
|
|
|
|
|
|
def rand_fake_adder_generator():
|
|
|
|
rand_bytes = os.urandom(35)
|
|
|
|
return base64.b32encode(rand_bytes).decode().lower() + '.onion'
|
|
|
|
|
|
|
|
test_peers = []
|
|
|
|
for x in range(100):
|
|
|
|
p = rand_fake_adder_generator()
|
|
|
|
assert stringvalidators.validate_transport(p)
|
|
|
|
test_peers.append(p)
|
|
|
|
|
|
|
|
class TestPeerProfiles(unittest.TestCase):
|
|
|
|
def test_invalid_init(self):
|
|
|
|
self.assertRaises(onionrexceptions.InvalidAddress, peerprofiles.PeerProfiles, "invalid")
|
|
|
|
def test_valid_init(self):
|
|
|
|
peerprofiles.PeerProfiles(test_peers.pop())
|
|
|
|
|
|
|
|
def test_load_score(self):
|
|
|
|
p = peerprofiles.PeerProfiles(test_peers.pop())
|
|
|
|
self.assertEqual(p.score, 0)
|
|
|
|
|
|
|
|
def test_inc_score(self):
|
|
|
|
p = peerprofiles.PeerProfiles(test_peers.pop())
|
|
|
|
s = 0
|
|
|
|
for x in range(2):
|
|
|
|
s += 1
|
|
|
|
p.addScore(1)
|
|
|
|
self.assertEqual(p.score, s)
|
|
|
|
|
|
|
|
def test_inc_score_with_db(self):
|
|
|
|
p = peerprofiles.PeerProfiles(test_peers.pop())
|
|
|
|
s = 0
|
|
|
|
for x in range(2):
|
|
|
|
p.last_updated['score'] = epoch.get_epoch() - peerprofiles.UPDATE_DELAY
|
|
|
|
s += 1
|
|
|
|
p.addScore(1)
|
|
|
|
self.assertEqual(p.score, keydb.transportinfo.get_address_info(p.address, 'success'))
|
|
|
|
|
2019-09-16 07:50:13 +00:00
|
|
|
def test_inc_score_with_sync_delay(self):
|
2019-09-14 06:29:31 +00:00
|
|
|
p = peerprofiles.PeerProfiles(test_peers.pop())
|
|
|
|
s = 0
|
|
|
|
for x in range(2):
|
|
|
|
s += 1
|
|
|
|
p.addScore(1)
|
|
|
|
if x == 0:
|
|
|
|
self.assertEqual(p.score, keydb.transportinfo.get_address_info(p.address, 'success'))
|
|
|
|
else:
|
|
|
|
self.assertNotEqual(p.score, keydb.transportinfo.get_address_info(p.address, 'success'))
|
|
|
|
|
|
|
|
unittest.main()
|