예제 #1
0
    def _load_dirty_projects(self, curr_metadata_relpath, key):
        if curr_metadata_relpath.startswith('snapshot.'):
            self.__dirty_projects = self._DIRTY_PROJECTS_CACHE[key]
            logging.debug('LOAD DIRTY')

    def _reset_dirty_projects(self, curr_metadata_relpath):
        if curr_metadata_relpath.startswith('snapshot.'):
            self.__dirty_projects = {}
            logging.debug('RESET DIRTY')

    def _store_dirty_projects(self, curr_metadata_relpath, key, patch):
        if curr_metadata_relpath.startswith('snapshot.'):
            dirty_projects = self._get_dirty_projects(patch)
            self._DIRTY_PROJECTS_CACHE[key] = dirty_projects
            self.__dirty_projects = dirty_projects
            logging.debug('STORE DIRTY')

    def new_charge(self, curr_snapshot_timestamp, url):
        package_cost = self._baseline_charge(curr_snapshot_timestamp, url)
        return self.__extra_charge(package_cost)

    def return_charge(self, curr_snapshot_timestamp, url):
        package_cost = self._baseline_charge(curr_snapshot_timestamp, url)
        return self.__extra_charge(package_cost)


if __name__ == '__main__':
    read(TUF_BEST_LOG_FILENAME, TUFMetadataReader, TUF_DIRECTORY,
         TUF_METADATA_PATCH_LENGTH_CACHE_FILEPATH,
         TUF_DIRTY_PROJECTS_CACHE_FILEPATH, TUF_BEST_OUTPUT_FILENAME)
예제 #2
0
    super().setup(metadata_directory, metadata_patch_length_cache_filepath,
                  dirty_projects_cache_filepath)

    # NOTE: Assume everyone starts with a complete copy of first snapshot +
    # project metadata. In our implementation, this simply means that everyone
    # must know every project metadata relpath from the first snapshot.
    cls.__PREV_SNAPSHOT_METADATA_RELPATH = 'snapshot.1395359999.json'
    snapshot_metadata = cls._read_snapshot(cls.__PREV_SNAPSHOT_METADATA_RELPATH)
    cls.__PREV_PROJECT_METADATA_RELPATH = {}

    for project_metadata_relpath in snapshot_metadata:
      project_metadata_identifier = \
                 cls._get_project_metadata_identifier(snapshot_metadata[\
                                                      project_metadata_relpath])
      assert project_metadata_relpath.endswith('.json')
      prev_project_metadata_relpath = \
        '{}{}.{}'.format(project_metadata_relpath[:-4],
                         project_metadata_identifier,
                         project_metadata_relpath[-4:])
      cls.__PREV_PROJECT_METADATA_RELPATH[project_metadata_relpath] = \
                                                  prev_project_metadata_relpath


if __name__ == '__main__':
  read(MERCURY_BEST_LOG_FILENAME,
       MercuryMetadataReader,
       MERCURY_DIRECTORY,
       MERCURY_METADATA_PATCH_LENGTH_CACHE_FILEPATH,
       MERCURY_DIRTY_PROJECTS_CACHE_FILEPATH,
       MERCURY_BEST_OUTPUT_FILENAME)