public static async Task <Timeline> GetTimeline(string summaryName, AzureExperimentManager expManager, AzureSummaryManager summaryManager, string connectionString) { IDomainResolver domainResolver = GetDomainResolver(); var vm = await Timeline.Initialize(connectionString, summaryName, expManager, summaryManager); return(vm); }
private Timeline(AzureExperimentManager expManager, AzureSummaryManager summaryManager, string summaryName, ExperimentViewModel[] experiments, RecordsTable records) { this.expManager = expManager; this.summaryManager = summaryManager; this.summaryName = summaryName; this.experiments = experiments.OrderBy(exp => exp.SubmissionTime).ToArray(); Records = records; }
public static async Task <ComparableExperiment> GetComparableExperiment(int id, AzureExperimentManager expManager) { var exp = await expManager.TryFindExperiment(id); if (exp == null) { throw new KeyNotFoundException("Experiment " + id + " not found"); } var benchResults = (await expManager.GetResults(id)).Benchmarks; ComparableResult[] results = new ComparableResult[benchResults.Length]; double maxTimeout = exp.Definition.BenchmarkTimeout.TotalSeconds; for (int i = 0; i < benchResults.Length; i++) { var b = benchResults[i]; results[i] = new ComparableResult(b); #if USE_NORMALIZED_TIME if (b.Status == Measurement.ResultStatus.Timeout && b.NormalizedRuntime > maxTimeout) { maxTimeout = b.NormalizedRuntime; } #endif } return(new ComparableExperiment(id, exp.Status.SubmissionTime, maxTimeout, results)); }
public static async Task <Timeline> Initialize(string connectionString, string summaryName, AzureExperimentManager expManager, AzureSummaryManager summaryManager) { var summRec = await summaryManager.GetTimelineAndRecords(summaryName); var summ = summRec.Item1; var records = summRec.Item2; var now = DateTime.Now; var expTasks = summ .Select(async expSum => { //var exp = await expManager.TryFindExperiment(expSum.Id); //if (exp == null) return null; bool isFinished; var date = expSum.Date; if ((now - date).TotalDays >= 1) { isFinished = true; } else { try { var jobState = await expManager.GetExperimentJobState(new[] { expSum.Id }); isFinished = jobState[0] != ExperimentExecutionState.Active; } catch { isFinished = true; } } return(new ExperimentViewModel(expSum, isFinished)); }); var experiments = await Task.WhenAll(expTasks); return(new Timeline(expManager, summaryManager, summaryName, experiments, records)); }