def test_download_ipv6(self): client = redis.StrictRedis() client.flushdb() r = RedisProxy(redis_client=client) UserIPCache.set_cache(r) UserIPCache.reset() online_users = [] # user offline my_uid = 12345 ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, True) self.assertEqual(ret, {'owners': [], 'download_type': DownloadMedium.download_type["None"]}) # user online but has no owners ip = "1.1.1.1" UserIPCache.update_my_ip(my_uid, ip) ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, True) self.assertEqual(ret, {'owners': [], 'download_type': DownloadMedium.download_type["None"]}) # user just see himself online_users = [my_uid, ] v6_ip = "2001::1" port = 8885 HttpServerInfoCache.update_ipv6_address(my_uid, v6_ip, port) ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, False) self.assertEqual(ret, {'owners': [{'host': v6_ip, 'uid': my_uid, 'port': port}], 'download_type': DownloadMedium.download_type["V6"]}) ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, True) self.assertEqual(ret, {'owners': [], 'download_type': DownloadMedium.download_type["None"]}) his_uid = 54321 his_ip = '2.2.2.2' UserIPCache.update_my_ip(his_uid, his_ip) his_v6_ip = "2001::2" his_port = 8886 HttpServerInfoCache.update_ipv6_address(his_uid, his_v6_ip, his_port) online_users.append(his_uid) ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, True) self.assertEqual(ret, {'owners': [{'host': his_v6_ip, 'uid': his_uid, 'port': his_port}], 'download_type': DownloadMedium.download_type["V6"]}) her_uid = 56789 her_ip = '3.3.3.3' UserIPCache.update_my_ip(her_uid, her_ip) her_v6_ip = "2001::3" her_port = 8885 HttpServerInfoCache.update_ipv6_address(her_uid, her_v6_ip, her_port) online_users.append(her_uid) ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, True) self.assertEqual(ret, {'owners': [{'host': his_v6_ip, 'uid': his_uid, 'port': his_port}, {'host': her_v6_ip, 'uid': her_uid, 'port': her_port}, ], 'download_type': DownloadMedium.download_type["V6"]})
def test_download_ipv4_lan(self): client = redis.StrictRedis() client.flushdb() r = RedisProxy(redis_client=client) UserIPCache.set_cache(r) UserIPCache.reset() online_users = [] # user offline my_uid = 1234 ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, True) self.assertEqual(ret, {'owners': [], 'download_type': DownloadMedium.download_type["None"]}) # user online but has no owners ip = "1.1.1.1" UserIPCache.update_my_ip(my_uid, ip) ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, True) self.assertEqual(ret, {'owners': [], 'download_type': DownloadMedium.download_type["None"]}) # user just see himself online_users = [my_uid, ] lan_ip = "192.168.0.1" port = 8885 HttpServerInfoCache.update_ipv4_address(my_uid, lan_ip, port) ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, False) self.assertEqual(ret, {'owners': [{'host': lan_ip, 'uid': my_uid, 'port': port}], 'download_type': DownloadMedium.download_type["V4_LAN"]}) ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, True) self.assertEqual(ret, {'owners': [], 'download_type': DownloadMedium.download_type["None"]}) his_uid = 4321 UserIPCache.update_my_ip(his_uid, ip) his_lan_ip = "192.168.0.2" his_port = 8884 HttpServerInfoCache.update_ipv4_address(his_uid, his_lan_ip, his_port) online_users.append(his_uid) ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, True) self.assertEqual(ret, {'owners': [{'host': his_lan_ip, 'uid': his_uid, 'port': his_port}], 'download_type': DownloadMedium.download_type["V4_LAN"]}) her_uid = 5678 UserIPCache.update_my_ip(her_uid, ip) her_lan_ip = "192.168.0.1" her_port = 8885 HttpServerInfoCache.update_ipv4_address(her_uid, her_lan_ip, her_port) online_users.append(her_uid) ret = DownloadMedium.get_matched_online_owners(my_uid, online_users, False, True) self.assertEqual(ret, {'owners': [{'host': his_lan_ip, 'uid': his_uid, 'port': his_port}, {'host': her_lan_ip, 'uid': her_uid, 'port': her_port}, ], 'download_type': DownloadMedium.download_type["V4_LAN"]})
def test_user_ip_cache(self): client = redis.StrictRedis() client.flushdb() r = RedisProxy(redis_client=client) user_ip_cache = UserIPCache() user_ip_cache.set_cache(r) user_ip_cache.reset() user = 1234 ip = "1.2.3.4" ip2 = user_ip_cache.get_user_ip(user) self.assertEqual(ip2, None) self.assertEqual(len(user_ip_cache.get_all_users()), 0) user_ip_cache.load() user_ip_list = user_ip_cache.get_user_ip_list() self.assertEqual(len(user_ip_list), 0) user_ip_cache.update_my_ip(user, ip) ip2 = user_ip_cache.get_user_ip(user) self.assertEqual(ip2, ip) self.assertEqual(len(user_ip_cache.get_all_users()), 1) user222 = 4321 ip222 = "43.21.21.12" user_ip_cache.update_my_ip(user222, ip222) self.assertEqual(len(user_ip_cache.get_all_users()), 2) user_ip_cache.delete_my_ip(user) ip2 = user_ip_cache.get_user_ip(user) self.assertEqual(ip2, None) self.assertEqual(len(user_ip_cache.get_all_users()), 1) user_ip_cache.load() user_ip_list = user_ip_cache.get_user_ip_list() self.assertEqual(len(user_ip_list), 1) user = 12345 ip = "1.2.3.5" user_ip_cache.update_my_ip(user, ip) user_ip_cache.reset() user_ip_cache.load() user_ip_list = user_ip_cache.get_user_ip_list() self.assertEqual(len(user_ip_list), 2)