Skip to content

Commit ce40029

Browse files
committed
Updating unit tests are list_metrics() iterator update.
1 parent 940fce6 commit ce40029

File tree

4 files changed

+132
-51
lines changed

4 files changed

+132
-51
lines changed

logging/google/cloud/logging/_gax.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,6 @@ def _item_to_sink(iterator, log_sink_pb):
496496
return Sink.from_api_repr(resource, iterator.client)
497497

498498

499-
500499
def _item_to_metric(iterator, log_metric_pb):
501500
"""Convert a metric protobuf to the native object.
502501

logging/unit_tests/test__gax.py

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -843,56 +843,72 @@ def test_ctor(self):
843843
self.assertIs(api._gax_api, gax_api)
844844

845845
def test_list_metrics_no_paging(self):
846+
import six
846847
from google.gax import INITIAL_PAGE
847-
from google.cloud._testing import _GAXPageIterator
848848
from google.logging.v2.logging_metrics_pb2 import LogMetric
849+
from google.cloud._testing import _GAXPageIterator
850+
from google.cloud.logging.metric import Metric
849851

850852
TOKEN = 'TOKEN'
851-
METRICS = [{
852-
'name': self.METRIC_PATH,
853-
'filter': self.FILTER,
854-
'description': self.DESCRIPTION,
855-
}]
856853
metric_pb = LogMetric(name=self.METRIC_PATH,
857854
description=self.DESCRIPTION,
858855
filter=self.FILTER)
859856
response = _GAXPageIterator([metric_pb], page_token=TOKEN)
860857
gax_api = _GAXMetricsAPI(_list_log_metrics_response=response)
861-
api = self._makeOne(gax_api, None)
858+
client = object()
859+
api = self._makeOne(gax_api, client)
862860

863-
metrics, token = api.list_metrics(self.PROJECT)
861+
iterator = api.list_metrics(self.PROJECT)
862+
page = six.next(iterator.pages)
863+
metrics = list(page)
864+
token = iterator.next_page_token
864865

865-
self.assertEqual(metrics, METRICS)
866+
# First check the token.
866867
self.assertEqual(token, TOKEN)
868+
# Then check the metrics returned.
869+
self.assertEqual(len(metrics), 1)
870+
metric = metrics[0]
871+
self.assertIsInstance(metric, Metric)
872+
self.assertEqual(metric.name, self.METRIC_PATH)
873+
self.assertEqual(metric.filter_, self.FILTER)
874+
self.assertEqual(metric.description, self.DESCRIPTION)
875+
self.assertIs(metric.client, client)
867876

868877
project, page_size, options = gax_api._list_log_metrics_called_with
869878
self.assertEqual(project, self.PROJECT_PATH)
870879
self.assertEqual(page_size, 0)
871880
self.assertEqual(options.page_token, INITIAL_PAGE)
872881

873882
def test_list_metrics_w_paging(self):
874-
from google.cloud._testing import _GAXPageIterator
875883
from google.logging.v2.logging_metrics_pb2 import LogMetric
884+
from google.cloud._testing import _GAXPageIterator
885+
from google.cloud.logging.metric import Metric
876886

877887
TOKEN = 'TOKEN'
878888
PAGE_SIZE = 42
879-
METRICS = [{
880-
'name': self.METRIC_PATH,
881-
'filter': self.FILTER,
882-
'description': self.DESCRIPTION,
883-
}]
884889
metric_pb = LogMetric(name=self.METRIC_PATH,
885890
description=self.DESCRIPTION,
886891
filter=self.FILTER)
887892
response = _GAXPageIterator([metric_pb])
888893
gax_api = _GAXMetricsAPI(_list_log_metrics_response=response)
889-
api = self._makeOne(gax_api, None)
894+
client = object()
895+
api = self._makeOne(gax_api, client)
890896

891-
metrics, token = api.list_metrics(
897+
iterator = api.list_metrics(
892898
self.PROJECT, page_size=PAGE_SIZE, page_token=TOKEN)
899+
metrics = list(iterator)
900+
token = iterator.next_page_token
893901

894-
self.assertEqual(metrics, METRICS)
902+
# First check the token.
895903
self.assertIsNone(token)
904+
# Then check the metrics returned.
905+
self.assertEqual(len(metrics), 1)
906+
metric = metrics[0]
907+
self.assertIsInstance(metric, Metric)
908+
self.assertEqual(metric.name, self.METRIC_PATH)
909+
self.assertEqual(metric.filter_, self.FILTER)
910+
self.assertEqual(metric.description, self.DESCRIPTION)
911+
self.assertIs(metric.client, client)
896912

897913
project, page_size, options = gax_api._list_log_metrics_called_with
898914
self.assertEqual(project, self.PROJECT_PATH)

logging/unit_tests/test_client.py

Lines changed: 53 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -485,29 +485,49 @@ def test_metric_explicit(self):
485485
self.assertEqual(metric.project, self.PROJECT)
486486

487487
def test_list_metrics_no_paging(self):
488+
import six
488489
from google.cloud.logging.metric import Metric
490+
489491
PROJECT = 'PROJECT'
490492
TOKEN = 'TOKEN'
491493
METRICS = [{
492494
'name': self.METRIC_NAME,
493495
'filter': self.FILTER,
494496
'description': self.DESCRIPTION,
495497
}]
496-
client = self._makeOne(project=PROJECT, credentials=_Credentials())
497-
api = client._metrics_api = _DummyMetricsAPI()
498-
api._list_metrics_response = METRICS, TOKEN
498+
client = self._makeOne(project=PROJECT, credentials=_Credentials(),
499+
use_gax=False)
500+
returned = {
501+
'metrics': METRICS,
502+
'nextPageToken': TOKEN,
503+
}
504+
client.connection = _Connection(returned)
499505

500-
metrics, token = client.list_metrics()
506+
# Execute request.
507+
iterator = client.list_metrics()
508+
page = six.next(iterator.pages)
509+
metrics = list(page)
510+
token = iterator.next_page_token
501511

512+
# First check the token.
513+
self.assertEqual(token, TOKEN)
514+
# Then check the metrics returned.
502515
self.assertEqual(len(metrics), 1)
503516
metric = metrics[0]
504517
self.assertIsInstance(metric, Metric)
505518
self.assertEqual(metric.name, self.METRIC_NAME)
506519
self.assertEqual(metric.filter_, self.FILTER)
507520
self.assertEqual(metric.description, self.DESCRIPTION)
508-
self.assertEqual(token, TOKEN)
509-
self.assertEqual(api._list_metrics_called_with,
510-
(PROJECT, None, None))
521+
self.assertIs(metric.client, client)
522+
523+
# Verify mocked transport.
524+
called_with = client.connection._called_with
525+
path = '/projects/%s/metrics' % (self.PROJECT,)
526+
self.assertEqual(called_with, {
527+
'method': 'GET',
528+
'path': path,
529+
'query_params': {},
530+
})
511531

512532
def test_list_metrics_with_paging(self):
513533
from google.cloud.logging.metric import Metric
@@ -519,22 +539,40 @@ def test_list_metrics_with_paging(self):
519539
'filter': self.FILTER,
520540
'description': self.DESCRIPTION,
521541
}]
522-
client = self._makeOne(project=PROJECT, credentials=_Credentials())
523-
api = client._metrics_api = _DummyMetricsAPI()
524-
api._list_metrics_response = METRICS, None
542+
client = self._makeOne(project=PROJECT, credentials=_Credentials(),
543+
use_gax=False)
544+
returned = {
545+
'metrics': METRICS,
546+
}
547+
client.connection = _Connection(returned)
525548

526549
# Execute request.
527-
metrics, token = client.list_metrics(PAGE_SIZE, TOKEN)
528-
# Test values are correct.
550+
iterator = client.list_metrics(PAGE_SIZE, TOKEN)
551+
metrics = list(iterator)
552+
token = iterator.next_page_token
553+
554+
# First check the token.
555+
self.assertIsNone(token)
556+
# Then check the metrics returned.
529557
self.assertEqual(len(metrics), 1)
530558
metric = metrics[0]
531559
self.assertIsInstance(metric, Metric)
532560
self.assertEqual(metric.name, self.METRIC_NAME)
533561
self.assertEqual(metric.filter_, self.FILTER)
534562
self.assertEqual(metric.description, self.DESCRIPTION)
535-
self.assertIsNone(token)
536-
self.assertEqual(api._list_metrics_called_with,
537-
(PROJECT, PAGE_SIZE, TOKEN))
563+
self.assertIs(metric.client, client)
564+
565+
# Verify mocked transport.
566+
called_with = client.connection._called_with
567+
path = '/projects/%s/metrics' % (self.PROJECT,)
568+
self.assertEqual(called_with, {
569+
'method': 'GET',
570+
'path': path,
571+
'query_params': {
572+
'pageSize': PAGE_SIZE,
573+
'pageToken': TOKEN,
574+
},
575+
})
538576

539577

540578
class _Credentials(object):
@@ -550,13 +588,6 @@ def create_scoped(self, scope):
550588
return self
551589

552590

553-
class _DummyMetricsAPI(object):
554-
555-
def list_metrics(self, project, page_size, page_token):
556-
self._list_metrics_called_with = (project, page_size, page_token)
557-
return self._list_metrics_response
558-
559-
560591
class _Connection(object):
561592

562593
_called_with = None

logging/unit_tests/test_connection.py

Lines changed: 45 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,9 @@ def _makeOne(self, *args, **kw):
540540
return self._getTargetClass()(*args, **kw)
541541

542542
def test_list_metrics_no_paging(self):
543+
import six
544+
from google.cloud.logging.metric import Metric
545+
543546
TOKEN = 'TOKEN'
544547
RETURNED = {
545548
'metrics': [{
@@ -552,16 +555,33 @@ def test_list_metrics_no_paging(self):
552555
client = _Client(conn)
553556
api = self._makeOne(client)
554557

555-
metrics, token = api.list_metrics(self.PROJECT)
558+
iterator = api.list_metrics(self.PROJECT)
559+
page = six.next(iterator.pages)
560+
metrics = list(page)
561+
token = iterator.next_page_token
556562

557-
self.assertEqual(metrics, RETURNED['metrics'])
563+
# First check the token.
558564
self.assertEqual(token, TOKEN)
565+
# Then check the metrics returned.
566+
self.assertEqual(len(metrics), 1)
567+
metric = metrics[0]
568+
self.assertIsInstance(metric, Metric)
569+
self.assertEqual(metric.name, self.METRIC_PATH)
570+
self.assertEqual(metric.filter_, self.FILTER)
571+
self.assertEqual(metric.description, '')
572+
self.assertIs(metric.client, client)
559573

560-
self.assertEqual(conn._called_with['method'], 'GET')
574+
called_with = conn._called_with
561575
path = '/%s' % (self.LIST_METRICS_PATH,)
562-
self.assertEqual(conn._called_with['path'], path)
576+
self.assertEqual(called_with, {
577+
'method': 'GET',
578+
'path': path,
579+
'query_params': {},
580+
})
563581

564582
def test_list_metrics_w_paging(self):
583+
from google.cloud.logging.metric import Metric
584+
565585
TOKEN = 'TOKEN'
566586
PAGE_SIZE = 42
567587
RETURNED = {
@@ -574,17 +594,32 @@ def test_list_metrics_w_paging(self):
574594
client = _Client(conn)
575595
api = self._makeOne(client)
576596

577-
metrics, token = api.list_metrics(
597+
iterator = api.list_metrics(
578598
self.PROJECT, page_size=PAGE_SIZE, page_token=TOKEN)
599+
metrics = list(iterator)
600+
token = iterator.next_page_token
579601

580-
self.assertEqual(metrics, RETURNED['metrics'])
602+
# First check the token.
581603
self.assertIsNone(token)
604+
# Then check the metrics returned.
605+
self.assertEqual(len(metrics), 1)
606+
metric = metrics[0]
607+
self.assertIsInstance(metric, Metric)
608+
self.assertEqual(metric.name, self.METRIC_PATH)
609+
self.assertEqual(metric.filter_, self.FILTER)
610+
self.assertEqual(metric.description, '')
611+
self.assertIs(metric.client, client)
582612

583-
self.assertEqual(conn._called_with['method'], 'GET')
613+
called_with = conn._called_with
584614
path = '/%s' % (self.LIST_METRICS_PATH,)
585-
self.assertEqual(conn._called_with['path'], path)
586-
self.assertEqual(conn._called_with['query_params'],
587-
{'pageSize': PAGE_SIZE, 'pageToken': TOKEN})
615+
self.assertEqual(called_with, {
616+
'method': 'GET',
617+
'path': path,
618+
'query_params': {
619+
'pageSize': PAGE_SIZE,
620+
'pageToken': TOKEN,
621+
},
622+
})
588623

589624
def test_metric_create_conflict(self):
590625
from google.cloud.exceptions import Conflict

0 commit comments

Comments
 (0)