def test_reload_success(self): from google.cloud.proto.spanner.admin.instance.v1 import ( spanner_instance_admin_pb2 as admin_v1_pb2) client = _Client(self.PROJECT) instance_pb = admin_v1_pb2.Instance( name=self.INSTANCE_NAME, config=self.CONFIG_NAME, display_name=self.DISPLAY_NAME, node_count=self.NODE_COUNT, ) api = client.instance_admin_api = _FauxInstanceAdminAPI( _get_instance_response=instance_pb) instance = self._make_one(self.INSTANCE_ID, client) instance.reload() self.assertEqual(instance.configuration_name, self.CONFIG_NAME) self.assertEqual(instance.node_count, self.NODE_COUNT) self.assertEqual(instance.display_name, self.DISPLAY_NAME) name, options = api._got_instance self.assertEqual(name, self.INSTANCE_NAME) self.assertEqual(options.kwargs['metadata'], [('google-cloud-resource-prefix', instance.name)])
def test_get_instance(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = instance_admin_client.InstanceAdminClient() # Mock request name = client.instance_path('[PROJECT]', '[INSTANCE]') # Mock response name_2 = 'name2-1052831874' config = 'config-1354792126' display_name = 'displayName1615086568' node_count = 1539922066 expected_response = spanner_instance_admin_pb2.Instance( name=name_2, config=config, display_name=display_name, node_count=node_count) grpc_stub.GetInstance.return_value = expected_response response = client.get_instance(name) self.assertEqual(expected_response, response) grpc_stub.GetInstance.assert_called_once() args, kwargs = grpc_stub.GetInstance.call_args self.assertEqual(len(args), 2) self.assertEqual(len(kwargs), 1) self.assertIn('metadata', kwargs) actual_request = args[0] expected_request = spanner_instance_admin_pb2.GetInstanceRequest( name=name) self.assertEqual(expected_request, actual_request)
def test_list_instances(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = instance_admin_client.InstanceAdminClient() # Mock request parent = client.project_path('[PROJECT]') # Mock response next_page_token = '' instances_element = spanner_instance_admin_pb2.Instance() instances = [instances_element] expected_response = spanner_instance_admin_pb2.ListInstancesResponse( next_page_token=next_page_token, instances=instances) grpc_stub.ListInstances.return_value = expected_response paged_list_response = client.list_instances(parent) resources = list(paged_list_response) self.assertEqual(1, len(resources)) self.assertEqual(expected_response.instances[0], resources[0]) grpc_stub.ListInstances.assert_called_once() args, kwargs = grpc_stub.ListInstances.call_args self.assertEqual(len(args), 2) self.assertEqual(len(kwargs), 1) self.assertIn('metadata', kwargs) actual_request = args[0] expected_request = spanner_instance_admin_pb2.ListInstancesRequest( parent=parent) self.assertEqual(expected_request, actual_request)
def test_from_pb_bad_instance_name(self): from google.cloud.proto.spanner.admin.instance.v1 import ( spanner_instance_admin_pb2 as admin_v1_pb2) instance_name = 'INCORRECT_FORMAT' instance_pb = admin_v1_pb2.Instance(name=instance_name) klass = self._getTargetClass() with self.assertRaises(ValueError): klass.from_pb(instance_pb, None)
def test__update_from_pb_no_display_name(self): from google.cloud.proto.spanner.admin.instance.v1 import ( spanner_instance_admin_pb2 as admin_v1_pb2) instance_pb = admin_v1_pb2.Instance() instance = self._make_one(None, None, None, None) self.assertEqual(instance.display_name, None) with self.assertRaises(ValueError): instance._update_from_pb(instance_pb) self.assertEqual(instance.display_name, None)
def test__update_from_pb_success(self): from google.cloud.proto.spanner.admin.instance.v1 import ( spanner_instance_admin_pb2 as admin_v1_pb2) display_name = 'display_name' instance_pb = admin_v1_pb2.Instance(display_name=display_name, ) instance = self._make_one(None, None, None, None) self.assertEqual(instance.display_name, None) instance._update_from_pb(instance_pb) self.assertEqual(instance.display_name, display_name)
def test_create_instance(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = instance_admin_client.InstanceAdminClient() # Mock request parent = client.project_path('[PROJECT]') instance_id = 'instanceId-2101995259' instance = spanner_instance_admin_pb2.Instance() # Mock response name = 'name3373707' config = 'config-1354792126' display_name = 'displayName1615086568' node_count = 1539922066 expected_response = spanner_instance_admin_pb2.Instance( name=name, config=config, display_name=display_name, node_count=node_count) operation = operations_pb2.Operation( name='operations/test_create_instance', done=True) operation.response.Pack(expected_response) grpc_stub.CreateInstance.return_value = operation response = client.create_instance(parent, instance_id, instance) self.assertEqual(expected_response, response.result()) grpc_stub.CreateInstance.assert_called_once() args, kwargs = grpc_stub.CreateInstance.call_args self.assertEqual(len(args), 2) self.assertEqual(len(kwargs), 1) self.assertIn('metadata', kwargs) actual_request = args[0] expected_request = spanner_instance_admin_pb2.CreateInstanceRequest( parent=parent, instance_id=instance_id, instance=instance) self.assertEqual(expected_request, actual_request)
def test_update_instance(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = instance_admin_client.InstanceAdminClient() # Mock request instance = spanner_instance_admin_pb2.Instance() field_mask = field_mask_pb2.FieldMask() # Mock response name = 'name3373707' config = 'config-1354792126' display_name = 'displayName1615086568' node_count = 1539922066 expected_response = spanner_instance_admin_pb2.Instance( name=name, config=config, display_name=display_name, node_count=node_count) operation = operations_pb2.Operation( name='operations/test_update_instance', done=True) operation.response.Pack(expected_response) grpc_stub.UpdateInstance.return_value = operation response = client.update_instance(instance, field_mask) self.assertEqual(expected_response, response.result()) grpc_stub.UpdateInstance.assert_called_once() args, kwargs = grpc_stub.UpdateInstance.call_args self.assertEqual(len(args), 2) self.assertEqual(len(kwargs), 1) self.assertIn('metadata', kwargs) actual_request = args[0] expected_request = spanner_instance_admin_pb2.UpdateInstanceRequest( instance=instance, field_mask=field_mask) self.assertEqual(expected_request, actual_request)
def test_from_pb_project_mistmatch(self): from google.cloud.proto.spanner.admin.instance.v1 import ( spanner_instance_admin_pb2 as admin_v1_pb2) ALT_PROJECT = 'ALT_PROJECT' client = _Client(project=ALT_PROJECT) self.assertNotEqual(self.PROJECT, ALT_PROJECT) instance_pb = admin_v1_pb2.Instance(name=self.INSTANCE_NAME) klass = self._getTargetClass() with self.assertRaises(ValueError): klass.from_pb(instance_pb, client)
def create(self): """Create this instance. See https://cloud.google.com/spanner/reference/rpc/google.spanner.admin.instance.v1#google.spanner.admin.instance.v1.InstanceAdmin.CreateInstance .. note:: Uses the ``project`` and ``instance_id`` on the current :class:`Instance` in addition to the ``display_name``. To change them before creating, reset the values via .. code:: python instance.display_name = 'New display name' instance.instance_id = 'i-changed-my-mind' before calling :meth:`create`. :rtype: :class:`google.api.core.operation.Operation` :returns: an operation instance :raises Conflict: if the instance already exists :raises GaxError: for errors other than ``ALREADY_EXISTS`` returned from the call """ api = self._client.instance_admin_api instance_pb = admin_v1_pb2.Instance( name=self.name, config=self.configuration_name, display_name=self.display_name, node_count=self.node_count, ) options = _options_with_prefix(self.name) try: future = api.create_instance( parent=self._client.project_name, instance_id=self.instance_id, instance=instance_pb, options=options, ) except GaxError as exc: if exc_to_code(exc.cause) == StatusCode.ALREADY_EXISTS: raise Conflict(self.name) raise return future
def update(self): """Update this instance. See https://cloud.google.com/spanner/reference/rpc/google.spanner.admin.instance.v1#google.spanner.admin.instance.v1.InstanceAdmin.UpdateInstance .. note:: Updates the ``display_name`` and ``node_count``. To change those values before updating, set them via .. code:: python instance.display_name = 'New display name' instance.node_count = 5 before calling :meth:`update`. :rtype: :class:`google.api.core.operation.Operation` :returns: an operation instance :raises NotFound: if the instance does not exist :raises GaxError: for other errors returned from the call """ api = self._client.instance_admin_api instance_pb = admin_v1_pb2.Instance( name=self.name, config=self.configuration_name, display_name=self.display_name, node_count=self.node_count, ) field_mask = FieldMask(paths=['config', 'display_name', 'node_count']) options = _options_with_prefix(self.name) try: future = api.update_instance( instance=instance_pb, field_mask=field_mask, options=options, ) except GaxError as exc: if exc_to_code(exc.cause) == StatusCode.NOT_FOUND: raise NotFound(self.name) raise return future
def test_from_pb_success(self): from google.cloud.proto.spanner.admin.instance.v1 import ( spanner_instance_admin_pb2 as admin_v1_pb2) client = _Client(project=self.PROJECT) instance_pb = admin_v1_pb2.Instance( name=self.INSTANCE_NAME, config=self.CONFIG_NAME, display_name=self.INSTANCE_ID, ) klass = self._getTargetClass() instance = klass.from_pb(instance_pb, client) self.assertTrue(isinstance(instance, klass)) self.assertEqual(instance._client, client) self.assertEqual(instance.instance_id, self.INSTANCE_ID) self.assertEqual(instance.configuration_name, self.CONFIG_NAME)
def test_update_instance_exception(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = instance_admin_client.InstanceAdminClient() # Mock request instance = spanner_instance_admin_pb2.Instance() field_mask = field_mask_pb2.FieldMask() # Mock exception response error = status_pb2.Status() operation = operations_pb2.Operation( name='operations/test_update_instance_exception', done=True) operation.error.CopyFrom(error) grpc_stub.UpdateInstance.return_value = operation response = client.update_instance(instance, field_mask) self.assertEqual(error, response.exception())
def test_create_instance_exception(self, mock_create_stub): # Mock gRPC layer grpc_stub = mock.Mock() mock_create_stub.return_value = grpc_stub client = instance_admin_client.InstanceAdminClient() # Mock request parent = client.project_path('[PROJECT]') instance_id = 'instanceId-2101995259' instance = spanner_instance_admin_pb2.Instance() # Mock exception response error = status_pb2.Status() operation = operations_pb2.Operation( name='operations/test_create_instance_exception', done=True) operation.error.CopyFrom(error) grpc_stub.CreateInstance.return_value = operation response = client.create_instance(parent, instance_id, instance) self.assertEqual(error, response.exception())