@@ -413,6 +413,66 @@ def mock_process_operation(operation_pb):
413413 self .assertEqual (prep_create_called , [cluster ])
414414 self .assertEqual (process_operation_called , [current_op ])
415415
416+ def test_update (self ):
417+ from gcloud ._testing import _Monkey
418+ from gcloud .bigtable ._generated import (
419+ bigtable_cluster_data_pb2 as data_pb2 )
420+ from gcloud .bigtable ._generated import operations_pb2
421+ from gcloud .bigtable ._testing import _FakeStub
422+ from gcloud .bigtable import cluster as MUT
423+
424+ project = 'PROJECT'
425+ zone = 'zone'
426+ cluster_id = 'cluster-id'
427+ serve_nodes = 81
428+ display_name = 'display_name'
429+ timeout_seconds = 9
430+
431+ client = _Client (project , timeout_seconds = timeout_seconds )
432+ cluster = self ._makeOne (zone , cluster_id , client ,
433+ display_name = display_name ,
434+ serve_nodes = serve_nodes )
435+
436+ # Create request_pb
437+ cluster_name = ('projects/' + project + '/zones/' + zone +
438+ '/clusters/' + cluster_id )
439+ request_pb = data_pb2 .Cluster (
440+ name = cluster_name ,
441+ display_name = display_name ,
442+ serve_nodes = serve_nodes ,
443+ )
444+
445+ # Create response_pb
446+ current_op = operations_pb2 .Operation ()
447+ response_pb = data_pb2 .Cluster (current_operation = current_op )
448+
449+ # Patch the stub used by the API method.
450+ client ._cluster_stub = stub = _FakeStub (response_pb )
451+
452+ # Create expected_result.
453+ op_id = 5678
454+ op_begin = object ()
455+ expected_result = MUT .Operation ('update' , op_id , op_begin )
456+
457+ # Create mocks
458+ process_operation_called = []
459+
460+ def mock_process_operation (operation_pb ):
461+ process_operation_called .append (operation_pb )
462+ return op_id , op_begin
463+
464+ # Perform the method and check the result.
465+ with _Monkey (MUT , _process_operation = mock_process_operation ):
466+ result = cluster .update ()
467+
468+ self .assertEqual (result , expected_result )
469+ self .assertEqual (stub .method_calls , [(
470+ 'UpdateCluster' ,
471+ (request_pb , timeout_seconds ),
472+ {},
473+ )])
474+ self .assertEqual (process_operation_called , [current_op ])
475+
416476 def test_delete (self ):
417477 from gcloud .bigtable ._generated import (
418478 bigtable_cluster_service_messages_pb2 as messages_pb2 )
@@ -651,6 +711,33 @@ def test_with_create_cluster_metadata(self):
651711 result = self ._callFUT (any_val )
652712 self .assertEqual (result , metadata )
653713
714+ def test_with_update_cluster_metadata (self ):
715+ from gcloud .bigtable ._generated import any_pb2
716+ from gcloud .bigtable ._generated import (
717+ bigtable_cluster_data_pb2 as data_pb2 )
718+ from gcloud .bigtable ._generated import (
719+ bigtable_cluster_service_messages_pb2 as messages_pb2 )
720+ from gcloud .bigtable ._generated .timestamp_pb2 import Timestamp
721+
722+ type_url = ('type.googleapis.com/' +
723+ messages_pb2 ._UPDATECLUSTERMETADATA .full_name )
724+ metadata = messages_pb2 .UpdateClusterMetadata (
725+ request_time = Timestamp (seconds = 1 , nanos = 1234 ),
726+ finish_time = Timestamp (seconds = 10 , nanos = 891011 ),
727+ cancel_time = Timestamp (seconds = 100 , nanos = 76543 ),
728+ original_request = data_pb2 .Cluster (
729+ display_name = 'the-end' ,
730+ serve_nodes = 42 ,
731+ ),
732+ )
733+
734+ any_val = any_pb2 .Any (
735+ type_url = type_url ,
736+ value = metadata .SerializeToString (),
737+ )
738+ result = self ._callFUT (any_val )
739+ self .assertEqual (result , metadata )
740+
654741 def test_unknown_type_url (self ):
655742 from gcloud ._testing import _Monkey
656743 from gcloud .bigtable ._generated import any_pb2
0 commit comments