public ShowResultsViewModel(ExperimentStatusViewModel st, string sharedDirectory, ExperimentManager manager,
                             AzureExperimentManagerViewModel managerVm, ExperimentListViewModel experimentsVm, RecentValuesStorage recentValues, IUIService uiService)
 {
     if (manager == null)
     {
         throw new ArgumentNullException("manager");
     }
     if (managerVm == null)
     {
         throw new ArgumentNullException(nameof(managerVm));
     }
     if (uiService == null)
     {
         throw new ArgumentNullException("uiService");
     }
     if (experimentsVm == null)
     {
         throw new ArgumentNullException(nameof(experimentsVm));
     }
     this.manager               = manager;
     this.managerVm             = managerVm;
     this.experimentsVm         = experimentsVm;
     this.uiService             = uiService;
     this.statusVm              = st;
     this.id                    = st.ID;
     this.sharedDirectory       = sharedDirectory;
     this.benchmarkTimeout      = st.Definition.BenchmarkTimeout;
     this.jobStatus             = ExperimentExecutionStateVM.Loading;
     this.benchmarkContainerUri = st.Definition.BenchmarkContainerUri;
     this.recentValues          = recentValues;
     RefreshResultsAsync();
 }
        private void Restart(object target, ExecutedRoutedEventArgs e)
        {
            var handle = uiService.StartIndicateLongOperation("Restarting selected experiments...");

            try
            {
                string creator     = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
                int    n           = dataGrid.SelectedItems.Count;
                var    experiments = new ExperimentStatusViewModel[n];
                for (int i = 0; i < n; i++)
                {
                    experiments[i] = (ExperimentStatusViewModel)dataGrid.SelectedItems[i];
                }

                for (int i = 0; i < n; i++)
                {
                    var experiment = experiments[i];
                    var vm         = new NewExperimentViewModel(managerVm, uiService, recentValues, creator, domainResolver);
                    vm.Note = experiment.Note;
                    if (experiment.Definition.BenchmarkContainerUri != ExperimentDefinition.DefaultContainerUri)
                    {
                        vm.BenchmarkContainerUriNotDefault = experiment.Definition.BenchmarkContainerUri;
                        vm.IsDefaultBenchmarkContainerUri  = false;
                    }
                    vm.BenchmarkContainerUri  = experiment.Definition.BenchmarkContainerUri;
                    vm.BenchmarkDirectory     = experiment.Definition.BenchmarkDirectory;
                    vm.Categories             = experiment.Category;
                    vm.Extension              = experiment.Definition.BenchmarkFileExtension;
                    vm.BenchmarkTimeoutSec    = experiment.Definition.BenchmarkTimeout.TotalSeconds;
                    vm.ExperimentTimeoutSec   = experiment.Definition.ExperimentTimeout.TotalSeconds;
                    vm.BenchmarkMemoryLimitMb = experiment.Definition.MemoryLimitMB;
                    vm.Domain                 = experiment.Definition.DomainName;
                    vm.Parameters             = experiment.Definition.Parameters;
                    vm.MaxRepetitions         = experiment.Definition.AdaptiveRunMaxRepetitions;
                    vm.MaxTimeForAdaptiveRuns = experiment.Definition.AdaptiveRunMaxTimeInSeconds;
                    vm.AllowAdaptiveRuns      = experiment.Definition.AdaptiveRunMaxRepetitions != 1 || experiment.Definition.AdaptiveRunMaxTimeInSeconds != 0;
                    vm.Executable             = experiment.Definition.Executable;

                    SubmitNewJob(vm);
                }
            }
            catch (Exception ex)
            {
                uiService.ShowError(ex, "Failed to restart experiments");
            }
            finally
            {
                uiService.StopIndicateLongOperation(handle);
            }
        }
        public Scatterplot(CompareExperimentsViewModel vm, ExperimentStatusViewModel exp1, ExperimentStatusViewModel exp2, double timeout1, double timeout2, double memout1, double memout2, IUIService uiService)
        {
            if (vm == null)
            {
                throw new ArgumentNullException("vm");
            }
            if (exp1 == null)
            {
                throw new ArgumentNullException("exp1");
            }
            if (exp2 == null)
            {
                throw new ArgumentNullException("exp2");
            }
            if (uiService == null)
            {
                throw new ArgumentNullException("uiService");
            }

            this.uiService     = uiService;
            this.StartPosition = FormStartPosition.CenterScreen;
            InitializeComponent();
            this.vm          = vm;
            this.experiment1 = exp1;
            this.experiment2 = exp2;

            string category1 = experiment1.Category == null ? "" : experiment1.Category;
            string category2 = experiment2.Category == null ? "" : experiment2.Category;

            category    = (category1 == category2) ? category1 : category1 + " -vs- " + category2;
            timeoutX    = (uint)timeout1;
            timeoutY    = (uint)timeout2;
            timeoutXmin = timeoutXmax = timeoutX;
            timeoutYmin = timeoutYmax = timeoutY;
            memoutX     = (uint)memout1;
            memoutY     = (uint)memout2;
            UpdateStatus(true);


            vm.PropertyChanged += (s, a) =>
            {
                if (a.PropertyName == nameof(vm.CompareItems))
                {
                    updateTimeouts();
                    SetupChart();
                    RefreshChart();
                }
            };
        }
