| Index: appengine/swarming/server/bot_code_test.py
|
| diff --git a/appengine/swarming/server/bot_code_test.py b/appengine/swarming/server/bot_code_test.py
|
| index 46218e519aea147fe0f27195af850d718d31d1c7..c2153de09d1c974985874cdc59afd6cd1915fd9e 100755
|
| --- a/appengine/swarming/server/bot_code_test.py
|
| +++ b/appengine/swarming/server/bot_code_test.py
|
| @@ -10,12 +10,14 @@ import re
|
| import subprocess
|
| import sys
|
| import tempfile
|
| +import time
|
| import unittest
|
| import zipfile
|
|
|
| import test_env
|
| test_env.setup_test_env()
|
|
|
| +from google.appengine.ext import ndb
|
| from components import auth
|
| from test_support import test_case
|
|
|
| @@ -40,6 +42,7 @@ class BotManagementTest(test_case.TestCase):
|
| auth, 'get_current_identity',
|
| lambda: auth.Identity(auth.IDENTITY_USER, 'joe@localhost'))
|
|
|
| +
|
| def test_get_bootstrap(self):
|
| def get_self_config_mock(path, revision=None, store_last_good=False):
|
| self.assertEqual('scripts/bootstrap.py', path)
|
| @@ -94,7 +97,37 @@ class BotManagementTest(test_case.TestCase):
|
| self.assertEqual(expected, additionals)
|
|
|
| def test_get_swarming_bot_zip(self):
|
| + local_mc = {'store': {}, 'reads': 0, 'writes': 0}
|
| +
|
| + @ndb.tasklet
|
| + def mock_memcache_get(version, desc, part=None):
|
| + value = local_mc['store'].get(bot_code.bot_key(version, desc, part))
|
| + if value is not None:
|
| + local_mc['reads'] += 1
|
| + raise ndb.Return(value)
|
| +
|
| + @ndb.tasklet
|
| + def mock_memcache_set(value, version, desc, part=None):
|
| + local_mc['writes'] += 1
|
| + key = bot_code.bot_key(version, desc, part)
|
| + local_mc['store'][key] = value
|
| + return ndb.Return(None)
|
| +
|
| + self.mock(bot_code, 'bot_memcache_set', mock_memcache_set)
|
| + self.mock(bot_code, 'bot_memcache_get', mock_memcache_get)
|
| + self.mock(bot_code, 'MAX_MEMCACHED_SIZE_BYTES', 100000)
|
| +
|
| + self.assertEqual(0, local_mc['writes'])
|
| zipped_code = bot_code.get_swarming_bot_zip('http://localhost')
|
| + self.assertEqual(0, local_mc['reads'])
|
| + self.assertNotEqual(0, local_mc['writes'])
|
| +
|
| + # Make sure that we read from memcached if we get it again
|
| + zipped_code_copy = bot_code.get_swarming_bot_zip('http://localhost')
|
| + self.assertEqual(local_mc['writes'], local_mc['reads'])
|
| + # Why not assertEqual? Don't want to dump ~1MB of data if this fails.
|
| + self.assertTrue(zipped_code == zipped_code_copy)
|
| +
|
| # Ensure the zip is valid and all the expected files are present.
|
| with zipfile.ZipFile(StringIO.StringIO(zipped_code), 'r') as zip_file:
|
| for i in bot_archive.FILES:
|
| @@ -120,6 +153,7 @@ class BotManagementTest(test_case.TestCase):
|
| finally:
|
| file_path.rmtree(temp_dir)
|
|
|
| +
|
| def test_bootstrap_token(self):
|
| tok = bot_code.generate_bootstrap_token()
|
| self.assertEqual(
|
|
|