Exemple #1
0
 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));
        }
Exemple #5
0
 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));
 }