def test_set_one_file(self, requests_mock): requests_mock.post.return_value.status_code = 200 requests_mock.post.return_value.content = "1" checksums = get_available_checksums_from_remote( test_channel_id, self.location.id) self.assertEqual(len(checksums), 1) self.assertTrue(local_file_qs.filter(id=list(checksums)[0]).exists())
def test_set_two_files_in_channel(self, requests_mock): requests_mock.post.return_value.status_code = 200 requests_mock.post.return_value.content = "3" checksums = get_available_checksums_from_remote( test_channel_id, "test") self.assertEqual(len(checksums), 2) self.assertTrue(local_file_qs.filter(id=list(checksums)[0]).exists()) self.assertTrue(local_file_qs.filter(id=list(checksums)[1]).exists())
def get_channel_stats_from_peer(channel_id, peer_id): CACHE_KEY = "PEER_CHANNEL_STATS_{peer_id}_{channel_id}".format( peer_id=peer_id, channel_id=channel_id) if CACHE_KEY not in cache: checksums = get_available_checksums_from_remote(channel_id, peer_id) channel_stats = get_channel_annotation_stats(channel_id, checksums) cache.set(CACHE_KEY, channel_stats, 3600) register_key_as_cached(CACHE_KEY, channel_id) else: channel_stats = cache.get(CACHE_KEY) return channel_stats
def checksums_from_peer_id(self, peer_id, instance): try: network_location = NetworkLocation.objects.values("base_url").get( id=peer_id ) base_url = network_location["base_url"] except NetworkLocation.DoesNotExist: raise serializers.ValidationError( "The network location with the id {} does not exist".format(peer_id) ) return get_available_checksums_from_remote(instance.channel_id, base_url)
def test_invalid_integer_remote_checksum_response(self, requests_mock): requests_mock.post.return_value.status_code = 200 requests_mock.post.return_value.content = "I am not a json, I am a free man!" checksums = get_available_checksums_from_remote( test_channel_id, self.location.id) self.assertIsNone(checksums)
def test_404_remote_checksum_response(self, requests_mock): requests_mock.post.return_value.status_code = 404 checksums = get_available_checksums_from_remote( test_channel_id, self.location.id) self.assertIsNone(checksums)
def test_set_two_files_none_in_channel(self, requests_mock): requests_mock.post.return_value.status_code = 200 requests_mock.post.return_value.content = "0" checksums = get_available_checksums_from_remote( test_channel_id, self.location.id) self.assertEqual(checksums, set())