Updated DB_Helper by adding firebase methods.
This commit is contained in:
parent
485cc3bbba
commit
c82121d036
1810 changed files with 537281 additions and 1 deletions
235
venv/Lib/site-packages/gcloud/logging/test_entries.py
Normal file
235
venv/Lib/site-packages/gcloud/logging/test_entries.py
Normal file
|
@ -0,0 +1,235 @@
|
|||
# Copyright 2016 Google Inc. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import unittest2
|
||||
|
||||
|
||||
class Test_logger_name_from_path(unittest2.TestCase):
|
||||
|
||||
def _callFUT(self, path):
|
||||
from gcloud.logging.entries import logger_name_from_path
|
||||
return logger_name_from_path(path)
|
||||
|
||||
def test_w_simple_name(self):
|
||||
LOGGER_NAME = 'LOGGER_NAME'
|
||||
PROJECT = 'my-project-1234'
|
||||
PATH = 'projects/%s/logs/%s' % (PROJECT, LOGGER_NAME)
|
||||
logger_name = self._callFUT(PATH)
|
||||
self.assertEqual(logger_name, LOGGER_NAME)
|
||||
|
||||
def test_w_name_w_all_extras(self):
|
||||
LOGGER_NAME = 'LOGGER_NAME-part.one~part.two%part-three'
|
||||
PROJECT = 'my-project-1234'
|
||||
PATH = 'projects/%s/logs/%s' % (PROJECT, LOGGER_NAME)
|
||||
logger_name = self._callFUT(PATH)
|
||||
self.assertEqual(logger_name, LOGGER_NAME)
|
||||
|
||||
|
||||
class Test_BaseEntry(unittest2.TestCase):
|
||||
|
||||
PROJECT = 'PROJECT'
|
||||
LOGGER_NAME = 'LOGGER_NAME'
|
||||
|
||||
def _getTargetClass(self):
|
||||
from gcloud.logging.entries import _BaseEntry
|
||||
|
||||
class _Dummy(_BaseEntry):
|
||||
_PAYLOAD_KEY = 'dummyPayload'
|
||||
|
||||
return _Dummy
|
||||
|
||||
def _makeOne(self, *args, **kw):
|
||||
return self._getTargetClass()(*args, **kw)
|
||||
|
||||
def test_ctor_defaults(self):
|
||||
PAYLOAD = 'PAYLOAD'
|
||||
logger = _Logger(self.LOGGER_NAME, self.PROJECT)
|
||||
entry = self._makeOne(PAYLOAD, logger)
|
||||
self.assertEqual(entry.payload, PAYLOAD)
|
||||
self.assertTrue(entry.logger is logger)
|
||||
self.assertTrue(entry.insert_id is None)
|
||||
self.assertTrue(entry.timestamp is None)
|
||||
self.assertTrue(entry.labels is None)
|
||||
self.assertTrue(entry.severity is None)
|
||||
self.assertTrue(entry.http_request is None)
|
||||
|
||||
def test_ctor_explicit(self):
|
||||
import datetime
|
||||
PAYLOAD = 'PAYLOAD'
|
||||
IID = 'IID'
|
||||
TIMESTAMP = datetime.datetime.now()
|
||||
LABELS = {'foo': 'bar', 'baz': 'qux'}
|
||||
SEVERITY = 'CRITICAL'
|
||||
METHOD = 'POST'
|
||||
URI = 'https://api.example.com/endpoint'
|
||||
STATUS = '500'
|
||||
REQUEST = {
|
||||
'requestMethod': METHOD,
|
||||
'requestUrl': URI,
|
||||
'status': STATUS,
|
||||
}
|
||||
logger = _Logger(self.LOGGER_NAME, self.PROJECT)
|
||||
entry = self._makeOne(PAYLOAD, logger,
|
||||
insert_id=IID,
|
||||
timestamp=TIMESTAMP,
|
||||
labels=LABELS,
|
||||
severity=SEVERITY,
|
||||
http_request=REQUEST)
|
||||
self.assertEqual(entry.payload, PAYLOAD)
|
||||
self.assertTrue(entry.logger is logger)
|
||||
self.assertEqual(entry.insert_id, IID)
|
||||
self.assertEqual(entry.timestamp, TIMESTAMP)
|
||||
self.assertEqual(entry.labels, LABELS)
|
||||
self.assertEqual(entry.severity, SEVERITY)
|
||||
self.assertEqual(entry.http_request['requestMethod'], METHOD)
|
||||
self.assertEqual(entry.http_request['requestUrl'], URI)
|
||||
self.assertEqual(entry.http_request['status'], STATUS)
|
||||
|
||||
def test_from_api_repr_missing_data_no_loggers(self):
|
||||
client = _Client(self.PROJECT)
|
||||
PAYLOAD = 'PAYLOAD'
|
||||
LOG_NAME = 'projects/%s/logs/%s' % (self.PROJECT, self.LOGGER_NAME)
|
||||
API_REPR = {
|
||||
'dummyPayload': PAYLOAD,
|
||||
'logName': LOG_NAME,
|
||||
}
|
||||
klass = self._getTargetClass()
|
||||
entry = klass.from_api_repr(API_REPR, client)
|
||||
self.assertEqual(entry.payload, PAYLOAD)
|
||||
self.assertTrue(entry.insert_id is None)
|
||||
self.assertTrue(entry.timestamp is None)
|
||||
self.assertTrue(entry.severity is None)
|
||||
self.assertTrue(entry.http_request is None)
|
||||
logger = entry.logger
|
||||
self.assertTrue(isinstance(logger, _Logger))
|
||||
self.assertTrue(logger.client is client)
|
||||
self.assertEqual(logger.name, self.LOGGER_NAME)
|
||||
|
||||
def test_from_api_repr_w_loggers_no_logger_match(self):
|
||||
from datetime import datetime
|
||||
from gcloud._helpers import UTC
|
||||
klass = self._getTargetClass()
|
||||
client = _Client(self.PROJECT)
|
||||
PAYLOAD = 'PAYLOAD'
|
||||
SEVERITY = 'CRITICAL'
|
||||
IID = 'IID'
|
||||
NOW = datetime.utcnow().replace(tzinfo=UTC)
|
||||
TIMESTAMP = _datetime_to_rfc3339_w_nanos(NOW)
|
||||
LOG_NAME = 'projects/%s/logs/%s' % (self.PROJECT, self.LOGGER_NAME)
|
||||
LABELS = {'foo': 'bar', 'baz': 'qux'}
|
||||
METHOD = 'POST'
|
||||
URI = 'https://api.example.com/endpoint'
|
||||
STATUS = '500'
|
||||
API_REPR = {
|
||||
'dummyPayload': PAYLOAD,
|
||||
'logName': LOG_NAME,
|
||||
'insertId': IID,
|
||||
'timestamp': TIMESTAMP,
|
||||
'labels': LABELS,
|
||||
'severity': SEVERITY,
|
||||
'httpRequest': {
|
||||
'requestMethod': METHOD,
|
||||
'requestUrl': URI,
|
||||
'status': STATUS,
|
||||
},
|
||||
}
|
||||
loggers = {}
|
||||
entry = klass.from_api_repr(API_REPR, client, loggers=loggers)
|
||||
self.assertEqual(entry.payload, PAYLOAD)
|
||||
self.assertEqual(entry.insert_id, IID)
|
||||
self.assertEqual(entry.timestamp, NOW)
|
||||
self.assertEqual(entry.labels, LABELS)
|
||||
self.assertEqual(entry.severity, SEVERITY)
|
||||
self.assertEqual(entry.http_request['requestMethod'], METHOD)
|
||||
self.assertEqual(entry.http_request['requestUrl'], URI)
|
||||
self.assertEqual(entry.http_request['status'], STATUS)
|
||||
logger = entry.logger
|
||||
self.assertTrue(isinstance(logger, _Logger))
|
||||
self.assertTrue(logger.client is client)
|
||||
self.assertEqual(logger.name, self.LOGGER_NAME)
|
||||
self.assertEqual(loggers, {LOG_NAME: logger})
|
||||
|
||||
def test_from_api_repr_w_loggers_w_logger_match(self):
|
||||
from datetime import datetime
|
||||
from gcloud._helpers import UTC
|
||||
client = _Client(self.PROJECT)
|
||||
PAYLOAD = 'PAYLOAD'
|
||||
IID = 'IID'
|
||||
NOW = datetime.utcnow().replace(tzinfo=UTC)
|
||||
TIMESTAMP = _datetime_to_rfc3339_w_nanos(NOW)
|
||||
LOG_NAME = 'projects/%s/logs/%s' % (self.PROJECT, self.LOGGER_NAME)
|
||||
LABELS = {'foo': 'bar', 'baz': 'qux'}
|
||||
API_REPR = {
|
||||
'dummyPayload': PAYLOAD,
|
||||
'logName': LOG_NAME,
|
||||
'insertId': IID,
|
||||
'timestamp': TIMESTAMP,
|
||||
'labels': LABELS,
|
||||
}
|
||||
LOGGER = object()
|
||||
loggers = {LOG_NAME: LOGGER}
|
||||
klass = self._getTargetClass()
|
||||
entry = klass.from_api_repr(API_REPR, client, loggers=loggers)
|
||||
self.assertEqual(entry.payload, PAYLOAD)
|
||||
self.assertEqual(entry.insert_id, IID)
|
||||
self.assertEqual(entry.timestamp, NOW)
|
||||
self.assertEqual(entry.labels, LABELS)
|
||||
self.assertTrue(entry.logger is LOGGER)
|
||||
|
||||
|
||||
class TestProtobufEntry(unittest2.TestCase):
|
||||
|
||||
PROJECT = 'PROJECT'
|
||||
LOGGER_NAME = 'LOGGER_NAME'
|
||||
|
||||
def _getTargetClass(self):
|
||||
from gcloud.logging.entries import ProtobufEntry
|
||||
return ProtobufEntry
|
||||
|
||||
def _makeOne(self, *args, **kw):
|
||||
return self._getTargetClass()(*args, **kw)
|
||||
|
||||
def test_parse_message(self):
|
||||
import json
|
||||
from google.protobuf.json_format import MessageToJson
|
||||
from google.protobuf.struct_pb2 import Struct, Value
|
||||
LOGGER = object()
|
||||
message = Struct(fields={'foo': Value(bool_value=False)})
|
||||
with_true = Struct(fields={'foo': Value(bool_value=True)})
|
||||
PAYLOAD = json.loads(MessageToJson(with_true))
|
||||
entry = self._makeOne(PAYLOAD, LOGGER)
|
||||
entry.parse_message(message)
|
||||
self.assertTrue(message.fields['foo'])
|
||||
|
||||
|
||||
def _datetime_to_rfc3339_w_nanos(value):
|
||||
from gcloud._helpers import _RFC3339_NO_FRACTION
|
||||
no_fraction = value.strftime(_RFC3339_NO_FRACTION)
|
||||
return '%s.%09dZ' % (no_fraction, value.microsecond * 1000)
|
||||
|
||||
|
||||
class _Logger(object):
|
||||
|
||||
def __init__(self, name, client):
|
||||
self.name = name
|
||||
self.client = client
|
||||
|
||||
|
||||
class _Client(object):
|
||||
|
||||
def __init__(self, project):
|
||||
self.project = project
|
||||
|
||||
def logger(self, name):
|
||||
return _Logger(name, self)
|
Loading…
Add table
Add a link
Reference in a new issue