def test_list_statuses(self, client):
        # prepare containers and test data
        blob_data = [Document(data=b'This is some text')]
        source_container_sas_url = self.create_source_container(data=blob_data)
        target_container_sas_url = self.create_target_container()
        target_language = "es"

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(target_url=target_container_sas_url,
                                      language_code=target_language)
                ])
        ]

        # submit and validate job
        job_id = self._submit_and_validate_translation_job(
            client, translation_inputs, len(blob_data))

        # check doc statuses
        doc_statuses = list(client.list_all_document_statuses(
            job_id))  # convert from generic iterator to list
        self.assertEqual(len(doc_statuses), len(blob_data))

        for document in doc_statuses:
            self._validate_doc_status(document, target_language)
    async def test_list_statuses(self, client):
        # prepare containers and test data
        blob_data = [Document(data=b'This is some text')]
        source_container_sas_url = self.create_source_container(data=blob_data)
        target_container_sas_url = self.create_target_container()
        target_language = "es"

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code=target_language
                    )
                ]
            )
        ]

        # submit and validate job
        job_id = await self._submit_and_validate_translation_job_async(client, translation_inputs, len(blob_data))

        # check doc statuses
        doc_statuses = client.list_all_document_statuses(job_id)
        doc_statuses_list = []

        async for document in doc_statuses:
            doc_statuses_list.append(document)
            self._validate_doc_status(document, target_language)

        self.assertEqual(len(doc_statuses_list), len(blob_data))
    def _create_and_submit_sample_translation_jobs(self, client, jobs_count,
                                                   **kwargs):
        wait_for_job = kwargs.pop('wait', True)
        language_code = kwargs.pop('language_code', "es")
        docs_per_job = kwargs.pop('docs_per_job', 2)
        result_job_ids = []
        for i in range(jobs_count):
            # prepare containers and test data
            blob_data = Document.create_dummy_docs(docs_per_job)
            source_container_sas_url = self.create_source_container(
                data=blob_data)
            target_container_sas_url = self.create_target_container()

            # prepare translation inputs
            translation_inputs = [
                DocumentTranslationInput(
                    source_url=source_container_sas_url,
                    targets=[
                        TranslationTarget(target_url=target_container_sas_url,
                                          language_code=language_code)
                    ])
            ]

            # submit multiple jobs
            job_details = client.create_translation_job(translation_inputs)
            self.assertIsNotNone(job_details.id)
            if wait_for_job:
                client.wait_until_done(job_details.id)
            result_job_ids.append(job_details.id)

        return result_job_ids
Beispiel #4
0
    def test_existing_documents_in_target_one_valid(self, client):
        # prepare containers and test data
        source_container_sas_url = self.create_source_container(data=[Document(name="document"), Document()])
        target_container_sas_url = self.create_target_container(data=Document(name="document"))

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code="es"
                    )
                ]
            )
        ]

        job = client.create_translation_job(translation_inputs)
        job = client.wait_until_done(job.id)
        self._validate_translation_job(job, status="Succeeded", total=2, failed=1)

        doc_statuses = client.list_all_document_statuses(job.id)
        for doc in doc_statuses:
            if doc.status == "Failed":
                assert doc.error.code == "TargetFileAlreadyExists"
Beispiel #5
0
    def test_empty_document(self, client):
        # prepare containers and test data
        source_container_sas_url = self.create_source_container(Document(data=b''))
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code="es"
                    )
                ]
            )
        ]

        job = client.create_translation_job(translation_inputs)
        job = client.wait_until_done(job.id)
        self._validate_translation_job(job, status="Failed", total=1, failed=1)

        doc_status = client.list_all_document_statuses(job.id)
        doc = next(doc_status)
        assert doc.status == "Failed"
        assert doc.error.code == "WrongDocumentEncoding"
