コード例 #1
0
    def testMultipleFiltersGetTranslated(self, track):
        self.track = track
        expected_filter = ('metadata.common.operation_type=IMPORT_ENTITIES '
                           'AND (metadata.entity_filter.namespace_id=n '
                           'AND (metadata.common.labels.k=v '
                           'AND (metadata.common.labels.k2=v2 '
                           'AND metadata.entity_filter.kind=k)))')

        request = self.GetMockListRequest(operation_filter=expected_filter)

        operation_name = 'export operation name'

        operation_list = [
            operations.GetMessages().GoogleLongrunningOperation(
                done=False, name=operation_name)
        ]

        response = operations.GetMessages(
        ).GoogleLongrunningListOperationsResponse(operations=operation_list)

        self.mock_datastore_v1.projects_operations.List.Expect(
            request, response=response)

        actual = list(
            self.RunDatastoreTest('operations list --filter=\'%s\'' %
                                  ('type:IMPORT_ENTITIES AND namespace:n AND '
                                   'label.k:v AND label.k2:v2 AND kind:k')))
        self.assertEqual(1, len(actual))
        self.assertEqual(operation_name, actual[0].name)
コード例 #2
0
    def testExportNonAsync(self):
        output_url_prefix = 'gs://gcs_bucket'
        expected_request = admin_api.GetExportEntitiesRequest(
            self.Project(), output_url_prefix)
        operation_name = 'projects/{}/operations/exportoperationname'.format(
            self.Project())
        mock_response = operations.GetMessages().GoogleLongrunningOperation(
            done=False, name=operation_name)
        expected_operation_get = (
            operations.GetMessages().DatastoreProjectsOperationsGetRequest())
        expected_operation_get.name = operation_name

        # Expect several calls while done=False, then we get a response from the
        # command once the export is complete.
        self.mock_datastore_v1.projects.Export.Expect(expected_request,
                                                      response=mock_response)
        self.mock_datastore_v1.projects_operations.Get.Expect(
            expected_operation_get, response=mock_response)
        self.mock_datastore_v1.projects_operations.Get.Expect(
            expected_operation_get, response=mock_response)

        mock_response = operations.GetMessages().GoogleLongrunningOperation(
            done=True, name=operation_name)

        self.mock_datastore_v1.projects_operations.Get.Expect(
            expected_operation_get, response=mock_response)

        # Call RunDatastoreTest directly, because we don't want --async.
        resp = self.RunDatastoreTest('export {}'.format(output_url_prefix))

        self.assertEqual(operation_name, resp.name)
        self.AssertErrContains(
            'Waiting for [{}] to finish'.format(operation_name))
コード例 #3
0
    def testImportWithEntitySpecAndLabels(self):
        input_url = 'gs://gcs_bucket/gcs_file'
        labels = {'a_key': 'a_value', 'b_key': 'b_value'}
        kinds = ['Customer', 'Orders']
        namespaces = ['APAC', 'EMEA', '(default)']
        expected_namespaces = ['APAC', 'EMEA', '']
        expected_request = admin_api.GetImportEntitiesRequest(
            self.Project(),
            input_url,
            labels=labels,
            kinds=kinds,
            namespaces=expected_namespaces)

        operation_name = 'import operation name'
        mock_response = operations.GetMessages().GoogleLongrunningOperation(
            done=False, name=operation_name)

        self.mock_datastore_v1.projects.Import.Expect(expected_request,
                                                      response=mock_response)

        actual = self.RunImportTest(labels=labels,
                                    kinds=kinds,
                                    namespaces=namespaces,
                                    input_url=input_url)
        self.assertEqual(operation_name, actual.name)
コード例 #4
0
 def GetMockListRequest(self,
                        operation_filter=None,
                        page_size=operations.DEFAULT_PAGE_SIZE,
                        page_token=None):
     return operations.GetMessages().DatastoreProjectsOperationsListRequest(
         filter=operation_filter,
         name='projects/%s' % (self.Project()),
         pageSize=page_size,
         pageToken=page_token)
コード例 #5
0
    def testList(self, track):
        self.track = track
        request = self.GetMockListRequest()

        operation_name = 'export operation name'

        operation_list = [
            operations.GetMessages().GoogleLongrunningOperation(
                done=False, name=operation_name)
        ]

        response = operations.GetMessages(
        ).GoogleLongrunningListOperationsResponse(operations=operation_list)

        self.mock_datastore_v1.projects_operations.List.Expect(
            request, response=response)

        actual = list(self.RunDatastoreTest('operations list'))
        self.assertEqual(1, len(actual))
        self.assertEqual(operation_name, actual[0].name)
