async def report_most_recent_time_async(self, child_time: datetime) -> None: """Report most recent modified time (of current or children objects) to the parent object.""" self.last_child_file_modified_time = child_time most_recent_at_this_level = time_utils.max_time(child_time, self.last_file_modified_time) if cast('CdmFileStatus', self.owner).report_most_recent_time_async and most_recent_at_this_level: await cast('CdmFileStatus', self.owner).report_most_recent_time_async(most_recent_at_this_level)
async def file_status_check_async(self) -> None: """Check the modified time for this object and any children.""" namespace = self.in_document.namespace full_path = self.location if ':' in self.location else (namespace + ':' + self.location) modified_time = await (cast('CdmCorpusDefinition', self.ctx.corpus))._fetch_last_modified_time_from_partition_path_async(full_path) # Update modified times. self.last_file_modified_time = time_utils.max_time(modified_time, self.last_file_modified_time) await self.report_most_recent_time_async(self.last_file_modified_time)
async def file_status_check_async(self) -> None: """Check the modified time for this object and any children.""" full_path = self.ctx.corpus.storage.create_absolute_corpus_path(self.definition, self.in_document) modified_time = await cast('CdmCorpusDefinition', self.ctx.corpus)._compute_last_modified_time_async(full_path, self) self.last_file_status_check_time = datetime.now(timezone.utc) self.last_file_modified_time = time_utils.max_time(modified_time, self.last_file_modified_time) await self.report_most_recent_time_async(self.last_file_modified_time)
async def file_status_check_async(self) -> None: """Check the modified time for this object and any children.""" manifest_path = self._fetch_manifest_path() modified_time = await cast( 'CdmCorpusDefinition', self.ctx.corpus)._fetch_last_modified_time_async(manifest_path) self.last_file_status_check_time = datetime.now(timezone.utc) self.last_file_modified_time = time_utils.max_time( modified_time, self.last_file_modified_time) await self.report_most_recent_time_async(self.last_file_modified_time)
async def file_status_check_async(self) -> None: """Check the modified time for this object and any children.""" full_path = self.ctx.corpus.storage.create_absolute_corpus_path( self.location, self.in_document) modified_time = await self.ctx.corpus._fetch_last_modified_time_from_partition_path_async( full_path) # Update modified times. self.last_file_status_check_time = datetime.now(timezone.utc) self.last_file_modified_time = time_utils.max_time( modified_time, self.last_file_modified_time) await self.report_most_recent_time_async(self.last_file_modified_time)
async def file_status_check_async(self) -> None: """Check the modified time for this object and any children.""" namespace = self.in_document.namespace full_path = namespace + ':' + self.entity_path modified_time = await cast( 'CdmCorpusDefinition', self.ctx.corpus)._fetch_last_modified_time_async(full_path) self.last_file_status_check_time = datetime.now(timezone.utc) self.last_file_modified_time = time_utils.max_time( modified_time, self.last_file_modified_time) await self.report_most_recent_time_async(self.last_file_modified_time)
async def file_status_check_async(self) -> None: """Check the modified time for this object and any children.""" modified_time = await cast('CdmCorpusDefinition', self.ctx.corpus)._fetch_last_modified_time_async(self.entity_path) for partition in self.data_partitions: await partition.file_status_check_async() for pattern in self.data_partition_patterns: await pattern.file_status_check_async() self.last_file_status_check_time = datetime.now(timezone.utc) self.last_file_modified_time = time_utils.max_time(modified_time, self.last_file_modified_time) await self.report_most_recent_time_async(self.last_file_modified_time)
async def file_status_check_async(self) -> None: """Check the modified time for this object and any children.""" full_path = self.ctx.corpus.storage.create_absolute_corpus_path(self.entity_path, self.in_document) modified_time = await self.ctx.corpus._compute_last_modified_time_async(full_path, self) for partition in self.data_partitions: await partition.file_status_check_async() for pattern in self.data_partition_patterns: await pattern.file_status_check_async() self.last_file_status_check_time = datetime.now(timezone.utc) self.last_file_modified_time = time_utils.max_time(modified_time, self.last_file_modified_time) await self.report_most_recent_time_async(self.last_file_modified_time)
async def test_loads_and_sets_times_correctly(self): """Test modified times for manifest and files beneath it""" input_path = TestHelper.get_input_folder_path( self.tests_subpath, 'test_loads_and_sets_times_correctly') time_before_load = datetime.now(timezone.utc) cdm_corpus = self.get_corpus() cdm_corpus.storage.mount('someNamespace', LocalAdapter(input_path)) cdm_corpus.storage.mount('local', LocalAdapter(input_path)) cdm_corpus.storage.unmount('cdm') cdm_corpus.storage.default_namespace = 'local' cdm_manifest = await cdm_corpus.fetch_object_async( 'someNamespace:/default.manifest.cdm.json') status_time_at_load = cdm_manifest.last_file_status_check_time # hard coded because the time comes from inside the file self.assertEqual( time_utils.get_formatted_date_string(status_time_at_load), '2019-02-01T15:36:19.410Z') time.sleep(1) await cdm_manifest.file_status_check_async() self.assertGreater(cdm_manifest.last_file_status_check_time, time_before_load) self.assertGreater(cdm_manifest.last_file_status_check_time, status_time_at_load) self.assertEqual(1, len(cdm_manifest.sub_manifests)) self.assertGreater( cdm_manifest.sub_manifests[0].last_file_status_check_time, time_before_load) self.assertEqual(1, len(cdm_manifest.entities)) self.assertEqual(1, len(cdm_manifest.entities[0].data_partitions)) entity = cdm_manifest.entities[0] sub_manifest = cdm_manifest.sub_manifests[0] max_time = time_utils.max_time(entity.last_file_modified_time, sub_manifest.last_file_modified_time) self.assertEqual( time_utils.get_formatted_date_string( cdm_manifest.last_child_file_modified_time), time_utils.get_formatted_date_string(max_time))
async def file_status_check_async(self) -> None: """Check the modified time for this object and any children.""" modified_time = await self.ctx.corpus._fetch_last_modified_time_from_object_async( self) for entity in self.entities: await entity.file_status_check_async() for sub_manifest in self.sub_manifests: await sub_manifest.file_status_check_async() self.last_file_status_check_time = datetime.now(timezone.utc) if not self.last_file_modified_time: self.last_file_modified_time = self._file_system_modified_time # Reload the manifest if it has been updated in the file system. if modified_time and self._file_system_modified_time and modified_time != self._file_system_modified_time: await self._reload_async() self.last_file_modified_time = time_utils.max_time( modified_time, self.last_file_modified_time) self._file_system_modified_time = self.last_file_modified_time
async def report_most_recent_time_async(self, child_time: datetime) -> None: """Report most recent modified time (of current or children objects) to the parent object.""" if child_time: self.last_child_file_modified_time = time_utils.max_time( child_time, self.last_child_file_modified_time)