Skip to content

Commit 0b602ea

Browse files
committed
Merge pull request #1386 from dhermes/ds-emulator-no-internet
Allowing datastore system test to run on emulator with no connection.
2 parents 3f18953 + 77f488c commit 0b602ea

3 files changed

Lines changed: 31 additions & 7 deletions

File tree

CONTRIBUTING.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,8 @@ Running System Tests
233233
$ DATASTORE_HOST=http://localhost:8471 \
234234
> DATASTORE_DATASET=gcloud-settings-app-id \
235235
> GCLOUD_NO_PRINT=true \
236-
> python system_tests/run_system_test.py --package=datastore
236+
> python system_tests/run_system_test.py \
237+
> --package=datastore --ignore-requirements
237238

238239
and after completion stop the emulator::
239240

system_tests/datastore.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import os
1717
import time
1818

19+
import httplib2
1920
import unittest2
2021

2122
from gcloud._helpers import UTC
@@ -44,6 +45,18 @@ class Config(object):
4445
CLIENT = None
4546

4647

48+
class _EmulatorCreds(object):
49+
"""A mock credential object.
50+
51+
Used to avoid unnecessary token refreshing or reliance on the network
52+
while an emulator is running.
53+
"""
54+
55+
@staticmethod
56+
def create_scoped_required():
57+
return False
58+
59+
4760
def clone_client(client):
4861
# Fool the Client constructor to avoid creating a new connection.
4962
cloned_client = datastore.Client(project=client.project,
@@ -58,8 +71,12 @@ def setUpModule():
5871
client_mod.DATASET = TESTS_DATASET
5972
Config.CLIENT = datastore.Client(namespace=TEST_NAMESPACE)
6073
else:
74+
credentials = _EmulatorCreds()
75+
http = httplib2.Http() # Un-authorized.
6176
Config.CLIENT = datastore.Client(project=EMULATOR_DATASET,
62-
namespace=TEST_NAMESPACE)
77+
namespace=TEST_NAMESPACE,
78+
credentials=credentials,
79+
http=http)
6380

6481

6582
class TestDatastore(unittest2.TestCase):

system_tests/run_system_test.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,18 @@ def get_parser():
4545
parser.add_argument('--package', dest='package',
4646
choices=REQUIREMENTS.keys(),
4747
default='datastore', help='Package to be tested.')
48+
parser.add_argument(
49+
'--ignore-requirements',
50+
dest='ignore_requirements', action='store_true',
51+
help='Ignore the credentials requirement for the test.')
4852
return parser
4953

5054

51-
def run_module_tests(module_name):
52-
# Make sure environ is set before running test.
53-
requirements = REQUIREMENTS[module_name]
54-
system_test_utils.check_environ(*requirements)
55+
def run_module_tests(module_name, ignore_requirements=False):
56+
if not ignore_requirements:
57+
# Make sure environ is set before running test.
58+
requirements = REQUIREMENTS[module_name]
59+
system_test_utils.check_environ(*requirements)
5560

5661
suite = unittest2.TestSuite()
5762
test_mod = TEST_MODULES[module_name]
@@ -68,7 +73,8 @@ def run_module_tests(module_name):
6873
def main():
6974
parser = get_parser()
7075
args = parser.parse_args()
71-
run_module_tests(args.package)
76+
run_module_tests(args.package,
77+
ignore_requirements=args.ignore_requirements)
7278

7379

7480
if __name__ == '__main__':

0 commit comments

Comments
 (0)