Skip to content

Commit f392c84

Browse files
authored
fix: monitoring tests (#2995)
* fix: monitoring tests * Add eventually consistent to flaky test
1 parent 13f6558 commit f392c84

File tree

3 files changed

+60
-54
lines changed

3 files changed

+60
-54
lines changed

monitoring/api/v3/cloud-client/quickstart_test.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import mock
1818
import pytest
19+
from gcp_devrel.testing import eventually_consistent
1920

2021
import quickstart
2122

@@ -36,6 +37,8 @@ def mock_project_path():
3637

3738

3839
def test_quickstart(capsys, mock_project_path):
39-
quickstart.run_quickstart()
40-
out, _ = capsys.readouterr()
41-
assert 'wrote' in out
40+
@eventually_consistent.call
41+
def _():
42+
quickstart.run_quickstart()
43+
out, _ = capsys.readouterr()
44+
assert 'wrote' in out

monitoring/api/v3/cloud-client/snippets.py

Lines changed: 13 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,21 @@
1515
import argparse
1616
import os
1717
import pprint
18-
import random
1918
import time
19+
import uuid
2020

2121
from google.cloud import monitoring_v3
2222

2323

24-
# Avoid collisions with other runs
25-
RANDOM_SUFFIX = str(random.randint(1000, 9999))
24+
PROJECT_ID = os.environ['GCLOUD_PROJECT']
2625

2726

2827
def create_metric_descriptor(project_id):
2928
# [START monitoring_create_metric]
3029
client = monitoring_v3.MetricServiceClient()
3130
project_name = client.project_path(project_id)
3231
descriptor = monitoring_v3.types.MetricDescriptor()
33-
descriptor.type = 'custom.googleapis.com/my_metric' + RANDOM_SUFFIX
32+
descriptor.type = 'custom.googleapis.com/my_metric' + str(uuid.uuid4())
3433
descriptor.metric_kind = (
3534
monitoring_v3.enums.MetricDescriptor.MetricKind.GAUGE)
3635
descriptor.value_type = (
@@ -55,7 +54,7 @@ def write_time_series(project_id):
5554
project_name = client.project_path(project_id)
5655

5756
series = monitoring_v3.types.TimeSeries()
58-
series.metric.type = 'custom.googleapis.com/my_metric' + RANDOM_SUFFIX
57+
series.metric.type = 'custom.googleapis.com/my_metric' + str(uuid.uuid4())
5958
series.resource.type = 'gce_instance'
6059
series.resource.labels['instance_id'] = '1234567890123456789'
6160
series.resource.labels['zone'] = 'us-central1-f'
@@ -205,29 +204,6 @@ def get_metric_descriptor(metric_name):
205204
# [END monitoring_get_descriptor]
206205

207206

208-
class MissingProjectIdError(Exception):
209-
pass
210-
211-
212-
def project_id():
213-
"""Retreives the project id from the environment variable.
214-
215-
Raises:
216-
MissingProjectIdError -- When not set.
217-
218-
Returns:
219-
str -- the project name
220-
"""
221-
project_id = (os.environ['GOOGLE_CLOUD_PROJECT'] or
222-
os.environ['GCLOUD_PROJECT'])
223-
224-
if not project_id:
225-
raise MissingProjectIdError(
226-
'Set the environment variable ' +
227-
'GCLOUD_PROJECT to your Google Cloud Project Id.')
228-
return project_id
229-
230-
231207
if __name__ == '__main__':
232208
parser = argparse.ArgumentParser(
233209
description='Demonstrates Monitoring API operations.')
@@ -310,25 +286,25 @@ def project_id():
310286
args = parser.parse_args()
311287

312288
if args.command == 'create-metric-descriptor':
313-
create_metric_descriptor(project_id())
289+
create_metric_descriptor(PROJECT_ID)
314290
if args.command == 'list-metric-descriptors':
315-
list_metric_descriptors(project_id())
291+
list_metric_descriptors(PROJECT_ID)
316292
if args.command == 'get-metric-descriptor':
317293
get_metric_descriptor(args.metric_type_name)
318294
if args.command == 'delete-metric-descriptor':
319295
delete_metric_descriptor(args.metric_descriptor_name)
320296
if args.command == 'list-resources':
321-
list_monitored_resources(project_id())
297+
list_monitored_resources(PROJECT_ID)
322298
if args.command == 'get-resource':
323299
get_monitored_resource_descriptor(
324-
project_id(), args.resource_type_name)
300+
PROJECT_ID, args.resource_type_name)
325301
if args.command == 'write-time-series':
326-
write_time_series(project_id())
302+
write_time_series(PROJECT_ID)
327303
if args.command == 'list-time-series':
328-
list_time_series(project_id())
304+
list_time_series(PROJECT_ID)
329305
if args.command == 'list-time-series-header':
330-
list_time_series_header(project_id())
306+
list_time_series_header(PROJECT_ID)
331307
if args.command == 'list-time-series-reduce':
332-
list_time_series_reduce(project_id())
308+
list_time_series_reduce(PROJECT_ID)
333309
if args.command == 'list-time-series-aggregate':
334-
list_time_series_aggregate(project_id())
310+
list_time_series_aggregate(PROJECT_ID)

monitoring/api/v3/cloud-client/snippets_test.py

Lines changed: 41 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,69 +12,96 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15+
import os
1516
import re
17+
import pytest
1618

1719
from gcp_devrel.testing import eventually_consistent
20+
from google.api_core.exceptions import NotFound
21+
1822

1923
import snippets
2024

25+
PROJECT_ID = os.environ['GCLOUD_PROJECT']
26+
2127

22-
def test_create_get_delete_metric_descriptor(capsys):
23-
snippets.create_metric_descriptor(snippets.project_id())
28+
@pytest.fixture(scope="function")
29+
def custom_metric_descriptor(capsys):
30+
snippets.create_metric_descriptor(PROJECT_ID)
2431
out, _ = capsys.readouterr()
2532
match = re.search(r'Created (.*)\.', out)
2633
metric_name = match.group(1)
34+
yield metric_name
35+
36+
# teardown
37+
try:
38+
snippets.delete_metric_descriptor(metric_name)
39+
except NotFound:
40+
print("Metric descriptor already deleted")
41+
42+
43+
@pytest.fixture(scope="module")
44+
def write_time_series():
45+
snippets.write_time_series(PROJECT_ID)
46+
yield
47+
48+
49+
def test_get_delete_metric_descriptor(capsys, custom_metric_descriptor):
2750
try:
2851
@eventually_consistent.call
2952
def __():
30-
snippets.get_metric_descriptor(metric_name)
53+
snippets.get_metric_descriptor(custom_metric_descriptor)
3154

3255
out, _ = capsys.readouterr()
3356
assert 'DOUBLE' in out
3457
finally:
35-
snippets.delete_metric_descriptor(metric_name)
58+
snippets.delete_metric_descriptor(custom_metric_descriptor)
3659
out, _ = capsys.readouterr()
3760
assert 'Deleted metric' in out
3861

3962

4063
def test_list_metric_descriptors(capsys):
41-
snippets.list_metric_descriptors(snippets.project_id())
64+
snippets.list_metric_descriptors(PROJECT_ID)
4265
out, _ = capsys.readouterr()
4366
assert 'logging.googleapis.com/byte_count' in out
4467

4568

4669
def test_list_resources(capsys):
47-
snippets.list_monitored_resources(snippets.project_id())
70+
snippets.list_monitored_resources(PROJECT_ID)
4871
out, _ = capsys.readouterr()
4972
assert 'pubsub_topic' in out
5073

5174

5275
def test_get_resources(capsys):
5376
snippets.get_monitored_resource_descriptor(
54-
snippets.project_id(), 'pubsub_topic')
77+
PROJECT_ID, 'pubsub_topic')
5578
out, _ = capsys.readouterr()
5679
assert 'A topic in Google Cloud Pub/Sub' in out
5780

