Index: appengine/auth_service/config_test.py |
diff --git a/appengine/auth_service/config_test.py b/appengine/auth_service/config_test.py |
index 0a4eefb971777833179aef1429bb13001dafecb6..368fdb18792fcd3f3bb9986009b54c3999ceb5cb 100755 |
--- a/appengine/auth_service/config_test.py |
+++ b/appengine/auth_service/config_test.py |
@@ -16,7 +16,6 @@ from google.appengine.ext import ndb |
from components import config as config_component |
from components import utils |
from components.auth import model |
-from components.config import validation_context |
from test_support import test_case |
from proto import config_pb2 |
@@ -28,25 +27,30 @@ class ConfigTest(test_case.TestCase): |
super(ConfigTest, self).setUp() |
def test_refetch_config(self): |
- # Mock of "current known revision" state. |
- revs = { |
+ initial_revs = { |
'a.cfg': config.Revision('old_a_rev', 'urla'), |
'b.cfg': config.Revision('old_b_rev', 'urlb'), |
'c.cfg': config.Revision('old_c_rev', 'urlc'), |
} |
+ revs = initial_revs.copy() |
bumps = [] |
+ |
def bump_rev(pkg, rev, conf): |
revs[pkg] = rev |
bumps.append((pkg, rev, conf, ndb.in_transaction())) |
return True |
+ @ndb.tasklet |
+ def get_rev_async(pkg): |
+ raise ndb.Return(revs[pkg]) |
+ |
self.mock(config, 'is_remote_configured', lambda: True) |
self.mock(config, '_CONFIG_SCHEMAS', { |
# Will be updated outside of auth db transaction. |
'a.cfg': { |
'proto_class': None, |
- 'revision_getter': lambda: revs['a.cfg'], |
+ 'revision_getter': lambda: get_rev_async('a.cfg'), |
'validator': lambda body: self.assertEqual(body, 'new a body'), |
'updater': lambda rev, conf: bump_rev('a.cfg', rev, conf), |
'use_authdb_transaction': False, |
@@ -54,7 +58,7 @@ class ConfigTest(test_case.TestCase): |
# Will not be changed. |
'b.cfg': { |
'proto_class': None, |
- 'revision_getter': lambda: revs['b.cfg'], |
+ 'revision_getter': lambda: get_rev_async('b.cfg'), |
'validator': lambda _body: True, |
'updater': lambda rev, conf: bump_rev('b.cfg', rev, conf), |
'use_authdb_transaction': False, |
@@ -62,17 +66,23 @@ class ConfigTest(test_case.TestCase): |
# Will be updated inside auth db transaction. |
'c.cfg': { |
'proto_class': None, |
- 'revision_getter': lambda: revs['c.cfg'], |
+ 'revision_getter': lambda: get_rev_async('c.cfg'), |
'validator': lambda body: self.assertEqual(body, 'new c body'), |
'updater': lambda rev, conf: bump_rev('c.cfg', rev, conf), |
'use_authdb_transaction': True, |
}, |
}) |
- self.mock(config, '_fetch_configs', lambda _: { |
+ |
+ # _fetch_configs is called by config.refetch_config(). |
+ configs_to_fetch = { |
'a.cfg': (config.Revision('new_a_rev', 'urla'), 'new a body'), |
'b.cfg': (config.Revision('old_b_rev', 'urlb'), 'old b body'), |
'c.cfg': (config.Revision('new_c_rev', 'urlc'), 'new c body'), |
- }) |
+ } |
+ self.mock(config, '_fetch_configs', lambda _: configs_to_fetch) |
+ |
+ # Old revisions initially. |
+ self.assertEqual(initial_revs, config.get_revisions()) |
# Initial update. |
config.refetch_config() |
@@ -82,6 +92,11 @@ class ConfigTest(test_case.TestCase): |
], bumps) |
del bumps[:] |
+ # Updated revisions now. |
+ self.assertEqual( |
+ {k: v[0] for k, v in configs_to_fetch.iteritems()}, |
+ config.get_revisions()) |
+ |
# Refetch, nothing new. |
config.refetch_config() |
self.assertFalse(bumps) |
@@ -90,7 +105,8 @@ class ConfigTest(test_case.TestCase): |
new_rev = config.Revision('rev', 'url') |
body = 'tarball{url:"a" systems:"b"}' |
self.assertTrue(config._update_imports_config(new_rev, body)) |
- self.assertEqual(new_rev, config._get_imports_config_revision()) |
+ self.assertEqual( |
+ new_rev, config._get_imports_config_revision_async().get_result()) |
def test_validate_ip_whitelist_config_ok(self): |
conf = config_pb2.IPWhitelistConfig( |
@@ -598,16 +614,19 @@ class ConfigTest(test_case.TestCase): |
def test_update_service_config(self): |
# Missing. |
self.assertIsNone(config._get_service_config('abc.cfg')) |
- self.assertIsNone(config._get_service_config_rev('abc.cfg')) |
+ self.assertIsNone( |
+ config._get_service_config_rev_async('abc.cfg').get_result()) |
# Updated. |
rev = config.Revision('rev', 'url') |
self.assertTrue(config._update_service_config('abc.cfg', rev, 'body')) |
self.assertEqual('body', config._get_service_config('abc.cfg')) |
- self.assertEqual(rev, config._get_service_config_rev('abc.cfg')) |
+ self.assertEqual( |
+ rev, config._get_service_config_rev_async('abc.cfg').get_result()) |
# Same body, returns False, though updates rev. |
rev2 = config.Revision('rev2', 'url') |
self.assertFalse(config._update_service_config('abc.cfg', rev2, 'body')) |
- self.assertEqual(rev2, config._get_service_config_rev('abc.cfg')) |
+ self.assertEqual( |
+ rev2, config._get_service_config_rev_async('abc.cfg').get_result()) |
def test_settings_updates(self): |
# Fetch only settings.cfg in this test case. |