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;
                if (exp.Status.SubmissionTime.Subtract(now).TotalDays >= 3)
                {
                    isFinished = true;
                }
                else
                {
                    try
                    {
                        var jobState = await expManager.GetExperimentJobState(new[] { exp.ID });
                        isFinished   = jobState[0] != ExperimentExecutionState.Active;
                    }
                    catch
                    {
                        isFinished = true;
                    }
                }

                return(new ExperimentViewModel(expSum, isFinished, exp.Status.SubmissionTime, exp.Definition.BenchmarkTimeout));
            });

            var experiments = await Task.WhenAll(expTasks);

            return(new Timeline(expManager, summaryManager, summaryName, experiments, records));
        }
Beispiel #2
0
        public static async Task <Timeline> Initialize(string connectionString, string summaryName, AzureExperimentManager expManager, AzureSummaryManager summaryManager, bool onlySummary = false)
        {
            var summRec = await summaryManager.GetTimelineAndRecords(summaryName, onlySummary);

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