def test_topic_list_subscriptions_with_paging(self): from gcloud._testing import _GAXPageIterator SIZE = 23 TOKEN = 'TOKEN' NEW_TOKEN = 'NEW_TOKEN' response = _GAXPageIterator([ {'name': self.SUB_PATH, 'topic': self.TOPIC_PATH}], NEW_TOKEN) gax_api = _GAXPublisherAPI(_list_topic_subscriptions_response=response) api = self._makeOne(gax_api) subscriptions, next_token = api.topic_list_subscriptions( self.TOPIC_PATH, page_size=SIZE, page_token=TOKEN) self.assertEqual(len(subscriptions), 1) subscription = subscriptions[0] self.assertIsInstance(subscription, dict) self.assertEqual(subscription['name'], self.SUB_PATH) self.assertEqual(subscription['topic'], self.TOPIC_PATH) self.assertEqual(next_token, NEW_TOKEN) name, page_size, options = ( gax_api._list_topic_subscriptions_called_with) self.assertEqual(name, self.TOPIC_PATH) self.assertEqual(page_size, SIZE) self.assertEqual(options.page_token, TOKEN)
def test_list_subscriptions_with_paging(self): from gcloud._testing import _GAXPageIterator SIZE = 23 TOKEN = 'TOKEN' NEW_TOKEN = 'NEW_TOKEN' response = _GAXPageIterator([ _SubscriptionPB(self.SUB_PATH, self.TOPIC_PATH, self.PUSH_ENDPOINT, 0) ], NEW_TOKEN) gax_api = _GAXSubscriberAPI(_list_subscriptions_response=response) api = self._makeOne(gax_api) subscriptions, next_token = api.list_subscriptions(self.PROJECT, page_size=SIZE, page_token=TOKEN) self.assertEqual(len(subscriptions), 1) subscription = subscriptions[0] self.assertIsInstance(subscription, dict) self.assertEqual(subscription['name'], self.SUB_PATH) self.assertEqual(subscription['topic'], self.TOPIC_PATH) self.assertEqual(subscription['pushConfig'], {'pushEndpoint': self.PUSH_ENDPOINT}) self.assertEqual(subscription['ackDeadlineSeconds'], 0) self.assertEqual(next_token, NEW_TOKEN) name, page_size, options = gax_api._list_subscriptions_called_with self.assertEqual(name, self.PROJECT_PATH) self.assertEqual(page_size, 23) self.assertEqual(options.page_token, TOKEN)
def test_list_sinks_w_paging(self): from gcloud._testing import _GAXPageIterator TOKEN = 'TOKEN' PAGE_SIZE = 42 SINKS = [{ 'name': self.SINK_PATH, 'filter': self.FILTER, 'destination': self.DESTINATION_URI, }] response = _GAXPageIterator( [_LogSinkPB(self.SINK_PATH, self.DESTINATION_URI, self.FILTER)], None) gax_api = _GAXSinksAPI(_list_sinks_response=response) api = self._makeOne(gax_api) sinks, token = api.list_sinks( self.PROJECT, page_size=PAGE_SIZE, page_token=TOKEN) self.assertEqual(sinks, SINKS) self.assertEqual(token, None) project, page_size, options = gax_api._list_sinks_called_with self.assertEqual(project, self.PROJECT_PATH) self.assertEqual(page_size, PAGE_SIZE) self.assertEqual(options.page_token, TOKEN)
def test_topic_list_subscriptions_with_paging(self): from gcloud._testing import _GAXPageIterator SIZE = 23 TOKEN = 'TOKEN' NEW_TOKEN = 'NEW_TOKEN' response = _GAXPageIterator([{ 'name': self.SUB_PATH, 'topic': self.TOPIC_PATH }], NEW_TOKEN) gax_api = _GAXPublisherAPI(_list_topic_subscriptions_response=response) api = self._makeOne(gax_api) subscriptions, next_token = api.topic_list_subscriptions( self.TOPIC_PATH, page_size=SIZE, page_token=TOKEN) self.assertEqual(len(subscriptions), 1) subscription = subscriptions[0] self.assertIsInstance(subscription, dict) self.assertEqual(subscription['name'], self.SUB_PATH) self.assertEqual(subscription['topic'], self.TOPIC_PATH) self.assertEqual(next_token, NEW_TOKEN) name, page_size, options = ( gax_api._list_topic_subscriptions_called_with) self.assertEqual(name, self.TOPIC_PATH) self.assertEqual(page_size, SIZE) self.assertEqual(options.page_token, TOKEN)
def test_list_subscriptions_no_paging(self): from google.gax import INITIAL_PAGE from gcloud._testing import _GAXPageIterator response = _GAXPageIterator([ _SubscriptionPB(self.SUB_PATH, self.TOPIC_PATH, self.PUSH_ENDPOINT, 0) ], None) gax_api = _GAXSubscriberAPI(_list_subscriptions_response=response) api = self._makeOne(gax_api) subscriptions, next_token = api.list_subscriptions(self.PROJECT) self.assertEqual(len(subscriptions), 1) subscription = subscriptions[0] self.assertIsInstance(subscription, dict) self.assertEqual(subscription['name'], self.SUB_PATH) self.assertEqual(subscription['topic'], self.TOPIC_PATH) self.assertEqual(subscription['pushConfig'], {'pushEndpoint': self.PUSH_ENDPOINT}) self.assertEqual(subscription['ackDeadlineSeconds'], 0) self.assertEqual(next_token, None) name, page_size, options = gax_api._list_subscriptions_called_with self.assertEqual(name, self.PROJECT_PATH) self.assertEqual(page_size, 0) self.assertTrue(options.page_token is INITIAL_PAGE)
def test_topic_list_subscriptions_no_paging(self): from google.gax import INITIAL_PAGE from gcloud._testing import _GAXPageIterator response = _GAXPageIterator([{ 'name': self.SUB_PATH, 'topic': self.TOPIC_PATH }], None) gax_api = _GAXPublisherAPI(_list_topic_subscriptions_response=response) api = self._makeOne(gax_api) subscriptions, next_token = api.topic_list_subscriptions( self.TOPIC_PATH) self.assertEqual(len(subscriptions), 1) subscription = subscriptions[0] self.assertIsInstance(subscription, dict) self.assertEqual(subscription['name'], self.SUB_PATH) self.assertEqual(subscription['topic'], self.TOPIC_PATH) self.assertEqual(next_token, None) topic_path, page_size, options = ( gax_api._list_topic_subscriptions_called_with) self.assertEqual(topic_path, self.TOPIC_PATH) self.assertEqual(page_size, 0) self.assertTrue(options.page_token is INITIAL_PAGE)
def test_list_entries_no_paging(self): from google.gax import INITIAL_PAGE from gcloud.logging import DESCENDING from gcloud._testing import _GAXPageIterator TOKEN = 'TOKEN' TEXT = 'TEXT' response = _GAXPageIterator( [_LogEntryPB(self.LOG_NAME, text_payload=TEXT)], TOKEN) gax_api = _GAXLoggingAPI(_list_log_entries_response=response) api = self._makeOne(gax_api) entries, next_token = api.list_entries( [self.PROJECT], self.FILTER, DESCENDING) self.assertEqual(len(entries), 1) entry = entries[0] self.assertIsInstance(entry, dict) self.assertEqual(entry['logName'], self.LOG_NAME) self.assertEqual(entry['resource'], {'type': 'global'}) self.assertEqual(entry['textPayload'], TEXT) self.assertEqual(next_token, TOKEN) projects, filter_, order_by, page_size, options = ( gax_api._list_log_entries_called_with) self.assertEqual(projects, [self.PROJECT]) self.assertEqual(filter_, self.FILTER) self.assertEqual(order_by, DESCENDING) self.assertEqual(page_size, 0) self.assertTrue(options.page_token is INITIAL_PAGE)
def test_list_metrics_w_paging(self): from gcloud._testing import _GAXPageIterator TOKEN = 'TOKEN' PAGE_SIZE = 42 METRICS = [{ 'name': self.METRIC_PATH, 'filter': self.FILTER, 'description': self.DESCRIPTION, }] response = _GAXPageIterator( [_LogMetricPB(self.METRIC_PATH, self.DESCRIPTION, self.FILTER)], None) gax_api = _GAXMetricsAPI(_list_log_metrics_response=response) api = self._makeOne(gax_api) metrics, token = api.list_metrics( self.PROJECT, page_size=PAGE_SIZE, page_token=TOKEN) self.assertEqual(metrics, METRICS) self.assertEqual(token, None) project, page_size, options = gax_api._list_log_metrics_called_with self.assertEqual(project, self.PROJECT_PATH) self.assertEqual(page_size, PAGE_SIZE) self.assertEqual(options.page_token, TOKEN)
def test_list_subscriptions_with_paging(self): from gcloud._testing import _GAXPageIterator SIZE = 23 TOKEN = 'TOKEN' NEW_TOKEN = 'NEW_TOKEN' response = _GAXPageIterator([_SubscriptionPB( self.SUB_PATH, self.TOPIC_PATH, self.PUSH_ENDPOINT, 0)], NEW_TOKEN) gax_api = _GAXSubscriberAPI(_list_subscriptions_response=response) api = self._makeOne(gax_api) subscriptions, next_token = api.list_subscriptions( self.PROJECT, page_size=SIZE, page_token=TOKEN) self.assertEqual(len(subscriptions), 1) subscription = subscriptions[0] self.assertIsInstance(subscription, dict) self.assertEqual(subscription['name'], self.SUB_PATH) self.assertEqual(subscription['topic'], self.TOPIC_PATH) self.assertEqual(subscription['pushConfig'], {'pushEndpoint': self.PUSH_ENDPOINT}) self.assertEqual(subscription['ackDeadlineSeconds'], 0) self.assertEqual(next_token, NEW_TOKEN) name, page_size, options = gax_api._list_subscriptions_called_with self.assertEqual(name, self.PROJECT_PATH) self.assertEqual(page_size, 23) self.assertEqual(options.page_token, TOKEN)
def test_list_entries_with_paging(self): from google.protobuf.struct_pb2 import Value from gcloud._testing import _GAXPageIterator SIZE = 23 TOKEN = 'TOKEN' NEW_TOKEN = 'NEW_TOKEN' PAYLOAD = {'message': 'MESSAGE', 'weather': 'sunny'} struct_pb = _StructPB(dict([(key, Value(string_value=value)) for key, value in PAYLOAD.items()])) response = _GAXPageIterator( [_LogEntryPB(self.LOG_NAME, json_payload=struct_pb)], NEW_TOKEN) gax_api = _GAXLoggingAPI(_list_log_entries_response=response) api = self._makeOne(gax_api) entries, next_token = api.list_entries( [self.PROJECT], page_size=SIZE, page_token=TOKEN) self.assertEqual(len(entries), 1) entry = entries[0] self.assertIsInstance(entry, dict) self.assertEqual(entry['logName'], self.LOG_NAME) self.assertEqual(entry['resource'], {'type': 'global'}) self.assertEqual(entry['jsonPayload'], PAYLOAD) self.assertEqual(next_token, NEW_TOKEN) projects, filter_, order_by, page_size, options = ( gax_api._list_log_entries_called_with) self.assertEqual(projects, [self.PROJECT]) self.assertEqual(filter_, '') self.assertEqual(order_by, '') self.assertEqual(page_size, SIZE) self.assertEqual(options.page_token, TOKEN)
def test_list_topics_no_paging(self): from google.gax import INITIAL_PAGE from gcloud._testing import _GAXPageIterator TOKEN = 'TOKEN' response = _GAXPageIterator([_TopicPB(self.TOPIC_PATH)], TOKEN) gax_api = _GAXPublisherAPI(_list_topics_response=response) api = self._makeOne(gax_api) topics, next_token = api.list_topics(self.PROJECT) self.assertEqual(len(topics), 1) topic = topics[0] self.assertIsInstance(topic, dict) self.assertEqual(topic['name'], self.TOPIC_PATH) self.assertEqual(next_token, TOKEN) name, page_size, options = gax_api._list_topics_called_with self.assertEqual(name, self.PROJECT_PATH) self.assertEqual(page_size, 0) self.assertTrue(options.page_token is INITIAL_PAGE)
def test_list_topics_with_paging(self): from gcloud._testing import _GAXPageIterator SIZE = 23 TOKEN = 'TOKEN' NEW_TOKEN = 'NEW_TOKEN' response = _GAXPageIterator([_TopicPB(self.TOPIC_PATH)], NEW_TOKEN) gax_api = _GAXPublisherAPI(_list_topics_response=response) api = self._makeOne(gax_api) topics, next_token = api.list_topics(self.PROJECT, page_size=SIZE, page_token=TOKEN) self.assertEqual(len(topics), 1) topic = topics[0] self.assertIsInstance(topic, dict) self.assertEqual(topic['name'], self.TOPIC_PATH) self.assertEqual(next_token, NEW_TOKEN) name, page_size, options = gax_api._list_topics_called_with self.assertEqual(name, self.PROJECT_PATH) self.assertEqual(page_size, SIZE) self.assertEqual(options.page_token, TOKEN)
def test_topic_list_subscriptions_no_paging(self): from google.gax import INITIAL_PAGE from gcloud._testing import _GAXPageIterator response = _GAXPageIterator([ {'name': self.SUB_PATH, 'topic': self.TOPIC_PATH}], None) gax_api = _GAXPublisherAPI(_list_topic_subscriptions_response=response) api = self._makeOne(gax_api) subscriptions, next_token = api.topic_list_subscriptions( self.TOPIC_PATH) self.assertEqual(len(subscriptions), 1) subscription = subscriptions[0] self.assertIsInstance(subscription, dict) self.assertEqual(subscription['name'], self.SUB_PATH) self.assertEqual(subscription['topic'], self.TOPIC_PATH) self.assertEqual(next_token, None) topic_path, page_size, options = ( gax_api._list_topic_subscriptions_called_with) self.assertEqual(topic_path, self.TOPIC_PATH) self.assertEqual(page_size, 0) self.assertTrue(options.page_token is INITIAL_PAGE)
def test_list_topics_with_paging(self): from gcloud._testing import _GAXPageIterator SIZE = 23 TOKEN = 'TOKEN' NEW_TOKEN = 'NEW_TOKEN' response = _GAXPageIterator( [_TopicPB(self.TOPIC_PATH)], NEW_TOKEN) gax_api = _GAXPublisherAPI(_list_topics_response=response) api = self._makeOne(gax_api) topics, next_token = api.list_topics( self.PROJECT, page_size=SIZE, page_token=TOKEN) self.assertEqual(len(topics), 1) topic = topics[0] self.assertIsInstance(topic, dict) self.assertEqual(topic['name'], self.TOPIC_PATH) self.assertEqual(next_token, NEW_TOKEN) name, page_size, options = gax_api._list_topics_called_with self.assertEqual(name, self.PROJECT_PATH) self.assertEqual(page_size, SIZE) self.assertEqual(options.page_token, TOKEN)
def test_list_sinks_no_paging(self): from google.gax import INITIAL_PAGE from gcloud._testing import _GAXPageIterator TOKEN = 'TOKEN' SINKS = [{ 'name': self.SINK_PATH, 'filter': self.FILTER, 'destination': self.DESTINATION_URI, }] response = _GAXPageIterator( [_LogSinkPB(self.SINK_PATH, self.DESTINATION_URI, self.FILTER)], TOKEN) gax_api = _GAXSinksAPI(_list_sinks_response=response) api = self._makeOne(gax_api) sinks, token = api.list_sinks(self.PROJECT) self.assertEqual(sinks, SINKS) self.assertEqual(token, TOKEN) project, page_size, options = gax_api._list_sinks_called_with self.assertEqual(project, self.PROJECT) self.assertEqual(page_size, 0) self.assertEqual(options.page_token, INITIAL_PAGE)
def test_list_metrics_no_paging(self): from google.gax import INITIAL_PAGE from gcloud._testing import _GAXPageIterator TOKEN = 'TOKEN' METRICS = [{ 'name': self.METRIC_PATH, 'filter': self.FILTER, 'description': self.DESCRIPTION, }] response = _GAXPageIterator( [_LogMetricPB(self.METRIC_PATH, self.DESCRIPTION, self.FILTER)], TOKEN) gax_api = _GAXMetricsAPI(_list_log_metrics_response=response) api = self._makeOne(gax_api) metrics, token = api.list_metrics(self.PROJECT) self.assertEqual(metrics, METRICS) self.assertEqual(token, TOKEN) project, page_size, options = gax_api._list_log_metrics_called_with self.assertEqual(project, self.PROJECT) self.assertEqual(page_size, 0) self.assertEqual(options.page_token, INITIAL_PAGE)
def test_list_subscriptions_no_paging(self): from google.gax import INITIAL_PAGE from gcloud._testing import _GAXPageIterator response = _GAXPageIterator([_SubscriptionPB( self.SUB_PATH, self.TOPIC_PATH, self.PUSH_ENDPOINT, 0)], None) gax_api = _GAXSubscriberAPI(_list_subscriptions_response=response) api = self._makeOne(gax_api) subscriptions, next_token = api.list_subscriptions(self.PROJECT) self.assertEqual(len(subscriptions), 1) subscription = subscriptions[0] self.assertIsInstance(subscription, dict) self.assertEqual(subscription['name'], self.SUB_PATH) self.assertEqual(subscription['topic'], self.TOPIC_PATH) self.assertEqual(subscription['pushConfig'], {'pushEndpoint': self.PUSH_ENDPOINT}) self.assertEqual(subscription['ackDeadlineSeconds'], 0) self.assertEqual(next_token, None) name, page_size, options = gax_api._list_subscriptions_called_with self.assertEqual(name, self.PROJECT_PATH) self.assertEqual(page_size, 0) self.assertTrue(options.page_token is INITIAL_PAGE)
def test_list_entries_with_extra_properties(self): from datetime import datetime from google.logging.type.log_severity_pb2 import WARNING from gcloud._testing import _GAXPageIterator from gcloud._helpers import UTC from gcloud._helpers import _datetime_to_rfc3339 from gcloud._helpers import _datetime_to_pb_timestamp NOW = datetime.utcnow().replace(tzinfo=UTC) SIZE = 23 TOKEN = 'TOKEN' NEW_TOKEN = 'NEW_TOKEN' PAYLOAD = {'message': 'MESSAGE', 'weather': 'sunny'} SEVERITY = 'WARNING' LABELS = { 'foo': 'bar', } IID = 'IID' request = _HTTPRequestPB() operation = _LogEntryOperationPB() EXTRAS = { 'severity': WARNING, 'labels': LABELS, 'insert_id': IID, 'http_request': request, 'operation': operation, } ENTRY = _LogEntryPB(self.LOG_NAME, proto_payload=PAYLOAD, **EXTRAS) ENTRY.resource.labels['foo'] = 'bar' ENTRY.timestamp = _datetime_to_pb_timestamp(NOW) response = _GAXPageIterator([ENTRY], NEW_TOKEN) gax_api = _GAXLoggingAPI(_list_log_entries_response=response) api = self._makeOne(gax_api) entries, next_token = api.list_entries( [self.PROJECT], page_size=SIZE, page_token=TOKEN) self.assertEqual(len(entries), 1) entry = entries[0] self.assertIsInstance(entry, dict) self.assertEqual(entry['logName'], self.LOG_NAME) self.assertEqual(entry['resource'], {'type': 'global', 'labels': {'foo': 'bar'}}) self.assertEqual(entry['protoPayload'], PAYLOAD) self.assertEqual(entry['severity'], SEVERITY) self.assertEqual(entry['labels'], LABELS) self.assertEqual(entry['insertId'], IID) self.assertEqual(entry['timestamp'], _datetime_to_rfc3339(NOW)) EXPECTED_REQUEST = { 'requestMethod': request.request_method, 'requestUrl': request.request_url, 'status': request.status, 'requestSize': request.request_size, 'responseSize': request.response_size, 'referer': request.referer, 'userAgent': request.user_agent, 'remoteIp': request.remote_ip, 'cacheHit': request.cache_hit, } self.assertEqual(entry['httpRequest'], EXPECTED_REQUEST) EXPECTED_OPERATION = { 'producer': operation.producer, 'id': operation.id, 'first': operation.first, 'last': operation.last, } self.assertEqual(entry['operation'], EXPECTED_OPERATION) self.assertEqual(next_token, NEW_TOKEN) projects, filter_, order_by, page_size, options = ( gax_api._list_log_entries_called_with) self.assertEqual(projects, [self.PROJECT]) self.assertEqual(filter_, '') self.assertEqual(order_by, '') self.assertEqual(page_size, SIZE) self.assertEqual(options.page_token, TOKEN)