From eb56b9f0d526d334ea97ce3cf4e94762d2433d37 Mon Sep 17 00:00:00 2001 From: Noel Kwan <47273164+kwannoel@users.noreply.github.com> Date: Tue, 14 Mar 2023 15:23:36 +0800 Subject: [PATCH] fix(ci): run entire snapshot in `main`, `pr` and `main-cron` workflows (#8523) --- ci/scripts/deterministic-e2e-test.sh | 2 +- ci/workflows/pull-request.yml | 1 + src/tests/sqlsmith/scripts/gen_queries.sh | 22 +++++++++++++++++++++- src/tests/sqlsmith/src/sql_gen/scalar.rs | 14 +++++++++----- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/ci/scripts/deterministic-e2e-test.sh b/ci/scripts/deterministic-e2e-test.sh index 97aba505f669..bc2c9936138e 100755 --- a/ci/scripts/deterministic-e2e-test.sh +++ b/ci/scripts/deterministic-e2e-test.sh @@ -45,4 +45,4 @@ echo "--- deterministic simulation e2e, ci-3cn-2fe, parallel, batch" seq $TEST_NUM | parallel MADSIM_TEST_SEED={} './risingwave_simulation -j 16 ./e2e_test/batch/\*\*/\*.slt 2> $LOGDIR/parallel-batch-{}.log && rm $LOGDIR/parallel-batch-{}.log' echo "--- deterministic simulation e2e, ci-3cn-2fe, fuzzing (pre-generated-queries)" -seq $TEST_NUM | parallel MADSIM_TEST_SEED={} './risingwave_simulation --run-sqlsmith-queries ./src/tests/sqlsmith/tests/sqlsmith-query-snapshots/{} 2> $LOGDIR/fuzzing-{}.log && rm $LOGDIR/fuzzing-{}.log' +seq 64 | parallel MADSIM_TEST_SEED={} './risingwave_simulation --run-sqlsmith-queries ./src/tests/sqlsmith/tests/sqlsmith-query-snapshots/{} 2> $LOGDIR/fuzzing-{}.log && rm $LOGDIR/fuzzing-{}.log' diff --git a/ci/workflows/pull-request.yml b/ci/workflows/pull-request.yml index ccb6d7d6999f..cc1a433a53eb 100644 --- a/ci/workflows/pull-request.yml +++ b/ci/workflows/pull-request.yml @@ -228,6 +228,7 @@ steps: - ./ci/plugins/upload-failure-logs timeout_in_minutes: 15 retry: *auto-retry + soft_fail: true - label: "check" command: "ci/scripts/check.sh" diff --git a/src/tests/sqlsmith/scripts/gen_queries.sh b/src/tests/sqlsmith/scripts/gen_queries.sh index 23688815aed5..e0b39d4822cf 100755 --- a/src/tests/sqlsmith/scripts/gen_queries.sh +++ b/src/tests/sqlsmith/scripts/gen_queries.sh @@ -142,11 +142,25 @@ check_failed_to_generate_queries() { fi } +# sync step +# Some queries maybe be added +sync_queries() { + set +x + pushd $OUTDIR + git checkout main + git pull + set +e + git branch -D stage + set -e + git checkout -b stage + popd + set -x +} + # Upload step upload_queries() { set +x pushd "$OUTDIR" - git checkout -b stage git add . git commit -m 'update queries' git push -f origin stage @@ -209,6 +223,11 @@ validate() { echo_err "[INFO] Passed checks" } +sync() { + sync_queries + echo_err "[INFO] Synced" +} + upload() { upload_queries echo_err "[INFO] Uploaded" @@ -223,6 +242,7 @@ main() { setup build + sync generate validate upload diff --git a/src/tests/sqlsmith/src/sql_gen/scalar.rs b/src/tests/sqlsmith/src/sql_gen/scalar.rs index 55661f3ba6ee..e79fdba9b4dc 100644 --- a/src/tests/sqlsmith/src/sql_gen/scalar.rs +++ b/src/tests/sqlsmith/src/sql_gen/scalar.rs @@ -148,15 +148,19 @@ impl<'a, R: Rng> SqlGenerator<'a, R> { fn gen_temporal_scalar(&mut self, typ: &DataType) -> String { use DataType as T; - let rand_secs = self.rng.gen_range(2..1000000) as u64; let minute = 60; let hour = 60 * minute; let day = 24 * hour; let week = 7 * day; - let choices = [0, 1, minute, hour, day, week, rand_secs]; - let secs = choices.choose(&mut self.rng).unwrap(); + let choices = [0, 1, minute, hour, day, week]; - let tm = DateTime::::from(SystemTime::now() - Duration::from_secs(*secs)); + let secs = match self.rng.gen_range(1..=100) { + 1..=30 => *choices.choose(&mut self.rng).unwrap(), + 31..=100 => self.rng.gen_range(2..100) as u64, + _ => unreachable!(), + }; + + let tm = DateTime::::from(SystemTime::now() - Duration::from_secs(secs)); match typ { T::Date => tm.format("%F").to_string(), T::Timestamp | T::Timestamptz => tm.format("%Y-%m-%d %H:%M:%S").to_string(), @@ -169,7 +173,7 @@ impl<'a, R: Rng> SqlGenerator<'a, R> { T::Time => tm.format("%T").to_string(), T::Interval => { if self.rng.gen_bool(0.5) { - (-(*secs as i64)).to_string() + (-(secs as i64)).to_string() } else { secs.to_string() }