@@ -65,3 +65,86 @@ 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__get_pb_property_value (unittest2 .TestCase ):
126+
127+ def _callFUT (self , message_pb , property_name ):
128+ from gcloud .bigtable .cluster import _get_pb_property_value
129+ return _get_pb_property_value (message_pb , property_name )
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' )
137+ self .assertEqual (result , serve_nodes )
138+
139+ def test_with_value_unset_on_pb (self ):
140+ from gcloud .bigtable ._generated import (
141+ bigtable_cluster_data_pb2 as data_pb2 )
142+ cluster_pb = data_pb2 .Cluster ()
143+ with self .assertRaises (ValueError ):
144+ self ._callFUT (cluster_pb , 'serve_nodes' )
145+
146+
147+ class _Client (object ):
148+
149+ def __init__ (self , project ):
150+ self .project = project
0 commit comments