예제 #1
0
 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())
예제 #2
0
 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())
예제 #3
0
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
예제 #4
0
    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)
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
 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())