in src/common/details/helpers/http_helpers.cs [194:255]
public static bool WaitForComplete(Func<HttpWebRequest> createWebRequest, INamedValues values, string domain, string message, bool? quiet = null, bool? verbose = null)
{
quiet ??= values.GetOrDefault("x.quiet", false);
verbose ??= values.GetOrDefault("x.verbose", true);
var waitTimeout = values.GetOrDefault($"{domain}.wait.timeout", 0);
if (waitTimeout <= 0) return false;
if (!quiet.Value) Console.Write(message);
var passed = false;
var keepTrying = true;
var started = DateTime.Now;
var finalJson = "";
while (keepTrying)
{
var request = createWebRequest();
var response = HttpHelpers.GetWebResponse(request);
var json = HttpHelpers.ReadWriteJson(response, values, domain);
var parsed = json != null ? JsonDocument.Parse(json) : null;
var status = parsed?.GetPropertyStringOrNull("status");
switch (status)
{
case "success":
case "Success":
case "Succeeded":
case "succeeded":
message = $"\n{message} Done!\n";
keepTrying = false;
finalJson = json;
passed = true;
continue;
case "failed":
case "Failed":
message = $"\n{message} Failed!\n";
keepTrying = false;
finalJson = json;
continue;
}
if (DateTime.Now.Subtract(started).TotalMilliseconds > waitTimeout)
{
message = $"\n{message} Timed-out!\n";
keepTrying = false;
finalJson = json;
continue;
}
Thread.Sleep(500);
if (!quiet.Value) Console.Write(".");
if (!quiet.Value && verbose.Value) Console.Write(status);
}
if (!quiet.Value) Console.WriteLine(message);
if (!quiet.Value && verbose.Value) JsonHelpers.PrintJson(finalJson);
values.Reset("passed", passed ? "true" : "false");
return passed;
}