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)
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)