Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2271)

Unified Diff: appengine/auth_service/config_test.py

Issue 2840053003: auth_service: Fetch revisions of all configs (for UI) at once. (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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.

Powered by Google App Engine
This is Rietveld 408576698