67 lines · 1.7 KB · Text
RawDownload
#!/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 {ZED_SERVER_URL, ZED_CLIENT_SECRET_TOKEN} = process.envif (!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`') main() async function main() {  buildTests()   const seed = randomU64();  const commit = execFileSync(    'git',    ['rev-parse', 'HEAD'],    {encoding: 'utf8'}  ).trim()   console.log("commit:", commit)  console.log("starting seed:", seed)   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("found failure at seed", failingSeed)  const minimizedSeed = minimizeTestPlan(planPath, minPlanPath)  const minimizedPlan = fs.readFileSync(minPlanPath, 'utf8')   console.log("minimized plan:\n", minimizedPlan)   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)  })   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)}