mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
Merge pull request #2731 from pizzaboxer/feature/improve-connectivity-test
Improve connectivity test
This commit is contained in:
commit
d47bb6c5e7
@ -4,6 +4,8 @@
|
|||||||
{
|
{
|
||||||
public const string DefaultChannel = "production";
|
public const string DefaultChannel = "production";
|
||||||
|
|
||||||
|
private const string VersionStudioHash = "version-012732894899482c";
|
||||||
|
|
||||||
public static string BaseUrl { get; private set; } = null!;
|
public static string BaseUrl { get; private set; } = null!;
|
||||||
|
|
||||||
private static readonly Dictionary<string, ClientVersion> ClientVersionCache = new();
|
private static readonly Dictionary<string, ClientVersion> ClientVersionCache = new();
|
||||||
@ -18,23 +20,31 @@
|
|||||||
{ "https://s3.amazonaws.com/setup.roblox.com", 4 }
|
{ "https://s3.amazonaws.com/setup.roblox.com", 4 }
|
||||||
};
|
};
|
||||||
|
|
||||||
private static async Task<string?> TestConnection(string url, int priority)
|
private static async Task<string?> TestConnection(string url, int priority, CancellationToken token)
|
||||||
{
|
{
|
||||||
string LOG_IDENT = $"RobloxDeployment::TestConnection.{url}";
|
string LOG_IDENT = $"RobloxDeployment::TestConnection.{url}";
|
||||||
|
|
||||||
await Task.Delay(priority * 1000);
|
await Task.Delay(priority * 1000, token);
|
||||||
|
|
||||||
if (BaseUrl is not null)
|
|
||||||
return null;
|
|
||||||
|
|
||||||
App.Logger.WriteLine(LOG_IDENT, "Connecting...");
|
App.Logger.WriteLine(LOG_IDENT, "Connecting...");
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = await App.HttpClient.GetAsync($"{url}/version");
|
var response = await App.HttpClient.GetAsync($"{url}/versionStudio", token);
|
||||||
|
|
||||||
if (!response.IsSuccessStatusCode)
|
if (!response.IsSuccessStatusCode)
|
||||||
throw new HttpResponseException(response);
|
throw new HttpResponseException(response);
|
||||||
|
|
||||||
|
// versionStudio is the version hash for the last MFC studio to be deployed.
|
||||||
|
// the response body should always be "version-012732894899482c".
|
||||||
|
string content = await response.Content.ReadAsStringAsync(token);
|
||||||
|
if (content != VersionStudioHash)
|
||||||
|
throw new Exception($"versionStudio response does not match (expected \"{VersionStudioHash}\", got \"{content}\")");
|
||||||
|
}
|
||||||
|
catch (TaskCanceledException)
|
||||||
|
{
|
||||||
|
App.Logger.WriteLine(LOG_IDENT, "Connectivity test cancelled.");
|
||||||
|
throw;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -56,11 +66,11 @@
|
|||||||
|
|
||||||
// returns null for success
|
// returns null for success
|
||||||
|
|
||||||
if (!String.IsNullOrEmpty(BaseUrl))
|
CancellationTokenSource tokenSource = new CancellationTokenSource();
|
||||||
return null;
|
CancellationToken token = tokenSource.Token;
|
||||||
|
|
||||||
var exceptions = new List<Exception>();
|
var exceptions = new List<Exception>();
|
||||||
var tasks = (from entry in BaseUrls select TestConnection(entry.Key, entry.Value)).ToList();
|
var tasks = (from entry in BaseUrls select TestConnection(entry.Key, entry.Value, token)).ToList();
|
||||||
|
|
||||||
App.Logger.WriteLine(LOG_IDENT, "Testing connectivity...");
|
App.Logger.WriteLine(LOG_IDENT, "Testing connectivity...");
|
||||||
|
|
||||||
@ -79,6 +89,9 @@
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// stop other running connectivity tests
|
||||||
|
tokenSource.Cancel();
|
||||||
|
|
||||||
if (String.IsNullOrEmpty(BaseUrl))
|
if (String.IsNullOrEmpty(BaseUrl))
|
||||||
return exceptions[0];
|
return exceptions[0];
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user