Ejemplo n.º 1
0
        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())));
            }
        }
Ejemplo n.º 2
0
        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());
        }