Beispiel #6
0
async def sample_translation_with_glossaries_async():
    import os
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.translation.document.aio import DocumentTranslationClient
    from azure.ai.translation.document import (DocumentTranslationInput,
                                               TranslationTarget,
                                               TranslationGlossary)

    endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
    key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
    source_container_url = os.environ["AZURE_SOURCE_CONTAINER_URL"]
    target_container_url = os.environ["AZURE_TARGET_CONTAINER_URL"]
    glossary_url = os.environ["AZURE_TRANSLATION_GLOSSARY_URL"]

    client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

    inputs = DocumentTranslationInput(
        source_url=source_container_url,
        targets=[
            TranslationTarget(target_url=target_container_url,
                              language_code="es",
                              glossaries=[
                                  TranslationGlossary(
                                      glossary_url=glossary_url,
                                      file_format="TSV")
                              ])
        ])

    async with client:
        job = await client.create_translation_job(inputs=[inputs]
                                                  )  # type: JobStatusResult

        job_result = await client.wait_until_done(job.id
                                                  )  # type: JobStatusResult

        print("Job status: {}".format(job_result.status))
        print("Job created on: {}".format(job_result.created_on))
        print("Job last updated on: {}".format(job_result.last_updated_on))
        print("Total number of translations on documents: {}".format(
            job_result.documents_total_count))

        print("\nOf total documents...")
        print("{} failed".format(job_result.documents_failed_count))
        print("{} succeeded".format(job_result.documents_succeeded_count))

        doc_results = client.list_all_document_statuses(
            job_result.id)  # type: AsyncItemPaged[DocumentStatusResult]
        async for document in doc_results:
            print("Document ID: {}".format(document.id))
            print("Document status: {}".format(document.status))
            if document.status == "Succeeded":
                print("Source document location: {}".format(
                    document.source_document_url))
                print("Translated document location: {}".format(
                    document.translated_document_url))
                print("Translated to language: {}\n".format(
                    document.translate_to))
            else:
                print("Error Code: {}, Message: {}\n".format(
                    document.error.code, document.error.message))
Beispiel #7
0
    def test_use_supported_and_unsupported_files(self, client):
        # prepare containers and test data
        source_container_sas_url = self.create_source_container(data=[
                Document(suffix=".txt"),
                Document(suffix=".jpg")
            ]
        )
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code="es"
                    )
                ]
            )
        ]

        job = client.create_translation_job(translation_inputs)
        job = client.wait_until_done(job.id)
        self._validate_translation_job(job, status="Succeeded", total=1, succeeded=1)
    def test_existing_documents_in_target_one_valid(self, client):
        # prepare containers and test data
        source_container_sas_url = self.create_source_container(data=[Document(name="document"), Document()])
        target_container_sas_url = self.create_target_container(data=Document(name="document"))

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code="es"
                    )
                ]
            )
        ]

        poller = client.begin_translation(translation_inputs)
        result = poller.result()
        self._validate_translation_metadata(poller, status="Succeeded", total=2, failed=1)

        for doc in result:
            if doc.status == "Failed":
                assert doc.error.code == "TargetFileAlreadyExists"
    def test_use_supported_and_unsupported_files(self, client):
        # prepare containers and test data
        source_container_sas_url = self.create_source_container(data=[
                Document(suffix=".txt"),
                Document(suffix=".jpg")
            ]
        )
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code="es"
                    )
                ]
            )
        ]

        poller = client.begin_translation(translation_inputs)
        result = poller.result()
        self._validate_translation_metadata(poller=poller, status="Succeeded", total=1, succeeded=1)
        for document in result:
            self._validate_doc_status(document, "es")
    async def test_active_directory_auth_async(self):
        token = self.generate_oauth_token()
        endpoint = self.get_oauth_endpoint()
        kwargs = {}
        if os.getenv("AZURE_COGNITIVE_SCOPE"):
            kwargs["credential_scopes"] = [os.getenv("AZURE_COGNITIVE_SCOPE")]
        client = DocumentTranslationClient(endpoint, token, **kwargs)
        # prepare containers and test data
        blob_data = b'This is some text'
        source_container_sas_url = self.create_source_container(data=Document(data=blob_data))
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code="fr"
                    )
                ]
            )
        ]

        # submit translation and test
        await self._begin_and_validate_translation_async(client, translation_inputs, 1, "fr")
    def test_empty_document(self, client):
        # prepare containers and test data
        source_container_sas_url = self.create_source_container(Document(data=b''))
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code="es"
                    )
                ]
            )
        ]

        poller = client.begin_translation(translation_inputs)
        result = poller.result()
        self._validate_translation_metadata(poller, status="Failed", total=1, failed=1)

        for doc in result:
            assert doc.status == "Failed"
            assert doc.error.code == "WrongDocumentEncoding"
    def test_overloaded_inputs(self, client):
        # prepare containers and test data
        source_container_sas_url = self.create_source_container(data=Document(data=b'hello world'))
        target_container_sas_url = self.create_target_container()
        target_container_sas_url_2 = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code="es"
                    )
                ]
            )
        ]


        # positional
        poller = client.begin_translation(translation_inputs)
        result = poller.result()
        self._validate_translation_metadata(poller, status="Succeeded", total=1, succeeded=1)

        # keyword
        translation_inputs[0].targets[0].target_url = target_container_sas_url_2
        poller = client.begin_translation(inputs=translation_inputs)
        result = poller.result()
        self._validate_translation_metadata(poller, status="Succeeded", total=1, succeeded=1)
