blob: 6fc8d30dae2f208a9552093fecd729579bbb386c [file] [log] [blame]
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
""" Runs a series of tests on a file which maps old builder names to new builder
names. """
import json
import os
import sys
EXPECTED_DIR = os.path.join(os.path.dirname(__file__), 'expected')
def VerifyMapping(old_name, new_name, slaves_cfg, mapping):
""" Run assertions to verify that the mapping from an old builder name to a
new builder name is valid. """
try:
# First, is the old name actually a builder name?
assert os.path.isfile(os.path.join(EXPECTED_DIR, old_name))
# Trybots should maintain the trybot suffix.
if old_name.endswith('Trybot'):
assert new_name.endswith('Trybot')
else:
# If the builder isn't a trybot, it should be explicitly listed in
# slaves.cfg.
assert new_name in slaves_cfg
# Assert that the new builder name isn't duplicated.
match_count = 0
for val in mapping.itervalues():
if val == new_name:
match_count += 1
assert match_count == 1
# ADD YOUR ASSERTIONS HERE
except Exception:
print 'Failed assertion for (%s to %s)' % (old_name, new_name)
raise
def main(argv):
if len(argv) != 2:
raise Exception('Invalid arguments given; you must provide a mapping file.')
with open(argv[1]) as f:
mapping = json.load(f)
slaves_cfg_file = os.path.join('master', 'slaves.cfg')
with open(slaves_cfg_file) as f:
slaves_cfg = f.read()
for old_name, new_name in mapping.iteritems():
VerifyMapping(old_name, new_name, slaves_cfg, mapping)
if '__main__' == __name__:
sys.exit(main(sys.argv))