<?php {
    // $Id$

    include_once("test.inc");

    class ProjectUC extends Project
    {
        var $work;
        var $host;
        var $user;

        function ProjectUC() {
            $this->Project();
            $this->add_core_and_version();
            $this->add_app_and_version("upper_case");

            $this->user = new User();
            $this->user->project_prefs = "<project_specific>\nfoobar\n</project_specific>\n";
            $this->user->global_prefs = "<venue name=\"home\">\n".
                "<work_buf_min_days>0</work_buf_min_days>\n".
                "<work_buf_max_days>2</work_buf_max_days>\n".
                "<disk_interval>1</disk_interval>\n".
                "<run_on_batteries/>\n".
                "<max_bytes_sec_down>400000</max_bytes_sec_down>\n".
                "</venue>\n";

            $this->add_user($this->user);
            $this->install();      // must install projects before adding to hosts
            $this->install_feeder();

            $this->host = new Host();
            $this->host->add_user($this->user, $this);
            $this->host->install();

            $this->work = new Work();
            $this->work->wu_template = "uc_wu";
            $this->work->result_template = "uc_result";
            $this->work->redundancy = 2;
            $this->work->delay_bound = 10;
            // Say that 1 WU takes 1 day on a ref comp
            $this->work->rsc_fpops = 86400*1e9/2;
            $this->work->rsc_iops = 86400*1e9/2;
            $this->work->rsc_disk = 10e8;
            array_push($this->work->input_files, "input");
            $this->work->install($this);
        }

        function start_servers_and_host()
        {
            $this->start_servers();
            $this->host->run("-exit_when_idle -skip_cpu_benchmarks");
        }

        function validate_all_and_stop()
        {
            $this->validate($this->work->redundancy);
            $result->server_state = RESULT_SERVER_STATE_OVER;
            $result->stderr_out = "APP: upper_case: starting, argc 1
APP: upper_case: argv[0] is upper_case
APP: upper_case ending, wrote ";
            $result->exit_status = 0;
            $this->check_results(2, $result);
            $this->compare_file("uc_wu_0_0", "uc_correct_output");
            $this->compare_file("uc_wu_1_0", "uc_correct_output");

            $this->assimilate();
            $this->file_delete();

            $this->check_server_deleted("download/input");
            $this->check_server_deleted("upload/uc_wu_0_0");
            $this->check_server_deleted("upload/uc_wu_1_0");
            $this->stop();
        }
    }
} ?>