@@ -39,6 +39,27 @@ def mock_use_aws(use):
3939 return mock_mr_method ('is_aws_environment' , use )
4040
4141
42+ @contextmanager
43+ def no_oc_env ():
44+ with mock .patch .dict (os .environ ):
45+ try :
46+ del os .environ ['OC_RESOURCE_TYPE' ]
47+ except KeyError :
48+ pass
49+ try :
50+ del os .environ ['OC_RESOURCE_LABELS' ]
51+ except KeyError :
52+ pass
53+ yield
54+
55+
56+ def mock_oc_env ():
57+ return mock .patch .dict ('os.environ' , {
58+ 'OC_RESOURCE_TYPE' : 'mock_resource_type' ,
59+ 'OC_RESOURCE_LABELS' : 'mock_label_key=mock_label_value'
60+ })
61+
62+
4263@contextmanager
4364def mock_gke_env ():
4465 with mock_use_gke (True ):
@@ -77,11 +98,20 @@ def test_gcp_gce_monitored_resource(self, gcp_metadata_mock):
7798 gcp_metadata_mock .return_value = mock .Mock ()
7899 gcp_metadata_mock .return_value .get_gce_metadata .return_value = \
79100 mocked_labels
80- with mock_gce_env ():
81- resource = monitored_resource .get_instance ()
101+ with no_oc_env ():
102+ with mock_gce_env ():
103+ resource = monitored_resource .get_instance ()
82104 self .assertEquals (resource .get_type (), 'gce_instance' )
83105 self .assertEquals (resource .get_labels (), mocked_labels )
84106
107+ with mock_oc_env ():
108+ with mock_gce_env ():
109+ resource = monitored_resource .get_instance ()
110+ self .assertEqual (resource .get_type (), 'mock_resource_type' )
111+ self .assertDictContainsSubset (
112+ {'mock_label_key' : 'mock_label_value' }, resource .get_labels ())
113+ self .assertDictContainsSubset (mocked_labels , resource .get_labels ())
114+
85115 @mock .patch ('opencensus.common.monitored_resource.monitored_resource'
86116 '.gcp_metadata_config.GcpMetadataConfig' )
87117 def test_gcp_gke_monitored_resource (self , gcp_metadata_mock ):
@@ -99,11 +129,20 @@ def test_gcp_gke_monitored_resource(self, gcp_metadata_mock):
99129 gcp_metadata_mock .return_value = mock .Mock ()
100130 gcp_metadata_mock .return_value .get_gke_metadata .return_value = \
101131 mocked_labels
102- with mock_gke_env ():
103- resource = monitored_resource .get_instance ()
132+ with no_oc_env ():
133+ with mock_gke_env ():
134+ resource = monitored_resource .get_instance ()
104135 self .assertEquals (resource .get_type (), 'gke_container' )
105136 self .assertEquals (resource .get_labels (), mocked_labels )
106137
138+ with mock_oc_env ():
139+ with mock_gke_env ():
140+ resource = monitored_resource .get_instance ()
141+ self .assertEqual (resource .get_type (), 'mock_resource_type' )
142+ self .assertDictContainsSubset (
143+ {'mock_label_key' : 'mock_label_value' }, resource .get_labels ())
144+ self .assertDictContainsSubset (mocked_labels , resource .get_labels ())
145+
107146 @mock .patch ('opencensus.common.monitored_resource.monitored_resource'
108147 '.aws_identity_doc_utils.AwsIdentityDocumentUtils' )
109148 def test_aws_monitored_resource (self , aws_metadata_mock ):
@@ -118,32 +157,54 @@ def test_aws_monitored_resource(self, aws_metadata_mock):
118157 aws_metadata_mock .return_value .get_aws_metadata .return_value = \
119158 mocked_labels
120159
121- with mock_aws_env ():
122- resource = monitored_resource .get_instance ()
160+ with no_oc_env ():
161+ with mock_aws_env ():
162+ resource = monitored_resource .get_instance ()
123163 self .assertEquals (resource .get_type (), 'aws_ec2_instance' )
124164 self .assertEquals (resource .get_labels (), mocked_labels )
125165
166+ with mock_oc_env ():
167+ with mock_aws_env ():
168+ resource = monitored_resource .get_instance ()
169+ self .assertEqual (resource .get_type (), 'mock_resource_type' )
170+ self .assertDictContainsSubset (
171+ {'mock_label_key' : 'mock_label_value' }, resource .get_labels ())
172+ self .assertDictContainsSubset (mocked_labels , resource .get_labels ())
173+
126174 def test_gke_environment (self ):
127175 patch = mock .patch .dict (os .environ ,
128176 {'KUBERNETES_SERVICE_HOST' : '127.0.0.1' })
129177
130- with patch :
131- mr = monitored_resource .get_instance ()
178+ with no_oc_env ():
179+ with patch :
180+ mr = monitored_resource .get_instance ()
181+ self .assertIsNotNone (mr )
182+ self .assertEqual (mr .get_type (), "gke_container" )
132183
133- self .assertIsNotNone (mr )
134- self .assertEqual (mr .get_type (), "gke_container" )
184+ with mock_oc_env ():
185+ mr = monitored_resource .get_instance ()
186+ self .assertEqual (mr .get_type (), 'mock_resource_type' )
187+ self .assertDictContainsSubset (
188+ {'mock_label_key' : 'mock_label_value' }, mr .get_labels ())
135189
136190 def test_gce_environment (self ):
137191 patch = mock .patch (
138192 'opencensus.common.monitored_resource.'
139193 'gcp_metadata_config.GcpMetadataConfig.'
140194 'is_running_on_gcp' ,
141195 return_value = True )
142- with patch :
143- mr = monitored_resource .get_instance ()
196+ with no_oc_env ():
197+ with patch :
198+ mr = monitored_resource .get_instance ()
144199
145- self .assertIsNotNone (mr )
146- self .assertEqual (mr .get_type (), "gce_instance" )
200+ self .assertIsNotNone (mr )
201+ self .assertEqual (mr .get_type (), "gce_instance" )
202+
203+ with mock_oc_env ():
204+ mr = monitored_resource .get_instance ()
205+ self .assertEqual (mr .get_type (), 'mock_resource_type' )
206+ self .assertDictContainsSubset (
207+ {'mock_label_key' : 'mock_label_value' }, mr .get_labels ())
147208
148209 @mock .patch ('opencensus.common.monitored_resource.'
149210 'gcp_metadata_config.GcpMetadataConfig.is_running_on_gcp' ,
@@ -153,11 +214,17 @@ def test_gce_environment(self):
153214 'is_running_on_aws' ,
154215 return_value = True )
155216 def test_aws_environment (self , aws_util_mock , gcp_metadata_mock ):
156- mr = monitored_resource . get_instance ()
157-
217+ with no_oc_env ():
218+ mr = monitored_resource . get_instance ()
158219 self .assertIsNotNone (mr )
159220 self .assertEqual (mr .get_type (), "aws_ec2_instance" )
160221
222+ with mock_oc_env ():
223+ mr = monitored_resource .get_instance ()
224+ self .assertEqual (mr .get_type (), 'mock_resource_type' )
225+ self .assertDictContainsSubset (
226+ {'mock_label_key' : 'mock_label_value' }, mr .get_labels ())
227+
161228 @mock .patch ('opencensus.common.monitored_resource.'
162229 'gcp_metadata_config.GcpMetadataConfig.is_running_on_gcp' ,
163230 return_value = False )
@@ -166,6 +233,13 @@ def test_aws_environment(self, aws_util_mock, gcp_metadata_mock):
166233 'is_running_on_aws' ,
167234 return_value = False )
168235 def test_non_supported_environment (self , aws_util_mock , gcp_metadata_mock ):
169- mr = monitored_resource . get_instance ()
170-
236+ with no_oc_env ():
237+ mr = monitored_resource . get_instance ()
171238 self .assertIsNone (mr )
239+
240+ with mock_oc_env ():
241+ mr = monitored_resource .get_instance ()
242+ self .assertIsNotNone (mr )
243+ self .assertEqual (mr .get_type (), 'mock_resource_type' )
244+ self .assertDictEqual (
245+ mr .get_labels (), {'mock_label_key' : 'mock_label_value' })
0 commit comments