Beispiel #1
0
    def test_retry_failed(self, mock_gcs):
        mock_client = mock_gcs.return_value
        mock_client.get_bucket = MagicMock()
        mock_bucket = mock_client.get_bucket.return_value
        mock_bucket.list_blobs.side_effect = [
            ServiceUnavailable("service unavailable"),
            ServiceUnavailable("service unavailable"),
            ServiceUnavailable("service unavailable"),
            ServiceUnavailable("service unavailable"),
        ]

        test_handler = GCSHandler("test_bucket_name", back_off=0.1)
        with pytest.raises(ServiceUnavailable) as expected:
            test_handler.get_files_from_folder("test_folder")
            assert expected.value.errors == "service unavailable"
Beispiel #2
0
    def test_retry_failed(self, mock_gcs):
        mock_client = mock_gcs.return_value
        mock_client.get_bucket = MagicMock()
        mock_bucket = mock_client.get_bucket.return_value
        mock_blob = mock_bucket.blob.return_value
        mock_blob.download_as_string.side_effect = [
            ServiceUnavailable("service unavailable"),
            ServiceUnavailable("service unavailable"),
            ServiceUnavailable("service unavailable"),
            ServiceUnavailable("service unavailable"),
        ]

        test_handler = GCSHandler("test_bucket_name", back_off=0.1)
        with pytest.raises(ServiceUnavailable) as expected:
            test_handler.download_file_as_string_with_formatter("test_file_path")
            assert expected.value.errors == "service unavailable"
Beispiel #3
0
    def test_iteration_w_multiple_span_creation(self):
        from google.api_core.exceptions import ServiceUnavailable

        if HAS_OPENTELEMETRY_INSTALLED:
            FIRST = (self._make_item(0), self._make_item(1, resume_token=RESUME_TOKEN))
            SECOND = (self._make_item(2),)  # discarded after 503
            LAST = (self._make_item(3),)
            before = _MockIterator(
                *(FIRST + SECOND), fail_after=True, error=ServiceUnavailable("testing")
            )
            after = _MockIterator(*LAST)
            restart = mock.Mock(spec=[], side_effect=[before, after])
            name = "TestSpan"
            resumable = self._call_fut(restart, name, _Session(_Database()))
            self.assertEqual(list(resumable), list(FIRST + LAST))
            self.assertEqual(
                restart.mock_calls, [mock.call(), mock.call(resume_token=RESUME_TOKEN)]
            )

            span_list = self.memory_exporter.get_finished_spans()
            self.assertEqual(len(span_list), 2)
            for span in span_list:
                self.assertEqual(span.name, name)
                self.assertEqual(
                    span.attributes,
                    {
                        "db.type": "spanner",
                        "db.url": "spanner.googleapis.com:443",
                        "db.instance": "testing",
                        "net.host.name": "spanner.googleapis.com:443",
                    },
                )
Beispiel #4
0
def test__should_recover_w_unavailable():
    from google.api_core.exceptions import ServiceUnavailable
    from google.cloud.firestore_v1.watch import _should_recover

    exception = ServiceUnavailable("testing")

    assert _should_recover(exception)
def test__retry_read_rows_exception_service_unavailable_wrapped_in_grpc():
    from google.api_core.exceptions import ServiceUnavailable
    from google.cloud.bigtable.row_data import _retry_read_rows_exception

    wrapped = ServiceUnavailable("testing")
    exception = _make_grpc_call_error(wrapped)
    assert _retry_read_rows_exception(exception)
    def __next__(self):
        from google.api_core.exceptions import ServiceUnavailable

        try:
            return next(self._iter_values)
        except StopIteration:
            if self._fail_after:
                raise ServiceUnavailable('testing')
            raise
Beispiel #7
0
    def test_retry_failed(self, mock_gcs):
        mock_client = mock_gcs.return_value
        mock_client.get_bucket = MagicMock()
        mock_bucket = mock_client.get_bucket.return_value
        mock_blob = mock_bucket.blob.return_value
        mock_blob.upload_from_string.side_effect = [
            ServiceUnavailable("service unavailable"),
            ServiceUnavailable("service unavailable"),
            ServiceUnavailable("service unavailable"),
            ServiceUnavailable("service unavailable"),
        ]

        test_handler = GCSHandler("test_bucket_name", back_off=0.1)
        with pytest.raises(ServiceUnavailable) as expected:
            test_handler.put_as_string(
                "test_file_name", "test_file_string", "test_content_type"
            )
            assert expected.value.errors == "service unavailable"
    def test_create_task_transient_error_retries(self):
        mock_create_task = MagicMock()
        mock_create_task.side_effect = [ServiceUnavailable("test"), Task()]
        self.cloud_task_publisher._client.create_task = mock_create_task
        self.cloud_task_publisher.create_task(
            body=self.body,
            queue_name=self.queue_name,
            function_name=self.function_name,
            fulfilment_request_transaction_id=self.transaction_id,
        )

        self.assertEqual(mock_create_task.call_count, 2)
Beispiel #9
0
    def test_retry_succeed(self, mock_gcs):
        mock_client = mock_gcs.return_value
        mock_client.get_bucket = MagicMock()
        mock_bucket = mock_client.get_bucket.return_value
        mock_blob = mock_bucket.blob.return_value
        mock_blob.exists.side_effect = [ServiceUnavailable("service unavailable"), True]

        test_handler = GCSHandler("test_bucket_name", back_off=0.1)
        result = test_handler.is_exist("test_file_name")
        assert result is True
        assert mock_bucket.blob.call_count == 2
        assert mock_blob.exists.call_count == 2
