@@ -3,36 +3,35 @@ name: Randomized Tests
concurrency: randomized-tests
on:
- push:
- branches:
- - randomized-tests-runner
- # schedule:
- # - cron: '0 * * * *'
+ push:
+ branches:
+ - randomized-tests-runner
+ # schedule:
+ # - cron: '0 * * * *'
env:
- CARGO_TERM_COLOR: always
- CARGO_INCREMENTAL: 0
- RUST_BACKTRACE: 1
- ZED_SERVER_URL: https://zed.dev
- ZED_CLIENT_SECRET_TOKEN: ${{ secrets.ZED_CLIENT_SECRET_TOKEN }}
+ CARGO_TERM_COLOR: always
+ CARGO_INCREMENTAL: 0
+ RUST_BACKTRACE: 1
+ ZED_SERVER_URL: https://zed.dev
jobs:
- tests:
- name: Run randomized tests
- runs-on:
- - self-hosted
- - randomized-tests
- steps:
- - name: Install Node
- uses: actions/setup-node@v3
- with:
- node-version: "18"
+ tests:
+ name: Run randomized tests
+ runs-on:
+ - self-hosted
+ - randomized-tests
+ steps:
+ - name: Install Node
+ uses: actions/setup-node@v3
+ with:
+ node-version: "18"
- - name: Checkout repo
- uses: actions/checkout@v3
- with:
- clean: false
- submodules: "recursive"
+ - name: Checkout repo
+ uses: actions/checkout@v3
+ with:
+ clean: false
+ submodules: "recursive"
- - name: Run randomized tests
- run: script/randomized-test-ci
+ - name: Run randomized tests
+ run: script/randomized-test-ci
@@ -1,67 +1,70 @@
#!/usr/bin/env node --redirect-warnings=/dev/null
-const fs = require('fs')
-const {randomBytes} = require('crypto')
-const {execFileSync} = require('child_process')
-const {minimizeTestPlan, buildTests, runTests} = require('./randomized-test-minimize');
+const fs = require("fs");
+const { randomBytes } = require("crypto");
+const { execFileSync } = require("child_process");
+const {
+ minimizeTestPlan,
+ buildTests,
+ runTests,
+} = require("./randomized-test-minimize");
-const {ZED_SERVER_URL, ZED_CLIENT_SECRET_TOKEN} = process.env
-if (!ZED_SERVER_URL) throw new Error('Missing env var `ZED_SERVER_URL`')
-if (!ZED_CLIENT_SECRET_TOKEN) throw new Error('Missing env var `ZED_CLIENT_SECRET_TOKEN`')
+const { ZED_SERVER_URL } = process.env;
+if (!ZED_SERVER_URL) throw new Error("Missing env var `ZED_SERVER_URL`");
-main()
+main();
async function main() {
- buildTests()
+ buildTests();
const seed = randomU64();
- const commit = execFileSync(
- 'git',
- ['rev-parse', 'HEAD'],
- {encoding: 'utf8'}
- ).trim()
+ const commit = execFileSync("git", ["rev-parse", "HEAD"], {
+ encoding: "utf8",
+ }).trim();
- console.log("commit:", commit)
- console.log("starting seed:", seed)
+ console.log("commit:", commit);
+ console.log("starting seed:", seed);
- const planPath = 'target/test-plan.json'
- const minPlanPath = 'target/test-plan.min.json'
+ const planPath = "target/test-plan.json";
+ const minPlanPath = "target/test-plan.min.json";
const failingSeed = runTests({
SEED: seed,
SAVE_PLAN: planPath,
ITERATIONS: 50000,
OPERATIONS: 200,
- })
+ });
if (!failingSeed) {
- console.log("tests passed")
- return
+ console.log("tests passed");
+ return;
}
- console.log("found failure at seed", failingSeed)
- const minimizedSeed = minimizeTestPlan(planPath, minPlanPath)
- const minimizedPlan = fs.readFileSync(minPlanPath, 'utf8')
+ console.log("found failure at seed", failingSeed);
+ const minimizedSeed = minimizeTestPlan(planPath, minPlanPath);
+ const minimizedPlan = fs.readFileSync(minPlanPath, "utf8");
- console.log("minimized plan:\n", minimizedPlan)
+ console.log("minimized plan:\n", minimizedPlan);
- const url = `${ZED_SERVER_URL}/api/randomized_test_failure`
+ const url = `${ZED_SERVER_URL}/api/randomized_test_failure`;
const body = {
seed: minimizedSeed,
- token: ZED_CLIENT_SECRET_TOKEN,
plan: JSON.parse(minimizedPlan),
commit: commit,
- }
+ };
await fetch(url, {
- method: 'POST',
- headers: {"Content-Type": "application/json"},
- body: JSON.stringify(body)
- })
+ method: "POST",
+ headers: { "Content-Type": "application/json" },
+ body: JSON.stringify(body),
+ });
- process.exit(1)
+ process.exit(1);
}
function randomU64() {
- const bytes = randomBytes(8)
- const hexString = bytes.reduce(((string, byte) => string + byte.toString(16)), '')
- return BigInt('0x' + hexString).toString(10)
+ const bytes = randomBytes(8);
+ const hexString = bytes.reduce(
+ (string, byte) => string + byte.toString(16),
+ "",
+ );
+ return BigInt("0x" + hexString).toString(10);
}