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(); } }; }
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); }
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); } }