#!/usr/bin/env python ## $Id$ # This tests whether the most basic mechanisms are working Also whether stderr # output is reported correctly Also tests if water levels are working # correctly from boinc import * class UserUC(User): def __init__(self): User.__init__(self) self.project_prefs = "\nfoobar\n" self.global_prefs = """ 0 2 1 400000 """ class WorkUC(Work): def __init__(self, redundancy=2): Work.__init__(self) self.wu_template = "uc_wu" self.result_template = "uc_result" self.redundancy = redundancy self.delay_bound = 5*redundancy self.input_files = ['input'] # # Say that 1 WU takes 1 day on a ref comp # - note: for test_1sec these values are too high so if you want to # add these back, make them smaller of make test_1sec # request more work # self.rsc_fpops = 86400*1e9/2 # self.rsc_iops = 86400*1e9/2 # self.rsc_disk = 10e8 class ResultUC: def __init__(self): self.server_state = RESULT_SERVER_STATE_OVER self.client_state = RESULT_FILES_UPLOADED self.outcome = RESULT_OUTCOME_SUCCESS self.stderr_out = MATCH_REGEXPS([ """ APP: upper_case: starting, argc \\d+ APP: upper_case: argv[[]0[]] is upper_case APP: upper_case ending, wrote \\d+ chars"""]) # self.exit_status = 0 class ResultUCError: def __init__(self): self.server_state = RESULT_SERVER_STATE_OVER self.client_state = RESULT_COMPUTE_DONE self.outcome = RESULT_OUTCOME_CLIENT_ERROR self.stderr_out = MATCH_REGEXPS([ """ APP: upper_case: starting, argc \\d+"""]) class ProjectUC(Project): def __init__(self, works=None, users=None, hosts=None, short_name=None, long_name=None, redundancy=2, resource_share=1): Project.__init__(self, appname = 'upper_case', works = works or [WorkUC(redundancy=redundancy)], users = users or [UserUC()], hosts = hosts, short_name=short_name, long_name=long_name, redundancy=redundancy, resource_share=resource_share ) def check(self, result=ResultUC()): '''Check results uploaded correctly''' self.sched_run('validate_test') self.check_results(result) self.check_files_match("upload/uc_wu_%d_0", "uc_correct_output", count=self.redundancy) self.sched_run('assimilator') self.sched_run('file_deleter') self.check_deleted("download/input") self.check_deleted("upload/uc_wu_%d_0", count=self.redundancy) def check_client_error(self, result=ResultUCError()): '''Check no results uploaded''' self.check_deleted("upload/uc_wu_%d_0", count=self.redundancy) self.sched_run('validate_test') self.check_results(result) self.sched_run('assimilator') self.sched_run('file_deleter') def run(self): self.install() self.sched_install('feeder') self.start_servers() if __name__ == '__main__': test_msg("standard upper_case application"); ProjectUC() run_check_all()