}
public IConfiguration Configuration { get; set; }
+ public ILogger<TestHarnessProxy> Logger { get; private set; }
+
+ private ILoggerFactory _loggerFactory;
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
async Task SendNodeVersion(HttpContext context)
{
- Console.WriteLine("hello chrome! json/version");
+ Logger.LogTrace("hello chrome! json/version");
var resp_obj = new JObject();
resp_obj["Browser"] = "node.js/v9.11.1";
resp_obj["Protocol-Version"] = "1.1";
async Task SendNodeList(HttpContext context)
{
- Console.WriteLine("hello chrome! json/list");
+ Logger.LogTrace("webserver: hello chrome! json/list");
try
{
var response = new JArray(JObject.FromObject(new
webSocketDebuggerUrl = "ws://localhost:9300/91d87807-8a81-4f49-878c-a5604103b0a4"
})).ToString();
- Console.WriteLine($"sending: {response}");
+ Logger.LogTrace($"webserver: sending: {response}");
await context.Response.WriteAsync(response, new CancellationTokenSource().Token);
}
- catch (Exception e) { Console.WriteLine(e); }
+ catch (Exception e) { Logger.LogError(e, "webserver: SendNodeList failed"); }
}
public async Task LaunchAndServe(ProcessStartInfo psi, HttpContext context, Func<string, Task<string>> extract_conn_url)
proc.ErrorDataReceived += (sender, e) =>
{
var str = e.Data;
- Console.WriteLine($"stderr: {str}");
+ Logger.LogTrace($"browser-stderr: {str}");
if (tcs.Task.IsCompleted)
return;
proc.OutputDataReceived += (sender, e) =>
{
- Console.WriteLine($"stdout: {e.Data}");
+ Logger.LogTrace($"browser-stdout: {e.Data}");
};
proc.BeginErrorReadLine();
if (await Task.WhenAny(tcs.Task, Task.Delay(5000)) != tcs.Task)
{
- Console.WriteLine("Didnt get the con string after 5s.");
+ Logger.LogError("Didnt get the con string after 5s.");
throw new Exception("node.js timedout");
}
var line = await tcs.Task;
var con_str = extract_conn_url != null ? await extract_conn_url(line) : line;
- Console.WriteLine($"launching proxy for {con_str}");
-
- using var loggerFactory = LoggerFactory.Create(
- builder => builder.AddConsole().AddFilter(null, LogLevel.Information));
+ Logger.LogInformation($"launching proxy for {con_str}");
- var proxy = new DebuggerProxy(loggerFactory, null);
+ var proxy = new DebuggerProxy(_loggerFactory, null);
var browserUri = new Uri(con_str);
var ideSocket = await context.WebSockets.AcceptWebSocketAsync();
await proxy.Run(browserUri, ideSocket);
- Console.WriteLine("Proxy done");
+ Logger.LogInformation("Proxy done");
}
catch (Exception e)
{
- Console.WriteLine("got exception {0}", e);
+ Logger.LogError("got exception {0}", e);
}
finally
{
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
- public void Configure(IApplicationBuilder app, IOptionsMonitor<TestHarnessOptions> optionsAccessor, IWebHostEnvironment env)
+ public void Configure(IApplicationBuilder app, IOptionsMonitor<TestHarnessOptions> optionsAccessor, IWebHostEnvironment env, ILogger<TestHarnessProxy> logger, ILoggerFactory loggerFactory)
{
+ this.Logger = logger;
+ this._loggerFactory = loggerFactory;
+
app.UseWebSockets();
app.UseStaticFiles();
{
router.MapGet("launch-chrome-and-connect", async context =>
{
- Console.WriteLine("New test request");
+ Logger.LogInformation("New test request");
try
{
var client = new HttpClient();
await Task.Delay(100);
var res = await client.GetStringAsync(new Uri(new Uri(str), "/json/list"));
- Console.WriteLine("res is {0}", res);
+ Logger.LogTrace("res is {0}", res);
if (!String.IsNullOrEmpty(res))
{
var elapsed = DateTime.Now - start;
if (elapsed.Milliseconds > 5000)
{
- Console.WriteLine($"Unable to get DevTools /json/list response in {elapsed.Seconds} seconds, stopping");
+ Logger.LogError($"Unable to get DevTools /json/list response in {elapsed.Seconds} seconds, stopping");
return null;
}
}
var wsURl = obj[0]?["webSocketDebuggerUrl"]?.Value<string>();
- Console.WriteLine(">>> {0}", wsURl);
+ Logger.LogTrace(">>> {0}", wsURl);
return wsURl;
});
}
catch (Exception ex)
{
- Console.WriteLine($"launch-chrome-and-connect failed with {ex.ToString()}");
+ Logger.LogError($"launch-chrome-and-connect failed with {ex.ToString()}");
}
});
});
if (options.NodeApp != null)
{
- Console.WriteLine($"Doing the nodejs: {options.NodeApp}");
+ Logger.LogTrace($"Doing the nodejs: {options.NodeApp}");
var nodeFullPath = Path.GetFullPath(options.NodeApp);
- Console.WriteLine(nodeFullPath);
+ Logger.LogTrace(nodeFullPath);
var psi = new ProcessStartInfo();
psi.UseShellExecute = false;