Esempio n. 4
0
        private async void showReinforcements(object target, ExecutedRoutedEventArgs e)
        {
            var handle = uiService.StartIndicateLongOperation("Calling reinforcements...");

            try
            {
                string creator     = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
                int    n           = dataGrid.SelectedItems.Count;
                var    experiments = new ExperimentStatusViewModel[n];
                for (int i = 0; i < n; i++)
                {
                    experiments[i] = (ExperimentStatusViewModel)dataGrid.SelectedItems[i];
                }

                for (int i = 0; i < n; i++)
                {
                    try
                    {
                        var experiment = experiments[i];
                        await managerVm.Reinforce(experiment.ID, experiment.Definition);
                    }
                    catch (Exception ex)
                    {
                        uiService.ShowError(ex, "Failed to submit an experiment");
                        return;
                    }
                }

                experimentsVm.Refresh();
            }
            catch (Exception ex)
            {
                uiService.ShowError(ex, "Failed to call reinforcements");
            }
            finally
            {
                uiService.StopIndicateLongOperation(handle);
            }
        }
 public ShowResultsViewModel BuildResultsView(ExperimentStatusViewModel st, string directory, ExperimentListViewModel experimentsVm, RecentValuesStorage recentValues)
 {
     return(new ShowResultsViewModel(st, directory, manager, this, experimentsVm, recentValues, uiService));
 }
 public void SaveOutput(string selectedPath, ExperimentStatusViewModel experiment)
 {
     SaveData.SaveOutput(selectedPath, experiment, manager, uiService);
 }
Esempio n. 7
0
        public static async void SaveOutput(string selectedPath, ExperimentStatusViewModel experiment, ExperimentManager manager, IUIService uiService)
        {
            if (experiment == null)
            {
                throw new ArgumentNullException("experiment");
            }
            if (manager == null)
            {
                throw new ArgumentNullException("manager");
            }
            if (uiService == null)
            {
                throw new ArgumentNullException("uiService");
            }

            var handle = uiService.StartIndicateLongOperation("Saving output...");

            try
            {
                string drctry = string.Format(@"{0}\{1}", selectedPath, experiment.ID.ToString());
                await Task.Run(async() =>
                {
                    double total = 0.0;
                    Directory.CreateDirectory(drctry);
                    var benchs   = await manager.GetResults(experiment.ID);
                    var benchsVm = benchs.Benchmarks.Select(e => new BenchmarkResultViewModel(e, uiService)).ToArray();
                    total        = benchsVm.Length;

                    for (int i = 0; i < total; i++)
                    {
                        UTF8Encoding enc = new UTF8Encoding();
                        string stdout    = await benchsVm[i].GetStdOutAsync(false);
                        string stderr    = await benchsVm[i].GetStdErrAsync(false);
                        string path      = drctry + @"\" + experiment.Category + @"\" + benchsVm[i].Filename;
                        path             = path.Replace("/", @"\");
                        Directory.CreateDirectory(path.Substring(0, path.LastIndexOf(@"\")));
                        if (stdout != null && stdout.Length > 0)
                        {
                            FileStream stdoutf = File.Open(path + ".out.txt", FileMode.OpenOrCreate);
                            stdoutf.Write(enc.GetBytes(stdout), 0, enc.GetByteCount(stdout));
                            stdoutf.Close();
                        }

                        if (stderr != null && stderr.Length > 0)
                        {
                            FileStream stderrf = File.Open(path + ".err.txt", FileMode.OpenOrCreate);
                            stderrf.Write(enc.GetBytes(stderr), 0, enc.GetByteCount(stderr));
                            stderrf.Close();
                        }
                    }
                });

                uiService.ShowInfo("Output saved to " + drctry);
            }
            catch (Exception ex)
            {
                uiService.ShowError(ex, "Failed to save output");
            }
            finally
            {
                uiService.StopIndicateLongOperation(handle);
            }
        }