Skip to content

Commit

Permalink
Adding lazy loading support for datastore connection.
Browse files Browse the repository at this point in the history
  • Loading branch information
dhermes committed Feb 19, 2015
1 parent d0fb459 commit 7b0fc6e
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 16 deletions.
9 changes: 8 additions & 1 deletion gcloud/datastore/_implicit_environ.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,8 +250,15 @@ def dataset_id():
"""Return the implicit default dataset ID."""
return _determine_default_dataset_id()

@_lazy_property_deco
@staticmethod
def connection():
"""Return the implicit default connection.."""
return get_connection()

def __init__(self, connection=None, dataset_id=None, implicit=False):
self.connection = connection
if connection is not None or not implicit:
self.connection = connection
if dataset_id is not None or not implicit:
self.dataset_id = dataset_id

Expand Down
34 changes: 19 additions & 15 deletions gcloud/datastore/test__implicit_environ.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ def test_func():
self.assertEqual(lazy_prop._name, 'test_func')


class Test_lazy_loaded_dataset_id(unittest2.TestCase):
class Test_lazy_loading(unittest2.TestCase):

def setUp(self):
from gcloud.datastore._testing import _setup_defaults
Expand All @@ -354,15 +354,6 @@ def tearDown(self):
from gcloud.datastore._testing import _tear_down_defaults
_tear_down_defaults(self)

def test_prop_default(self):
from gcloud.datastore import _implicit_environ
from gcloud.datastore._implicit_environ import _DefaultsContainer
from gcloud.datastore._implicit_environ import _LazyProperty

self.assertTrue(isinstance(_DefaultsContainer.dataset_id,
_LazyProperty))
self.assertEqual(_implicit_environ._DEFAULTS.dataset_id, None)

def test_prop_on_wrong_class(self):
from gcloud.datastore._implicit_environ import _LazyProperty

Expand All @@ -376,7 +367,7 @@ class FakeEnv(object):
self.assertTrue(FakeEnv.dataset_id is data_prop)
self.assertTrue(FakeEnv().dataset_id is data_prop)

def test_prop_descriptor(self):
def test_descriptor_for_dataset_id(self):
from gcloud._testing import _Monkey
from gcloud.datastore import _implicit_environ

Expand All @@ -385,17 +376,30 @@ def test_prop_descriptor(self):

DEFAULT = object()

def mock_default():
return DEFAULT

with _Monkey(_implicit_environ,
_determine_default_dataset_id=mock_default):
_determine_default_dataset_id=lambda: DEFAULT):
lazy_loaded = _implicit_environ._DEFAULTS.dataset_id

self.assertEqual(lazy_loaded, DEFAULT)
self.assertTrue(
'dataset_id' in _implicit_environ._DEFAULTS.__dict__)

def test_descriptor_for_connection(self):
from gcloud._testing import _Monkey
from gcloud.datastore import _implicit_environ

self.assertFalse(
'connection' in _implicit_environ._DEFAULTS.__dict__)

DEFAULT = object()

with _Monkey(_implicit_environ, get_connection=lambda: DEFAULT):
lazy_loaded = _implicit_environ._DEFAULTS.connection

self.assertEqual(lazy_loaded, DEFAULT)
self.assertTrue(
'connection' in _implicit_environ._DEFAULTS.__dict__)


class Test_get_connection(unittest2.TestCase):

Expand Down

0 comments on commit 7b0fc6e

Please sign in to comment.