コード例 #6
0
    def testDeleteAbsolutePath(self, track):
        self.track = track
        operation_name_full = 'projects/my-test-project/operations/doomed'
        request = self._GetMockDeleteRequest(operation_name_full)
        response = operations.GetMessages().Empty()

        self.mock_datastore_v1.projects_operations.Delete.Expect(
            request, response=response)

        self.RunDatastoreTest(
            'operations delete {}'.format(operation_name_full))
コード例 #7
0
    def testListWithLabelCorrectUsageGetsTranslated(self, track):
        self.track = track
        expected_filter = 'metadata.common.labels.k=v'
        request = self.GetMockListRequest(operation_filter=expected_filter)

        operation_name = 'export operation name'

        operation_list = [
            operations.GetMessages().GoogleLongrunningOperation(
                done=False, name=operation_name)
        ]

        response = operations.GetMessages(
        ).GoogleLongrunningListOperationsResponse(operations=operation_list)

        self.mock_datastore_v1.projects_operations.List.Expect(
            request, response=response)

        actual = list(
            self.RunDatastoreTest('operations list --filter=\'labels.k:v\''))
        self.assertEqual(1, len(actual))
        self.assertEqual(operation_name, actual[0].name)
コード例 #8
0
    def testExport(self):
        output_url_prefix = 'gs://gcs_bucket'
        expected_request = admin_api.GetExportEntitiesRequest(
            self.Project(), output_url_prefix)
        operation_name = 'export operation name'
        mock_response = operations.GetMessages().GoogleLongrunningOperation(
            done=False, name=operation_name)

        self.mock_datastore_v1.projects.Export.Expect(expected_request,
                                                      response=mock_response)

        resp = self.RunExportTest(output_url_prefix=output_url_prefix)
        self.assertEqual(operation_name, resp.name)
コード例 #9
0
    def testCancelRelativeResourcePath(self, track):
        self.track = track
        operation_name_relative = 'doomed'
        operation_name_full = 'projects/my-test-project/operations/doomed'

        request = self._GetMockCancelRequest(operation_name_full)
        response = operations.GetMessages().Empty()

        self.mock_datastore_v1.projects_operations.Cancel.Expect(
            request, response=response)

        self.RunDatastoreTest(
            'operations cancel {}'.format(operation_name_relative))
コード例 #10
0
    def testImport(self):
        input_url = 'gs://gcs_bucket/gcs_object'
        expected_request = admin_api.GetImportEntitiesRequest(
            self.Project(), input_url)

        operation_name = 'import operation name'
        mock_response = operations.GetMessages().GoogleLongrunningOperation(
            done=False, name=operation_name)

        self.mock_datastore_v1.projects.Import.Expect(expected_request,
                                                      response=mock_response)

        actual = self.RunImportTest(input_url=input_url)
        self.assertEqual(operation_name, actual.name)
コード例 #11
0
    def testListWithDefaultNamespaceGetsTranslated(self, track):
        self.track = track
        expected_filter = 'metadata.entity_filter.namespace_id=""'
        request = self.GetMockListRequest(operation_filter=expected_filter)

        operation_name = 'export operation name'

        operation_list = [
            operations.GetMessages().GoogleLongrunningOperation(
                done=False, name=operation_name)
        ]

        response = operations.GetMessages(
        ).GoogleLongrunningListOperationsResponse(operations=operation_list)

        self.mock_datastore_v1.projects_operations.List.Expect(
            request, response=response)

        actual = list(
            self.RunDatastoreTest(
                'operations list --filter=\'namespace:"(default)"\''))
        self.assertEqual(1, len(actual))
        self.assertEqual(operation_name, actual[0].name)
コード例 #12
0
    def testGetAbsoluteResource(self, track):
        self.track = track
        operation_name_full = (
            'projects/my-test-project/operations/export_operation_name')
        request = self.GetMockGetRequest(operation_name_full)
        response = operations.GetMessages().GoogleLongrunningOperation(
            done=False, name=operation_name_full)

        self.mock_datastore_v1.projects_operations.Get.Expect(
            request, response=response)

        actual = self.RunDatastoreTest('operations describe %s' %
                                       operation_name_full)
        self.assertEqual(operation_name_full, actual.name)
コード例 #13
0
 def _GetMockDeleteRequest(self, name):
     messages = operations.GetMessages()
     request = messages.DatastoreProjectsOperationsDeleteRequest()
     request.name = name
     return request