public async Task <AutobahnResult> Run() { var specFile = Path.GetTempFileName(); try { Spec.WriteJson(specFile); // Run the test (write something to the console so people know this will take a while...) _logger.LogInformation("Now launching Autobahn Test Suite. This will take a while."); var exitCode = await Wstest.Default.ExecAsync("-m fuzzingclient -s " + specFile); if (exitCode != 0) { throw new Exception("wstest failed"); } } finally { if (File.Exists(specFile)) { File.Delete(specFile); } } // Parse the output. var outputFile = Path.Combine(Directory.GetCurrentDirectory(), Spec.OutputDirectory, "index.json"); using (var reader = new StreamReader(File.OpenRead(outputFile))) { return(AutobahnResult.FromReportJson(JObject.Parse(await reader.ReadToEndAsync()))); } }
public void Verify(AutobahnResult result) { var failures = new StringBuilder(); foreach (var serverResult in result.Servers) { var serverExpectation = _expectations.FirstOrDefault(e => e.Server == serverResult.Server && e.Ssl == serverResult.Ssl); if (serverExpectation == null) { failures.AppendLine($"Expected no results for server: {serverResult.Name} but found results!"); } else { serverExpectation.Verify(serverResult, failures); } } Assert.True(failures.Length == 0, "Autobahn results did not meet expectations:" + Environment.NewLine + failures.ToString()); }