public static async Task <string> PostRun(long runId, ApiObject contentObject) { return(await HttpApi.Post(String.Format("/run/{0}", runId), null, contentObject)); }
public async Task <bool> UploadForAmend(long id) { var responseBody = await HttpApi.PostRun(id, this); return(responseBody != null); }
public static async Task <RunSet> FromId(Machine local_machine, long local_runsetid, Config local_config, Commit local_mainCommit, List <Commit> local_secondaryCommits, string local_buildURL, string local_logURL) { using (var client = new HttpClient()) { JObject db_result = await HttpApi.GetRunset(local_runsetid); if (db_result == null) { return(null); } Console.Error.WriteLine("trying to parse Start date: \"" + db_result ["StartedAt"].ToObject <DateTime> ().ToLocalTime().ToString(DATETIME_PRETTY) + "\""); var runSet = new RunSet { Id = local_runsetid, StartDateTime = db_result ["StartedAt"].ToObject <DateTime> ().ToLocalTime(), FinishDateTime = db_result ["FinishedAt"].ToObject <DateTime> ().ToLocalTime(), BuildURL = db_result ["BuildURL"].ToObject <string> (), Machine = local_machine, LogURL = local_logURL, Config = local_config, Commit = local_mainCommit, TimedOutBenchmarks = db_result ["TimedOutBenchmarks"].ToObject <List <string> > (), CrashedBenchmarks = db_result ["CrashedBenchmarks"].ToObject <List <string> > () }; var db_mainProductCommit = db_result ["MainProduct"] ["Commit"].ToObject <string> (); if (local_mainCommit.Hash != db_mainProductCommit) { throw new Exception(String.Format("Commit ({0}) does not match the one in the database ({1}).", local_mainCommit.Hash, db_mainProductCommit)); } var db_secondaryCommits = new List <Commit> (); foreach (var sc in db_result["SecondaryProducts"]) { db_secondaryCommits.Add(new Commit { Hash = sc ["Commit"].ToObject <string> (), Product = new Product { Name = sc ["Name"].ToObject <string> () } }); } if (local_secondaryCommits != null) { if (local_secondaryCommits.Count != db_secondaryCommits.Count) { throw new Exception("Secondary commits don't match the database."); } foreach (var sc in db_secondaryCommits) { if (!local_secondaryCommits.Any(c => c.Hash == sc.Hash && c.Product.Name == sc.Product.Name)) { throw new Exception("Secondary commits don't match the database."); } } // local commits have more information (e.g. datetime) runSet.SecondaryCommits = local_secondaryCommits; } else { runSet.SecondaryCommits = db_secondaryCommits; } if (local_buildURL != null && local_buildURL != runSet.BuildURL) { throw new Exception("Build URL does not match the one in the database."); } var db_machineName = db_result ["Machine"] ["Name"].ToObject <string> (); var db_machineArchitecture = db_result ["Machine"] ["Architecture"].ToObject <string> (); if (local_machine.Name != db_machineName || local_machine.Architecture != db_machineArchitecture) { throw new Exception("Machine does not match the one in the database. \"" + db_machineName + "\" vs. \"" + local_machine.Name + "\""); } if (!local_config.EqualsApiObject(db_result ["Config"])) { throw new Exception("Config does not match the one in the database."); } return(runSet); } }