Exemplo n.º 1
0
        public void Run(string[] args)
        {
            SubmissionWorker w = new SubmissionWorker(IntPtr.Zero, 0);

            w.ProgressChanged           += new ProgressChangedEventHandler(worker_ProgressChanged);
            w.WorkerReportsProgress      = true;
            w.WorkerSupportsCancellation = false;

            Configuration config;

            if (args.Count() == 1)
            {
                if (args[0] == "-h" || args[0] == "--help" || args[0] == "/?")
                {
                    Console.WriteLine("Usage: ClusterSubmit [config-file]");
                    return;
                }
                else
                {
                    config = new Configuration(args[0]);
                }
            }
            else
            {
                config = new Configuration("config.xml");
            }


            string executable = findBinary(config.z3_drop_dir, config.z3_release_dir, config.z3_exe);

            if (executable == "")
            {
                Console.WriteLine(now() + ": Z3 not found.");
                return;
            }
            else if (File.Exists("last_binary"))
            {
                FileStream   lf   = File.OpenRead("last_binary");
                StreamReader sr   = new StreamReader(lf);
                long         last = Convert.ToInt64(sr.ReadLine());
                if (last >= File.GetLastWriteTime(executable).ToFileTimeUtc())
                {
                    Console.WriteLine(now() + ": No new binary.");
                    return;
                }
                sr.Close();
                lf.Close();
            }

            bool haveBinId = false;
            int  binId     = 0;

            try
            {
                string bestCluster = SubmissionWorker.FindCluster(config.cluster, config.alternativeClusters);
                Console.WriteLine(now() + ": Submitting job to " + bestCluster + " with the following binary: " + executable);

                w.UploadBinary(config.db, executable, ref haveBinId, ref binId);

                string sExecutor = "";
                int    jid       =
                    w.SetupExperiment(config.db, config.category, config.sharedDir, config.memout, config.timeout, config.executor, config.parameters,
                                      bestCluster, config.nodegroup, config.locality, config.minResources, config.maxResources, config.username, config.priority, config.extension, config.note, config.jobTemplate, config.jobTimeout, config.taskTimeout, ref haveBinId, ref binId, ref sExecutor);
                w.SubmitHPCJob(config.db, true, jid, config.cluster, config.nodegroup, config.priority, config.locality, config.minResources, config.maxResources, config.sharedDir, sExecutor, config.jobTemplate, config.jobTimeout, config.taskTimeout);

                saveBinaryDate(executable);

                uint retries = 0;
                if (File.Exists(config.fuzzer_target))
                {
retry:
                    if (File.GetLastWriteTime(executable) > File.GetLastWriteTime(config.fuzzer_target))
                    {
                        try
                        {
                            File.Copy(executable, config.fuzzer_target, true);
                        }
                        catch (Exception ex)
                        {
                            retries++;
                            if (retries < config.fuzzer_max_retries)
                            {
                                goto retry;
                            }
                            else
                            {
                                throw ex;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(now() + ": Exception caught: " + ex.Message);
            }
        }
Exemplo n.º 2
0
        private void worker_DoWork(object sender, DoWorkEventArgs e)
        {
            SubmissionWorker w = (SubmissionWorker)sender;

            Object[] args = (Object[])e.Argument;

            string cmd = (string)args[0];

            try
            {
                if (cmd == "Connect")
                {
                    returnSQL = w.Connect((string)args[1]);
                }
                else if (cmd == "Disconnect")
                {
                    w.Disconnect((SqlConnection)args[1]);
                }
                else if (cmd == "Upload")
                {
                    w.UploadBinary((string)args[1], (string)args[2], ref haveBinId, ref binId);
                }
                else if (cmd == "Submit")
                {
                    string sExecutor = "";
                    int    jobid     =
                        w.SetupExperiment((string)args[1], (string)args[2], (string)args[3],
                                          (string)args[4], (string)args[5], (string)args[6], (string)args[7],
                                          (string)args[8], (string)args[9], (string)args[10], (string)args[11], (string)args[12],
                                          (string)args[13], (int)args[14], (string)args[15], (string)args[16],
                                          (string)args[17], (int)args[18], (int)args[19],
                                          ref haveBinId, ref binId, ref sExecutor);
                    w.SubmitHPCJob((string)args[1], true, jobid, (string)args[8], (string)args[9], (int)args[14],
                                   (string)args[10], (string)args[11], (string)args[12],
                                   (string)args[3], sExecutor, (string)args[17], (int)args[18], (int)args[19]);

                    // e.Result = "1 experiment with " + jobs + " jobs submitted.";
                }
                else if (cmd == "Copy")
                {
                    w.Copy((string)args[1], (string)args[2], (string)args[3], ((string)args[4] == "True"));
                }
                else if (cmd == "Reinforce")
                {
                    w.Reinforce((string)args[1], (int)args[2], (string)args[3], (int)args[4], (int)args[5], (string)args[6], (int)args[7], (int)args[8]);
                }
                else if (cmd == "Recovery")
                {
                    w.SubmitHPCRecoveryJob((string)args[1], (int)args[2], (string)args[3],
                                           (int)args[4], (int)args[5], (string)args[6], (string)args[7],
                                           (int)args[8], (int)args[9]);
                }
                else if (cmd == "Catchall")
                {
                    w.SubmitCatchall((string)args[1], (string)args[2], (string)args[3], (int)args[4],
                                     (string)args[5], (string)args[6], (string)args[7], (string)args[8],
                                     (string)args[9], (int)args[10], (int)args[11]);
                }
                else
                {
                    throw new Exception("Unknown submission operation: " + cmd);
                }
            }
            catch (Exception ex)
            {
                lastError = ex;
            }
        }