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)
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #8
0
    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)
Beispiel #9
0
    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))
Beispiel #10
0
    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
Beispiel #11
0
 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)