1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-21 15:04:11 -05:00

chore(ext/websocket): Add autobahn|testsuite fuzzingclient (#18846)

Closes #17242
This commit is contained in:
Divy Srivastava 2023-04-26 17:55:48 +05:30 committed by GitHub
parent fbefceeb56
commit 036778c2e8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 100 additions and 2 deletions

View file

@ -13,7 +13,9 @@
"associations": "**/*.rs",
"rustfmt": "rustfmt --config imports_granularity=item"
},
"includes": ["**/*.{ts,tsx,js,jsx,json,md,toml,rs}"],
"includes": [
"**/*.{ts,tsx,js,jsx,json,md,toml,rs}"
],
"excludes": [
".cargo_home",
".git",
@ -48,7 +50,8 @@
"tools/node_compat/TODO.md",
"tools/node_compat/versions",
"tools/wpt/expectation.json",
"tools/wpt/manifest.json"
"tools/wpt/manifest.json",
"ext/websocket/autobahn/reports"
],
"plugins": [
"https://plugins.dprint.dev/typescript-0.84.0.wasm",

View file

@ -642,6 +642,15 @@ const ci = {
run:
'gsutil -h "Cache-Control: public, max-age=3600" cp ./target/release/*.zip gs://dl.deno.land/canary/$(git rev-parse HEAD)/',
},
{
name: "Autobahn testsuite",
if: [
"matrix.job == 'test' && matrix.profile == 'release' &&",
"!startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'ubuntu')",
].join("\n"),
run:
"target/release/deno run -A --unstable ext/websocket/autobahn/fuzzingclient.js",
},
{
name: "Test debug",
if: [

View file

@ -399,6 +399,11 @@ jobs:
env:
CLOUDSDK_PYTHON: '${{env.pythonLocation}}\python.exe'
run: 'gsutil -h "Cache-Control: public, max-age=3600" cp ./target/release/*.zip gs://dl.deno.land/canary/$(git rev-parse HEAD)/'
- name: Autobahn testsuite
if: |-
!(github.event_name == 'pull_request' && matrix.skip_pr) && (matrix.job == 'test' && matrix.profile == 'release' &&
!startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'ubuntu'))
run: target/release/deno run -A --unstable ext/websocket/autobahn/fuzzingclient.js
- name: Test debug
if: |-
!(github.event_name == 'pull_request' && matrix.skip_pr) && (matrix.job == 'test' && matrix.profile == 'debug' &&

2
.gitignore vendored
View file

@ -26,3 +26,5 @@ gclient_config.py_entries
# WPT generated cert files
/tools/wpt/certs/index.txt*
/tools/wpt/certs/serial*
/ext/websocket/autobahn/reports

View file

@ -0,0 +1,20 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
import { parse } from "../../../test_util/std/flags/mod.ts";
const { port } = parse(Deno.args, {
number: ["port"],
default: {
port: 6969,
},
});
const { serve } = Deno;
// A message-based WebSocket echo server.
serve((request) => {
const { socket, response } = Deno.upgradeWebSocket(request);
socket.onmessage = (event) => {
socket.send(event.data);
};
return response;
}, { port });

View file

@ -0,0 +1,33 @@
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
// deno-lint-ignore-file
import { $ } from "https://deno.land/x/dax@0.31.0/mod.ts";
const pwd = new URL(".", import.meta.url).pathname;
const AUTOBAHN_TESTSUITE_DOCKER =
"crossbario/autobahn-testsuite:0.8.2@sha256:5d4ba3aa7d6ab2fdbf6606f3f4ecbe4b66f205ce1cbc176d6cdf650157e52242";
const self = Deno.execPath();
$`${self} run -A --unstable ${pwd}/autobahn_server.js`.spawn();
await $`docker run --name fuzzingserver -v ${pwd}/fuzzingclient.json:/fuzzingclient.json:ro -v ${pwd}/reports:/reports -p 9001:9001 --net=host --rm ${AUTOBAHN_TESTSUITE_DOCKER} wstest -m fuzzingclient -s fuzzingclient.json`
.cwd(pwd);
const { deno_websocket } = JSON.parse(
Deno.readTextFileSync(`${pwd}/reports/servers/index.json`),
);
const result = Object.values(deno_websocket);
function failed(name) {
return name != "OK" && name != "INFORMATIONAL" && name != "NON-STRICT";
}
const failedtests = result.filter((outcome) => failed(outcome.behavior));
console.log(
`%c${result.length - failedtests.length} / ${result.length} tests OK`,
`color: ${failedtests.length == 0 ? "green" : "red"}`,
);
Deno.exit(failedtests.length == 0 ? 0 : 1);

View file

@ -0,0 +1,26 @@
{
"outdir": "./reports/servers",
"servers": [
{
"agent": "deno_websocket",
"url": "ws://localhost:6969"
}
],
"cases": [
"1.*",
"2.*",
"3.*",
"4.*",
"5.*",
"6.*",
"7.*",
"9.*",
"10.*"
],
"exclude-cases": [
"11.*",
"12.*",
"13.*"
],
"exclude-agent-cases": {}
}