blob: 7b2d7bd2a969e2ca988c54c252bac48080ee71df [file] [log] [blame]
"""\
Logic for control file generation.
"""
__author__ = 'showard@google.com (Steve Howard)'
import os
import frontend.settings
AUTOTEST_DIR = os.path.abspath(os.path.join(
os.path.dirname(frontend.settings.__file__), '..'))
KERNEL_INSTALL_TEMPLATE = """\
def step_init():
job.next_step([step_test])
testkernel = job.kernel('%(kernel)s')
%(kernel_config_line)s
testkernel.install()
testkernel.boot(args='%(kernel_args)s')
def step_test():
"""
def kernel_config_line(kernel, platform):
if (not kernel.endswith('.rpm') and platform and
platform.kernel_config):
return "testkernel.config('%s')" % platform.kernel_config
return ''
def read_control_file(test):
control_file = open(os.path.join(AUTOTEST_DIR, test.path))
control_contents = control_file.read()
control_file.close()
return control_contents
def get_kernel_stanza(kernel, platform, kernel_args):
return KERNEL_INSTALL_TEMPLATE % {
'kernel' : kernel,
'kernel_config_line' : kernel_config_line(kernel, platform),
'kernel_args' : kernel_args}
def get_tests_stanza(tests):
return ''.join(read_control_file(test) for test in tests)
def indent_text(text, indent):
lines = [indent + line for line in text.splitlines()]
return '\n'.join(lines)
def generate_client_control(tests, kernel=None, platform=None):
control_file = ''
indent = ''
if kernel:
control_file = get_kernel_stanza(kernel, platform, '')
indent = '\t'
control_file += indent_text(get_tests_stanza(tests), indent)
return control_file
def generate_server_control(tests):
return get_tests_stanza(tests)