Beispiel #10
0
    def test_retry_succeed(self, mock_gcs):
        mock_client = mock_gcs.return_value
        mock_client.get_bucket = MagicMock()
        mock_bucket = mock_client.get_bucket.return_value
        mock_bucket.list_blobs.side_effect = [
            ServiceUnavailable("service unavailable"),
            "test return",
        ]

        test_handler = GCSHandler("test_bucket_name", back_off=0.1)
        result = test_handler.get_files_from_folder("test_folder")
        assert result == "test return"
        assert mock_bucket.list_blobs.call_count == 2
Beispiel #11
0
def test_create_task_transient_error_retries(mocker, cloud_task_publisher):
    mock_create_task = mocker.Mock()
    mock_create_task.side_effect = [ServiceUnavailable("test"), Task()]
    cloud_task_publisher._client.create_task = (  # pylint: disable=protected-access
        mock_create_task)
    cloud_task_publisher.create_task(
        body=BODY,
        queue_name=QUEUE_NAME,
        function_name=FUNCTION_NAME,
        fulfilment_request_transaction_id=TRANSACTION_ID,
    )

    assert mock_create_task.call_count == 2
Beispiel #12
0
    def test_retry_succeed(self, mock_gcs, csv_blob_from_gcs):
        mock_client = mock_gcs.return_value
        mock_client.get_bucket = MagicMock()
        mock_bucket = mock_client.get_bucket.return_value
        mock_blob = mock_bucket.blob.return_value
        mock_blob.download_as_string.side_effect = [
            ServiceUnavailable("service unavailable"),
            csv_blob_from_gcs,
        ]

        test_handler = GCSHandler("test_bucket_name", back_off=0.1)
        result = test_handler.download_file_as_string("test_file_path")
        assert result == csv_blob_from_gcs
        assert mock_bucket.blob.call_count == 2
        assert mock_blob.download_as_string.call_count == 2
Beispiel #13
0
    def test_iteration_w_raw_raising_unavailable_no_token(self):
        from google.api_core.exceptions import ServiceUnavailable

        ITEMS = (
            self._make_item(0),
            self._make_item(1, resume_token=RESUME_TOKEN),
            self._make_item(2),
        )
        before = _MockIterator(fail_after=True, error=ServiceUnavailable("testing"))
        after = _MockIterator(*ITEMS)
        restart = mock.Mock(spec=[], side_effect=[before, after])
        resumable = self._call_fut(restart)
        self.assertEqual(list(resumable), list(ITEMS))
        self.assertEqual(restart.mock_calls, [mock.call(), mock.call(resume_token=b"")])
        self.assertNoSpans()
Beispiel #14
0
    def test_retry_succeed(self, mock_gcs):
        mock_client = mock_gcs.return_value
        mock_client.get_bucket = MagicMock()
        mock_bucket = mock_client.get_bucket.return_value
        mock_blob = mock_bucket.blob.return_value
        mock_blob.upload_from_string.side_effect = [
            ServiceUnavailable("service unavailable"),
            True,
        ]

        test_handler = GCSHandler("test_bucket_name", back_off=0.1)
        result = test_handler.put_as_string(
            "test_file_name", "test_file_string", "test_content_type"
        )
        assert result is True
        assert mock_bucket.blob.call_count == 2
        assert mock_blob.upload_from_string.call_count == 2
Beispiel #15
0
    def test_iteration_w_raw_raising_unavailable(self):
        from google.api_core.exceptions import ServiceUnavailable

        FIRST = (self._make_item(0), self._make_item(1, resume_token=RESUME_TOKEN))
        SECOND = (self._make_item(2),)  # discarded after 503
        LAST = (self._make_item(3),)
        before = _MockIterator(
            *(FIRST + SECOND), fail_after=True, error=ServiceUnavailable("testing")
        )
        after = _MockIterator(*LAST)
        restart = mock.Mock(spec=[], side_effect=[before, after])
        resumable = self._call_fut(restart)
        self.assertEqual(list(resumable), list(FIRST + LAST))
        self.assertEqual(
            restart.mock_calls, [mock.call(), mock.call(resume_token=RESUME_TOKEN)]
        )
        self.assertNoSpans()
Beispiel #16
0
    def test_w_service_unavailable(self):
        from google.api_core.exceptions import ServiceUnavailable

        exception = ServiceUnavailable("testing")
        self.assertTrue(self._call_fut(exception))
Beispiel #17
0
    def test_w_service_unavailable_wrapped_in_grpc(self):
        from google.api_core.exceptions import ServiceUnavailable

        wrapped = ServiceUnavailable("testing")
        exception = self._make_grpc_call_error(wrapped)
        self.assertTrue(self._call_fut(exception))
Beispiel #18
0
def test__retry_read_rows_exception_service_unavailable():
    from google.api_core.exceptions import ServiceUnavailable
    from google.cloud.bigtable.row_data import _retry_read_rows_exception

    exception = ServiceUnavailable("testing")
    assert _retry_read_rows_exception(exception)