Beispiel #13
0
    def _create_and_submit_sample_translation_jobs(self, client, jobs_count):
        result_job_ids = []
        for i in range(jobs_count):
            # prepare containers and test data
            '''
                WARNING!!
                TOTAL_DOC_COUNT_IN_JOB = 1
                if you plan to create more docs in the job,
                please update this variable TOTAL_DOC_COUNT_IN_JOB in respective test
            '''
            blob_data = b'This is some text'  # TOTAL_DOC_COUNT_IN_JOB = 1
            source_container_sas_url = self.create_source_container(
                data=Document(data=blob_data))
            target_container_sas_url = self.create_target_container()

            # prepare translation inputs
            translation_inputs = [
                DocumentTranslationInput(
                    source_url=source_container_sas_url,
                    targets=[
                        TranslationTarget(target_url=target_container_sas_url,
                                          language_code="es")
                    ])
            ]

            # submit multiple jobs
            job_details = client.create_translation_job(translation_inputs)
            self.assertIsNotNone(job_details.id)
            client.wait_until_done(job_details.id)
            result_job_ids.append(job_details.id)

        return result_job_ids
    def test_single_source_two_targets(self, client):
        # prepare containers and test data
        blob_data = b'This is some text'
        source_container_sas_url = self.create_source_container(data=Document(data=blob_data))
        target_container_sas_url = self.create_target_container()
        additional_target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code="es"
                    ),
                    TranslationTarget(
                        target_url=additional_target_container_sas_url,
                        language_code="fr"
                    )
                ]
            )
        ]

        # submit translation and test
        self._begin_and_validate_translation(client, translation_inputs, 2)
    async def _begin_and_validate_translation_with_multiple_docs_async(
            self, async_client, docs_count, **kwargs):
        # get input parms
        wait_for_operation = kwargs.pop('wait', False)
        language_code = kwargs.pop('language_code', "es")

        # prepare containers and test data
        blob_data = Document.create_dummy_docs(docs_count=docs_count)
        source_container_sas_url = self.create_source_container(data=blob_data)
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(target_url=target_container_sas_url,
                                      language_code=language_code)
                ])
        ]

        # submit operation
        poller = await async_client.begin_translation(translation_inputs)
        self.assertIsNotNone(poller.id)
        # wait for result
        if wait_for_operation:
            result = await poller.result()
            async for doc in result:
                self._validate_doc_status(doc, "es")

        # validate
        self._validate_translation_metadata(poller=poller)
        return poller
    async def test_cancel_job(self, client):
        # prepare containers and test data
        blob_data = [Document(data=b'This is some text')]
        source_container_sas_url = self.create_source_container(data=blob_data)
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(
                        target_url=target_container_sas_url,
                        language_code="es"
                    )
                ]
            )
        ]

        # submit job
        job_details = await client.create_translation_job(translation_inputs)
        self.assertIsNotNone(job_details.id)

        # cancel job
        await client.cancel_job(job_details.id)
        self.wait(duration=10)  # for 'cancelled' status to propagate

        # check job status
        job_details = await client.get_job_status(job_details.id)
        self._validate_translation_job(job_details, status="Cancelled", total=1, cancelled=1)
    async def test_list_statuses(self, client):
        # prepare containers and test data
        blob_data = [Document(data=b'This is some text')]
        source_container_sas_url = self.create_source_container(data=blob_data)
        target_container_sas_url = self.create_target_container()
        target_language = "es"

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(target_url=target_container_sas_url,
                                      language_code=target_language)
                ])
        ]

        # submit and validate translation translation
        translation_id = await self._begin_and_validate_translation_async(
            client, translation_inputs, len(blob_data), target_language)

        # get doc statuses
        doc_statuses = client.list_all_document_statuses(translation_id)
        self.assertIsNotNone(doc_statuses)

        # get first doc
        first_doc = await doc_statuses.__anext__()
        self.assertIsNotNone(first_doc.id)

        # get doc details
        doc_status = await client.get_document_status(
            translation_id=translation_id, document_id=first_doc.id)
        self._validate_doc_status(doc_status, target_language)
