public void ReplaceExperimentRow(ExperimentEntity newRow) { experimentsTable = Table.OfRows(experimentsTable.Rows.Select(r => { return(r.ID == newRow.ID ? newRow : r); })); experimentsTable.SaveUTF8Bom(Path.Combine(dir.FullName, "experiments.csv"), new WriteSettings(Delimiter.Comma, true, true)); }
private static ExperimentDefinition RowToDefinition(ExperimentEntity row) { return(ExperimentDefinition.Create( row.Executable, row.BenchmarkContainerUri, row.BenchmarkDirectory, row.BenchmarkFileExtension, row.Parameters, TimeSpan.FromSeconds(row.BenchmarkTimeout), TimeSpan.FromSeconds(row.ExperimentTimeout), row.DomainName, row.Category, row.MemoryLimitMB)); }
private ExperimentStatus GetStatus(int id, ExperimentEntity expRow) { int done, total; ExperimentInstance experiment; TimeSpan totalRuntime; if (runningExperiments.TryGetValue(id, out experiment)) { total = experiment.Results.Length; done = experiment.Results.Count(t => t.IsCompleted); totalRuntime = done > 0 ? TimeSpan.FromTicks(experiment.Results.Sum(r => r.Result.TotalProcessorTime.Ticks)) : TimeSpan.FromSeconds(0); } else { var results = storage.GetResults(id); done = total = results.Length; totalRuntime = done > 0 ? TimeSpan.FromTicks(results.Sum(r => r.TotalProcessorTime.Ticks)) : TimeSpan.FromSeconds(0); } return(new ExperimentStatus(id, expRow.Category, expRow.Submitted, expRow.Creator, expRow.Note, expRow.Flag, done, total, totalRuntime, GetWorkerInformation())); }
public override Task <IEnumerable <Experiment> > FindExperiments(ExperimentFilter?filter = default(ExperimentFilter?)) { IEnumerable <KeyValuePair <int, ExperimentEntity> > experiments = storage.GetExperiments() .ToArray(); if (filter.HasValue) { experiments = experiments .Where(q => { var id = q.Key; var e = q.Value; return((filter.Value.BenchmarkContainerEquals == null || e.BenchmarkDirectory == filter.Value.BenchmarkContainerEquals) && (filter.Value.CategoryEquals == null || e.Category == null || e.Category.Contains(filter.Value.CategoryEquals)) && (filter.Value.ExecutableEquals == null || e.Executable == null || e.Executable == filter.Value.ExecutableEquals) && (filter.Value.ParametersEquals == null || e.Parameters == null || e.Parameters == filter.Value.ParametersEquals) && (filter.Value.NotesEquals == null || e.Note == null || e.Note.Contains(filter.Value.NotesEquals)) && (filter.Value.CreatorEquals == null || e.Creator == null || e.Creator.Contains(filter.Value.CreatorEquals))); }) .OrderByDescending(q => q.Value.Submitted); } var results = experiments.Select(kvp => { int id = kvp.Key; ExperimentEntity expRow = kvp.Value; ExperimentDefinition def = RowToDefinition(expRow); ExperimentStatus status = GetStatus(id, expRow); return(new Experiment { Definition = def, Status = status }); }); return(Task.FromResult(results)); }
public void RemoveExperimentRow(ExperimentEntity deleteRow) { experimentsTable = Table.OfRows(experimentsTable.Rows.Where(r => r.ID != deleteRow.ID)); experimentsTable.SaveUTF8Bom(Path.Combine(dir.FullName, "experiments.csv"), new WriteSettings(Delimiter.Comma, true, true)); }