예제 #1
0
 def test_set_one_file_not_in_channel(self, drive_mock):
     DriveData = namedtuple("DriveData", ["id", "datafolder"])
     drive_mock.return_value = DriveData(id=self.mock_drive_id,
                                         datafolder=self.mock_home_dir)
     self.createmock_content_file(uuid.uuid4().hex)
     checksums = get_available_checksums_from_disk(test_channel_id,
                                                   self.mock_drive_id)
     self.assertEqual(checksums, set())
예제 #2
0
 def test_set_two_files_in_channel(self, drive_mock):
     DriveData = namedtuple("DriveData", ["id", "datafolder"])
     drive_mock.return_value = DriveData(id=self.mock_drive_id,
                                         datafolder=self.mock_home_dir)
     self.createmock_content_file1()
     self.createmock_content_file2()
     checksums = get_available_checksums_from_disk(test_channel_id,
                                                   self.mock_drive_id)
     self.assertEqual(checksums, set([file_id_1, file_id_2]))
예제 #3
0
def get_channel_stats_from_disk(channel_id, drive_id):
    CACHE_KEY = "DISK_CHANNEL_STATS_{drive_id}_{channel_id}".format(
        drive_id=drive_id, channel_id=channel_id)
    if CACHE_KEY not in cache:
        checksums = get_available_checksums_from_disk(channel_id, drive_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_drive_id(self, drive_id, instance):
        try:
            datafolder = get_mounted_drive_by_id(drive_id).datafolder
        except KeyError:
            raise serializers.ValidationError(
                "The external drive with given drive id {} does not exist.".format(
                    drive_id
                )
            )

        return get_available_checksums_from_disk(instance.channel_id, datafolder)
예제 #5
0
 def test_set_two_files_none_in_channel(self):
     self.createmock_content_file(uuid.uuid4().hex)
     self.createmock_content_file(uuid.uuid4().hex)
     checksums = get_available_checksums_from_disk(test_channel_id,
                                                   self.mock_home_dir)
     self.assertEqual(checksums, set())
예제 #6
0
 def test_set_two_files_in_channel(self):
     self.createmock_content_file1()
     self.createmock_content_file2()
     checksums = get_available_checksums_from_disk(test_channel_id,
                                                   self.mock_home_dir)
     self.assertEqual(checksums, set([file_id_1, file_id_2]))