Beispiel #18
0
    def _create_translation_job_with_dummy_docs(self, client, docs_count,
                                                **kwargs):
        # get input parms
        wait_for_job = kwargs.pop('wait', False)
        language_code = kwargs.pop('language_code', "es")

        # prepare containers and test data
        blob_data = Document.create_dummy_docs(docs_count=docs_count)
        source_container_sas_url = self.create_source_container(data=blob_data)
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(target_url=target_container_sas_url,
                                      language_code=language_code)
                ])
        ]

        # submit job
        job_details = client.create_translation_job(translation_inputs)
        self.assertIsNotNone(job_details.id)
        # wait for result
        if wait_for_job:
            client.wait_until_done(job_details.id)
        # validate
        self._validate_translation_job(job_details=job_details)

        return job_details.id
async def sample_translation_with_glossaries_async():
    import os
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.translation.document.aio import DocumentTranslationClient
    from azure.ai.translation.document import (DocumentTranslationInput,
                                               TranslationTarget,
                                               TranslationGlossary)

    endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
    key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
    source_container_url = os.environ["AZURE_SOURCE_CONTAINER_URL"]
    target_container_url = os.environ["AZURE_TARGET_CONTAINER_URL"]
    glossary_url = os.environ["AZURE_TRANSLATION_GLOSSARY_URL"]

    client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

    inputs = DocumentTranslationInput(
        source_url=source_container_url,
        targets=[
            TranslationTarget(target_url=target_container_url,
                              language_code="es",
                              glossaries=[
                                  TranslationGlossary(
                                      glossary_url=glossary_url,
                                      file_format="TSV")
                              ])
        ])

    async with client:
        poller = await client.begin_translation(inputs=[inputs])

        result = await poller.result()

        print("Status: {}".format(poller.status()))
        print("Created on: {}".format(poller.details.created_on))
        print("Last updated on: {}".format(poller.details.last_updated_on))
        print("Total number of translations on documents: {}".format(
            poller.details.documents_total_count))

        print("\nOf total documents...")
        print("{} failed".format(poller.details.documents_failed_count))
        print("{} succeeded".format(poller.details.documents_succeeded_count))

        async for document in result:
            print("Document ID: {}".format(document.id))
            print("Document status: {}".format(document.status))
            if document.status == "Succeeded":
                print("Source document location: {}".format(
                    document.source_document_url))
                print("Translated document location: {}".format(
                    document.translated_document_url))
                print("Translated to language: {}\n".format(
                    document.translated_to))
            else:
                print("Error Code: {}, Message: {}\n".format(
                    document.error.code, document.error.message))
Beispiel #20
0
def sample_document_status_checks():
    import os
    import time
    # [START create_translation_job]
    from azure.core.credentials import AzureKeyCredential
    from azure.ai.translation.document import (DocumentTranslationClient,
                                               DocumentTranslationInput,
                                               TranslationTarget)

    endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"]
    key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"]
    source_container_url = os.environ["AZURE_SOURCE_CONTAINER_URL"]
    target_container_url = os.environ["AZURE_TARGET_CONTAINER_URL"]

    client = DocumentTranslationClient(endpoint, AzureKeyCredential(key))

    job_result = client.create_translation_job(inputs=[
        DocumentTranslationInput(source_url=source_container_url,
                                 targets=[
                                     TranslationTarget(
                                         target_url=target_container_url,
                                         language_code="es")
                                 ])
    ])  # type: JobStatusResult
    # [END create_translation_job]

    completed_docs = []
    while not job_result.has_completed:
        time.sleep(30)

        doc_statuses = client.list_all_document_statuses(job_result.id)
        for document in doc_statuses:
            if document.id not in completed_docs:
                if document.status == "Succeeded":
                    print(
                        "Document at {} was translated to {} language. You can find translated document at {}"
                        .format(document.source_document_url,
                                document.translate_to,
                                document.translated_document_url))
                    completed_docs.append(document.id)
                if document.status == "Failed":
                    print(
                        "Document ID: {}, Error Code: {}, Message: {}".format(
                            document.id, document.error.code,
                            document.error.message))
                    completed_docs.append(document.id)
                if document.status == "Running":
                    print(
                        "Document ID: {}, translation progress is {} percent".
                        format(document.id,
                               document.translation_progress * 100))

        job_result = client.get_job_status(job_result.id)

    print("\nTranslation job completed.")
