@@ -65,3 +65,106 @@ def test_table_factory(self):
6565 self .assertTrue (isinstance (table , Table ))
6666 self .assertEqual (table .table_id , table_id )
6767 self .assertEqual (table ._cluster , cluster )
68+
69+ def test_from_pb_success (self ):
70+ from gcloud .bigtable ._generated import (
71+ bigtable_cluster_data_pb2 as data_pb2 )
72+
73+ project = 'PROJECT'
74+ zone = 'zone'
75+ cluster_id = 'cluster-id'
76+ client = _Client (project = project )
77+
78+ cluster_name = ('projects/' + project + '/zones/' + zone +
79+ '/clusters/' + cluster_id )
80+ cluster_pb = data_pb2 .Cluster (
81+ name = cluster_name ,
82+ display_name = cluster_id ,
83+ serve_nodes = 3 ,
84+ )
85+
86+ klass = self ._getTargetClass ()
87+ cluster = klass .from_pb (cluster_pb , client )
88+ self .assertTrue (isinstance (cluster , klass ))
89+ self .assertEqual (cluster ._client , client )
90+ self .assertEqual (cluster .zone , zone )
91+ self .assertEqual (cluster .cluster_id , cluster_id )
92+
93+ def test_from_pb_bad_cluster_name (self ):
94+ from gcloud .bigtable ._generated import (
95+ bigtable_cluster_data_pb2 as data_pb2 )
96+
97+ cluster_name = 'INCORRECT_FORMAT'
98+ cluster_pb = data_pb2 .Cluster (name = cluster_name )
99+
100+ klass = self ._getTargetClass ()
101+ with self .assertRaises (ValueError ):
102+ klass .from_pb (cluster_pb , None )
103+
104+ def test_from_pb_project_mistmatch (self ):
105+ from gcloud .bigtable ._generated import (
106+ bigtable_cluster_data_pb2 as data_pb2 )
107+
108+ project = 'PROJECT'
109+ zone = 'zone'
110+ cluster_id = 'cluster-id'
111+ alt_project = 'ALT_PROJECT'
112+ client = _Client (project = alt_project )
113+
114+ self .assertNotEqual (project , alt_project )
115+
116+ cluster_name = ('projects/' + project + '/zones/' + zone +
117+ '/clusters/' + cluster_id )
118+ cluster_pb = data_pb2 .Cluster (name = cluster_name )
119+
120+ klass = self ._getTargetClass ()
121+ with self .assertRaises (ValueError ):
122+ klass .from_pb (cluster_pb , client )
123+
124+
125+ class Test__require_pb_property (unittest2 .TestCase ):
126+
127+ def _callFUT (self , message_pb , property_name , value ):
128+ from gcloud .bigtable .cluster import _require_pb_property
129+ return _require_pb_property (message_pb , property_name , value )
130+
131+ def test_it (self ):
132+ from gcloud .bigtable ._generated import (
133+ bigtable_cluster_data_pb2 as data_pb2 )
134+ serve_nodes = 119
135+ cluster_pb = data_pb2 .Cluster (serve_nodes = serve_nodes )
136+ result = self ._callFUT (cluster_pb , 'serve_nodes' , serve_nodes )
137+ self .assertEqual (result , serve_nodes )
138+
139+ def test_with_null_value_passed_in (self ):
140+ from gcloud .bigtable ._generated import (
141+ bigtable_cluster_data_pb2 as data_pb2 )
142+ serve_nodes = None
143+ actual_serve_nodes = 119
144+ cluster_pb = data_pb2 .Cluster (serve_nodes = actual_serve_nodes )
145+ result = self ._callFUT (cluster_pb , 'serve_nodes' , serve_nodes )
146+ self .assertEqual (result , actual_serve_nodes )
147+
148+ def test_with_value_unset_on_pb (self ):
149+ from gcloud .bigtable ._generated import (
150+ bigtable_cluster_data_pb2 as data_pb2 )
151+ serve_nodes = 119
152+ cluster_pb = data_pb2 .Cluster ()
153+ with self .assertRaises (ValueError ):
154+ self ._callFUT (cluster_pb , 'serve_nodes' , serve_nodes )
155+
156+ def test_with_values_disagreeing (self ):
157+ from gcloud .bigtable ._generated import (
158+ bigtable_cluster_data_pb2 as data_pb2 )
159+ serve_nodes = 119
160+ other_serve_nodes = 1000
161+ self .assertNotEqual (serve_nodes , other_serve_nodes )
162+ cluster_pb = data_pb2 .Cluster (serve_nodes = other_serve_nodes )
163+ with self .assertRaises (ValueError ):
164+ self ._callFUT (cluster_pb , 'serve_nodes' , serve_nodes )
165+
166+
167+ class _Client (object ):
168+
169+ def __init__ (self , project ):
170+ self .project = project
0 commit comments