File: Autobahn\Wstest.cs
Web Access
Project: src\src\Middleware\WebSockets\test\ConformanceTests\Microsoft.AspNetCore.WebSockets.ConformanceTests.csproj (Microsoft.AspNetCore.WebSockets.ConformanceTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Microsoft.AspNetCore.WebSockets.ConformanceTest.Autobahn;
 
/// <summary>
/// Wrapper around the Autobahn Test Suite's "wstest" app.
/// </summary>
public class Wstest : Executable
{
    private static readonly Lazy<Wstest> _instance = new Lazy<Wstest>(Create);
 
    public static readonly string DefaultLocation = LocateWstest();
 
    public static Wstest Default => _instance.Value;
 
    public Wstest(string path) : base(path) { }
 
    private static Wstest Create()
    {
        var location = LocateWstest();
 
        return (location == null || !File.Exists(location)) ? null : new Wstest(location);
    }
 
    private static string LocateWstest()
    {
        var location = Environment.GetEnvironmentVariable("ASPNETCORE_WSTEST_PATH");
        if (string.IsNullOrEmpty(location))
        {
            location = Locate("wstest");
        }
 
        return location;
    }
}