Beispiel #21
0
    async def _begin_multiple_translations_async(self, async_client,
                                                 operations_count, **kwargs):
        container_suffix = kwargs.pop('container_suffix', "")
        variables = kwargs.pop('variables', {})
        wait_for_operation = kwargs.pop('wait', True)
        language_code = kwargs.pop('language_code', "es")
        docs_per_operation = kwargs.pop('docs_per_operation', 2)
        result_ids = []
        for i in range(operations_count):
            # prepare containers and test data
            '''
                # note
                since we're only testing the client library
                we can use sync container calls in here
                no need for async container clients!
            '''
            blob_data = Document.create_dummy_docs(docs_per_operation)
            source_container_sas_url = self.create_source_container(
                data=blob_data,
                variables=variables,
                container_suffix=str(i) + container_suffix)
            target_container_sas_url = self.create_target_container(
                variables=variables,
                container_suffix=str(i) + container_suffix)

            # prepare translation inputs
            translation_inputs = [
                DocumentTranslationInput(
                    source_url=source_container_sas_url,
                    targets=[
                        TranslationTarget(target_url=target_container_sas_url,
                                          language_code=language_code)
                    ])
            ]

            # submit multiple operations
            poller = await async_client.begin_translation(translation_inputs)
            assert poller.id is not None
            if wait_for_operation:
                await poller.result()
            else:
                await poller.wait()
            result_ids.append(poller.id)

        return result_ids
    def test_bad_input_source(self, client):
        # prepare containers and test data
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url="https://idont.ex.ist",
                targets=[
                    TranslationTarget(target_url=target_container_sas_url,
                                      language_code="es")
                ])
        ]

        with pytest.raises(HttpResponseError) as e:
            job = client.create_translation_job(translation_inputs)
            job = client.wait_until_done(job.id)
        assert e.value.error.code == "InvalidDocumentAccessLevel"
Beispiel #23
0
    async def test_bad_input_source(self, client):
        # prepare containers and test data
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url="https://idont.ex.ist",
                targets=[
                    TranslationTarget(target_url=target_container_sas_url,
                                      language_code="es")
                ])
        ]

        with pytest.raises(HttpResponseError) as e:
            poller = await client.begin_translation(translation_inputs)
            result = await poller.result()
        assert e.value.error.code == "InvalidDocumentAccessLevel"
    def test_list_statuses_with_pagination(self, client):
        # prepare containers and test data
        blob_text = b'blob text'
        blob_data = [
            Document(data=blob_text),
            Document(data=blob_text),
            Document(data=blob_text),
            Document(data=blob_text),
            Document(data=blob_text),
            Document(data=blob_text)
        ]
        source_container_sas_url = self.create_source_container(data=blob_data)
        target_container_sas_url = self.create_target_container()
        result_per_page = 2
        no_of_pages = len(blob_data) // result_per_page
        target_language = "es"

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(target_url=target_container_sas_url,
                                      language_code=target_language)
                ])
        ]

        # submit and validate job
        job_id = self._submit_and_validate_translation_job(
            client, translation_inputs, len(blob_data))

        # check doc statuses
        doc_statuses_pages = list(
            client.list_all_document_statuses(
                job_id=job_id, results_per_page=result_per_page))
        self.assertEqual(len(doc_statuses_pages), no_of_pages)

        # iterate by page
        for page in doc_statuses_pages:
            page_items = list(page)
            self.assertEqual(len(page_items), result_per_page)
            for document in page:
                self._validate_doc_status(document, target_language)
Beispiel #25
0
    async def test_single_source_single_target(self, client):
        # prepare containers and test data
        blob_data = b'This is some text'
        source_container_sas_url = self.create_source_container(data=Document(
            data=blob_data))
        target_container_sas_url = self.create_target_container()

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(target_url=target_container_sas_url,
                                      language_code="es")
                ])
        ]

        # submit job and test
        await self._submit_and_validate_translation_job_async(
            client, translation_inputs, 1)