5881

59-
def test_time_series(capsys):
60-
snippets.write_time_series(snippets.project_id())
61-
62-
snippets.list_time_series(snippets.project_id())
82+
def test_list_time_series(capsys, write_time_series):
83+
snippets.list_time_series(PROJECT_ID)
6384
out, _ = capsys.readouterr()
6485
assert 'gce_instance' in out
6586

66-
snippets.list_time_series_header(snippets.project_id())
87+
88+
def test_list_time_series_header(capsys, write_time_series):
89+
snippets.list_time_series_header(PROJECT_ID)
6790
out, _ = capsys.readouterr()
6891
assert 'gce_instance' in out
6992

70-
snippets.list_time_series_aggregate(snippets.project_id())
93+
94+
def test_list_time_series_aggregate(capsys, write_time_series):
95+
snippets.list_time_series_aggregate(PROJECT_ID)
7196
out, _ = capsys.readouterr()
7297
assert 'points' in out
7398
assert 'interval' in out
7499
assert 'start_time' in out
75100
assert 'end_time' in out
76101

77-
snippets.list_time_series_reduce(snippets.project_id())
102+
103+
def test_list_time_series_reduce(capsys, write_time_series):
104+
snippets.list_time_series_reduce(PROJECT_ID)
78105
out, _ = capsys.readouterr()
79106
assert 'points' in out
80107
assert 'interval' in out

0 commit comments

Comments
 (0)