Skip to content

Commit 6ff634a

Browse files
committed
Merge pull request #665 from dhermes/lazy-loading-attempt-2
Adding datastore _DEFAULTS stubs in all tests that use it.
2 parents 998c724 + 5e281dd commit 6ff634a

File tree

11 files changed

+158
-105
lines changed

11 files changed

+158
-105
lines changed

gcloud/datastore/_implicit_environ.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ class _DefaultsContainer(object):
3838
:param dataset_id: Persistent implied dataset ID from environment.
3939
"""
4040

41-
def __init__(self, connection=None, dataset_id=None):
41+
def __init__(self, connection=None, dataset_id=None, implicit=False):
42+
self.implicit = implicit
4243
self.connection = connection
4344
self.dataset_id = dataset_id
4445

@@ -107,4 +108,4 @@ def get_default_dataset_id():
107108
return _DEFAULTS.dataset_id
108109

109110

110-
_DEFAULTS = _DefaultsContainer()
111+
_DEFAULTS = _DefaultsContainer(implicit=True)

gcloud/datastore/_testing.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Copyright 2014 Google Inc. All rights reserved.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
"""Shared datastore testing utilities."""
16+
17+
from gcloud._testing import _Monkey
18+
from gcloud.datastore import _implicit_environ
19+
from gcloud.datastore._implicit_environ import _DefaultsContainer
20+
21+
22+
def _monkey_defaults(*args, **kwargs):
23+
mock_defaults = _DefaultsContainer(*args, **kwargs)
24+
return _Monkey(_implicit_environ, _DEFAULTS=mock_defaults)
25+
26+
27+
def _setup_defaults(test_case):
28+
test_case._replaced_defaults = _implicit_environ._DEFAULTS
29+
_implicit_environ._DEFAULTS = _DefaultsContainer()
30+
31+
32+
def _tear_down_defaults(test_case):
33+
_implicit_environ._DEFAULTS = test_case._replaced_defaults

gcloud/datastore/test___init__.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,12 @@
1818
class Test_set_default_dataset_id(unittest2.TestCase):
1919

2020
def setUp(self):
21-
from gcloud.datastore import _implicit_environ
22-
self._replaced_defaults = _implicit_environ._DEFAULTS
23-
_implicit_environ._DEFAULTS = _implicit_environ._DefaultsContainer(
24-
None, None)
21+
from gcloud.datastore._testing import _setup_defaults
22+
_setup_defaults(self)
2523

2624
def tearDown(self):
27-
from gcloud.datastore import _implicit_environ
28-
_implicit_environ._DEFAULTS = self._replaced_defaults
25+
from gcloud.datastore._testing import _tear_down_defaults
26+
_tear_down_defaults(self)
2927

3028
def _callFUT(self, dataset_id=None):
3129
from gcloud.datastore import set_default_dataset_id
@@ -276,14 +274,12 @@ def test_set_implicit_three_env_appengine_and_compute(self):
276274
class Test_set_default_connection(unittest2.TestCase):
277275

278276
def setUp(self):
279-
from gcloud.datastore import _implicit_environ
280-
self._replaced_defaults = _implicit_environ._DEFAULTS
281-
_implicit_environ._DEFAULTS = _implicit_environ._DefaultsContainer(
282-
None, None)
277+
from gcloud.datastore._testing import _setup_defaults
278+
_setup_defaults(self)
283279

284280
def tearDown(self):
285-
from gcloud.datastore import _implicit_environ
286-
_implicit_environ._DEFAULTS = self._replaced_defaults
281+
from gcloud.datastore._testing import _tear_down_defaults
282+
_tear_down_defaults(self)
287283

288284
def _callFUT(self, connection=None):
289285
from gcloud.datastore import set_default_connection

gcloud/datastore/test__implicit_environ.py

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@
1717

1818
class Test_get_default_connection(unittest2.TestCase):
1919

20+
def setUp(self):
21+
from gcloud.datastore._testing import _setup_defaults
22+
_setup_defaults(self)
23+
24+
def tearDown(self):
25+
from gcloud.datastore._testing import _tear_down_defaults
26+
_tear_down_defaults(self)
27+
2028
def _callFUT(self):
2129
from gcloud.datastore._implicit_environ import get_default_connection
2230
return get_default_connection()
@@ -25,17 +33,23 @@ def test_default(self):
2533
self.assertEqual(self._callFUT(), None)
2634

2735
def test_preset(self):
28-
from gcloud._testing import _Monkey
29-
from gcloud.datastore import _implicit_environ
36+
from gcloud.datastore._testing import _monkey_defaults
3037

3138
SENTINEL = object()
32-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(SENTINEL, None)
33-
with _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS):
39+
with _monkey_defaults(connection=SENTINEL):
3440
self.assertEqual(self._callFUT(), SENTINEL)
3541

3642

3743
class Test_get_default_dataset_id(unittest2.TestCase):
3844

45+
def setUp(self):
46+
from gcloud.datastore._testing import _setup_defaults
47+
_setup_defaults(self)
48+
49+
def tearDown(self):
50+
from gcloud.datastore._testing import _tear_down_defaults
51+
_tear_down_defaults(self)
52+
3953
def _callFUT(self):
4054
from gcloud.datastore._implicit_environ import get_default_dataset_id
4155
return get_default_dataset_id()
@@ -44,10 +58,8 @@ def test_default(self):
4458
self.assertEqual(self._callFUT(), None)
4559

4660
def test_preset(self):
47-
from gcloud._testing import _Monkey
48-
from gcloud.datastore import _implicit_environ
61+
from gcloud.datastore._testing import _monkey_defaults
4962

5063
SENTINEL = object()
51-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(None, SENTINEL)
52-
with _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS):
64+
with _monkey_defaults(dataset_id=SENTINEL):
5365
self.assertEqual(self._callFUT(), SENTINEL)

gcloud/datastore/test_api.py

Lines changed: 44 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,8 @@ def _callFUT(self, passed=_MARKER, first_key=None):
2626
return _require_dataset_id(dataset_id=passed, first_key=first_key)
2727

2828
def _monkey(self, dataset_id):
29-
from gcloud.datastore import _implicit_environ
30-
from gcloud._testing import _Monkey
31-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(None, dataset_id)
32-
return _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS)
29+
from gcloud.datastore._testing import _monkey_defaults
30+
return _monkey_defaults(dataset_id=dataset_id)
3331

3432
def test_implicit_unset_wo_keys(self):
3533
with self._monkey(None):
@@ -121,10 +119,8 @@ def _callFUT(self, passed=_MARKER):
121119
return _require_connection(passed)
122120

123121
def _monkey(self, connection):
124-
from gcloud.datastore import _implicit_environ
125-
from gcloud._testing import _Monkey
126-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(connection, None)
127-
return _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS)
122+
from gcloud.datastore._testing import _monkey_defaults
123+
return _monkey_defaults(connection=connection)
128124

129125
def test_implicit_unset(self):
130126
with self._monkey(None):
@@ -164,6 +160,14 @@ def test_implicit_set_passed_explicitly(self):
164160

165161
class Test_get_function(unittest2.TestCase):
166162

163+
def setUp(self):
164+
from gcloud.datastore._testing import _setup_defaults
165+
_setup_defaults(self)
166+
167+
def tearDown(self):
168+
from gcloud.datastore._testing import _tear_down_defaults
169+
_tear_down_defaults(self)
170+
167171
def _callFUT(self, keys, missing=None, deferred=None,
168172
connection=None, dataset_id=None):
169173
from gcloud.datastore.api import get
@@ -455,10 +459,9 @@ def test_hit_multiple_keys_different_dataset(self):
455459
dataset_id=DATASET_ID1)
456460

457461
def test_implicit_wo_transaction(self):
458-
from gcloud.datastore import _implicit_environ
462+
from gcloud.datastore._testing import _monkey_defaults
459463
from gcloud.datastore.key import Key
460464
from gcloud.datastore.test_connection import _Connection
461-
from gcloud._testing import _Monkey
462465

463466
DATASET_ID = 'DATASET'
464467
KIND = 'Kind'
@@ -473,9 +476,8 @@ def test_implicit_wo_transaction(self):
473476
CUSTOM_CONNECTION = _Connection(entity_pb)
474477

475478
key = Key(KIND, ID, dataset_id=DATASET_ID)
476-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(CUSTOM_CONNECTION,
477-
DATASET_ID)
478-
with _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS):
479+
with _monkey_defaults(connection=CUSTOM_CONNECTION,
480+
dataset_id=DATASET_ID):
479481
result, = self._callFUT([key])
480482

481483
expected_called_with = {
@@ -566,6 +568,14 @@ def test_max_loops(self):
566568

567569
class Test_put_function(unittest2.TestCase):
568570

571+
def setUp(self):
572+
from gcloud.datastore._testing import _setup_defaults
573+
_setup_defaults(self)
574+
575+
def tearDown(self):
576+
from gcloud.datastore._testing import _tear_down_defaults
577+
_tear_down_defaults(self)
578+
569579
def _callFUT(self, entities, connection=None, dataset_id=None):
570580
from gcloud.datastore.api import put
571581
return put(entities, connection=connection, dataset_id=dataset_id)
@@ -668,8 +678,7 @@ def test_existing_batch_w_completed_key(self):
668678
self.assertEqual(len(CURR_BATCH.mutation.delete), 0)
669679

670680
def test_implicit_connection(self):
671-
from gcloud._testing import _Monkey
672-
from gcloud.datastore import _implicit_environ
681+
from gcloud.datastore._testing import _monkey_defaults
673682
from gcloud.datastore.test_batch import _Connection
674683
from gcloud.datastore.test_batch import _Entity
675684
from gcloud.datastore.test_batch import _Key
@@ -680,8 +689,7 @@ def test_implicit_connection(self):
680689
entity = _Entity(foo=u'bar')
681690
key = entity.key = _Key(_DATASET)
682691

683-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(connection, None)
684-
with _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS):
692+
with _monkey_defaults(connection=connection):
685693
# Set up Batch on stack so we can check it is used.
686694
with _NoCommitBatch(_DATASET, connection) as CURR_BATCH:
687695
result = self._callFUT([entity])
@@ -700,6 +708,14 @@ def test_implicit_connection(self):
700708

701709
class Test_delete_function(unittest2.TestCase):
702710

711+
def setUp(self):
712+
from gcloud.datastore._testing import _setup_defaults
713+
_setup_defaults(self)
714+
715+
def tearDown(self):
716+
from gcloud.datastore._testing import _tear_down_defaults
717+
_tear_down_defaults(self)
718+
703719
def _callFUT(self, keys, connection=None, dataset_id=None):
704720
from gcloud.datastore.api import delete
705721
return delete(keys, connection=connection, dataset_id=dataset_id)
@@ -761,8 +777,7 @@ def test_no_batch(self):
761777
self.assertEqual(list(mutation.delete), [key.to_protobuf()])
762778

763779
def test_wo_batch_w_key_different_than_default_dataset_id(self):
764-
from gcloud._testing import _Monkey
765-
from gcloud.datastore import _implicit_environ
780+
from gcloud.datastore._testing import _monkey_defaults
766781
from gcloud.datastore.test_batch import _Connection
767782
from gcloud.datastore.test_batch import _Key
768783

@@ -772,9 +787,8 @@ def test_wo_batch_w_key_different_than_default_dataset_id(self):
772787
connection = _Connection()
773788
key = _Key(_DATASET)
774789

775-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(connection,
776-
_DEFAULT_DATASET)
777-
with _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS):
790+
with _monkey_defaults(connection=connection,
791+
dataset_id=_DEFAULT_DATASET):
778792
result = self._callFUT([key])
779793
self.assertEqual(result, None)
780794
self.assertEqual(len(connection._committed), 1)
@@ -825,8 +839,7 @@ def test_w_existing_transaction(self):
825839
self.assertEqual(len(connection._committed), 0)
826840

827841
def test_implicit_connection_and_dataset_id(self):
828-
from gcloud._testing import _Monkey
829-
from gcloud.datastore import _implicit_environ
842+
from gcloud.datastore._testing import _monkey_defaults
830843
from gcloud.datastore.test_batch import _Connection
831844
from gcloud.datastore.test_batch import _Key
832845

@@ -835,9 +848,7 @@ def test_implicit_connection_and_dataset_id(self):
835848
connection = _Connection()
836849
key = _Key(_DATASET)
837850

838-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(connection,
839-
_DATASET)
840-
with _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS):
851+
with _monkey_defaults(connection=connection, dataset_id=_DATASET):
841852
# Set up Batch on stack so we can check it is used.
842853
with _NoCommitBatch(_DATASET, connection) as CURR_BATCH:
843854
result = self._callFUT([key])
@@ -875,32 +886,28 @@ def test_w_explicit_connection(self):
875886
self.assertEqual(len(CONNECTION._called_key_pbs), NUM_IDS)
876887

877888
def test_w_implicit_connection(self):
878-
from gcloud.datastore import _implicit_environ
889+
from gcloud.datastore._testing import _monkey_defaults
879890
from gcloud.datastore.key import Key
880891
from gcloud.datastore.test_connection import _Connection
881-
from gcloud._testing import _Monkey
882892

883893
CUSTOM_CONNECTION = _Connection()
884894
NUM_IDS = 2
885-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(CUSTOM_CONNECTION,
886-
'DATASET')
887-
with _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS):
895+
with _monkey_defaults(connection=CUSTOM_CONNECTION,
896+
dataset_id='DATASET'):
888897
INCOMPLETE_KEY = Key('KIND')
889898
result = self._callFUT(INCOMPLETE_KEY, NUM_IDS)
890899

891900
# Check the IDs returned.
892901
self.assertEqual([key.id for key in result], list(range(NUM_IDS)))
893902

894903
def test_with_already_completed_key(self):
895-
from gcloud.datastore import _implicit_environ
904+
from gcloud.datastore._testing import _monkey_defaults
896905
from gcloud.datastore.key import Key
897906
from gcloud.datastore.test_connection import _Connection
898-
from gcloud._testing import _Monkey
899907

900908
CUSTOM_CONNECTION = _Connection()
901-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(CUSTOM_CONNECTION,
902-
'DATASET')
903-
with _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS):
909+
with _monkey_defaults(connection=CUSTOM_CONNECTION,
910+
dataset_id='DATASET'):
904911
COMPLETE_KEY = Key('KIND', 1234)
905912
self.assertRaises(ValueError, self._callFUT,
906913
COMPLETE_KEY, 2)

gcloud/datastore/test_batch.py

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,9 @@ def _makeOne(self, dataset_id=None, connection=None):
2727
connection=connection)
2828

2929
def test_ctor_missing_required(self):
30-
from gcloud._testing import _Monkey
31-
from gcloud.datastore import _implicit_environ
30+
from gcloud.datastore._testing import _monkey_defaults
3231

33-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(None, None)
34-
with _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS):
32+
with _monkey_defaults():
3533
self.assertRaises(ValueError, self._makeOne)
3634
self.assertRaises(ValueError, self._makeOne, dataset_id=object())
3735
self.assertRaises(ValueError, self._makeOne, connection=object())
@@ -48,15 +46,12 @@ def test_ctor_explicit(self):
4846
self.assertEqual(batch._auto_id_entities, [])
4947

5048
def test_ctor_implicit(self):
51-
from gcloud._testing import _Monkey
52-
from gcloud.datastore import _implicit_environ
49+
from gcloud.datastore._testing import _monkey_defaults
5350
from gcloud.datastore._datastore_v1_pb2 import Mutation
5451
_DATASET = 'DATASET'
5552
CONNECTION = _Connection()
5653

57-
MOCK_DEFAULTS = _implicit_environ._DefaultsContainer(CONNECTION,
58-
_DATASET)
59-
with _Monkey(_implicit_environ, _DEFAULTS=MOCK_DEFAULTS):
54+
with _monkey_defaults(connection=CONNECTION, dataset_id=_DATASET):
6055
batch = self._makeOne()
6156

6257
self.assertEqual(batch.dataset_id, _DATASET)

gcloud/datastore/test_entity.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,12 @@
2222
class TestEntity(unittest2.TestCase):
2323

2424
def setUp(self):
25-
from gcloud.datastore import _implicit_environ
26-
self._replaced_defaults = _implicit_environ._DEFAULTS
27-
_implicit_environ._DEFAULTS = _implicit_environ._DefaultsContainer(
28-
None, None)
25+
from gcloud.datastore._testing import _setup_defaults
26+
_setup_defaults(self)
2927

3028
def tearDown(self):
31-
from gcloud.datastore import _implicit_environ
32-
_implicit_environ._DEFAULTS = self._replaced_defaults
29+
from gcloud.datastore._testing import _tear_down_defaults
30+
_tear_down_defaults(self)
3331

3432
def _getTargetClass(self):
3533
from gcloud.datastore.entity import Entity

0 commit comments

Comments
 (0)