Beispiel #26
0
    def test_bad_input_target(self, client):
        # prepare containers and test data
        blob_data = b'This is some text'
        source_container_sas_url = self.create_source_container(data=Document(
            data=blob_data))

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(source_url=source_container_sas_url,
                                     targets=[
                                         TranslationTarget(
                                             target_url="https://idont.ex.ist",
                                             language_code="es")
                                     ])
        ]

        with pytest.raises(HttpResponseError) as e:
            poller = client.begin_translation(translation_inputs)
            result = poller.result()
        assert e.value.error.code == "InvalidTargetDocumentAccessLevel"
Beispiel #27
0
    def test_overloaded_bad_input(self, client):
        translation_inputs = [
            DocumentTranslationInput(source_url="container",
                                     targets=[
                                         TranslationTarget(
                                             target_url="container",
                                             language_code="es")
                                     ])
        ]

        with pytest.raises(ValueError):
            client.begin_translation("container")

        with pytest.raises(ValueError):
            client.begin_translation("container", "container")

        with pytest.raises(ValueError):
            client.begin_translation(source_url=translation_inputs)

        with pytest.raises(ValueError):
            client.begin_translation(inputs="container")
    async def _create_and_submit_sample_translation_jobs_async(
            self, async_client, jobs_count):
        result_job_ids = []
        for i in range(jobs_count):
            # prepare containers and test data
            '''
                # WARNING!!
                TOTAL_DOC_COUNT_IN_JOB = 1
                if you plan to create more docs in the job,
                please update this variable TOTAL_DOC_COUNT_IN_JOB in respective test

                # note
                since we're only testing the client library
                we can use sync container calls in here
                no need for async container clients!
            '''
            blob_data = b'This is some text'
            source_container_sas_url = self.create_source_container(
                data=Document(data=blob_data))
            target_container_sas_url = self.create_target_container()

            # prepare translation inputs
            translation_inputs = [
                DocumentTranslationInput(
                    source_url=source_container_sas_url,
                    targets=[
                        TranslationTarget(target_url=target_container_sas_url,
                                          language_code="es")
                    ])
            ]

            # submit multiple jobs
            job_details = await async_client.create_translation_job(
                translation_inputs)
            self.assertIsNotNone(job_details.id)
            await async_client.wait_until_done(job_details.id)
            result_job_ids.append(job_details.id)

        return result_job_ids
Beispiel #29
0
    def test_overloaded_inputs(self, **kwargs):
        client = kwargs.pop("client")
        variables = kwargs.pop("variables", {})
        # prepare containers and test data
        source_container_sas_url = self.create_source_container(
            data=Document(data=b'hello world'), variables=variables)
        target_container_sas_url = self.create_target_container(
            variables=variables)
        target_container_sas_url_2 = self.create_target_container(
            variables=variables, container_suffix="2")

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url=source_container_sas_url,
                targets=[
                    TranslationTarget(target_url=target_container_sas_url,
                                      language_code="es")
                ])
        ]

        # positional
        poller = client.begin_translation(translation_inputs)
        result = poller.result()
        self._validate_translation_metadata(poller,
                                            status="Succeeded",
                                            total=1,
                                            succeeded=1)

        # keyword
        translation_inputs[0].targets[
            0].target_url = target_container_sas_url_2
        poller = client.begin_translation(inputs=translation_inputs)
        result = poller.result()
        self._validate_translation_metadata(poller,
                                            status="Succeeded",
                                            total=1,
                                            succeeded=1)
        return variables
Beispiel #30
0
    def test_bad_input_source(self, **kwargs):
        client = kwargs.pop("client")
        variables = kwargs.pop("variables", {})
        # prepare containers and test data
        target_container_sas_url = self.create_target_container(
            variables=variables)

        # prepare translation inputs
        translation_inputs = [
            DocumentTranslationInput(
                source_url="https://idont.ex.ist",
                targets=[
                    TranslationTarget(target_url=target_container_sas_url,
                                      language_code="es")
                ])
        ]

        with pytest.raises(HttpResponseError) as e:
            poller = client.begin_translation(translation_inputs)
            result = poller.result()
        assert e.value.error.code == "InvalidDocumentAccessLevel"
        return variables