Files
greptimedb/tests/compat/util.sh
Weny Xu 40e9ce90a7 refactor: restructure sqlness to support multiple envs and extract common utils (#7066)
* refactor: restructure sqlness to support multiple envs and extract common utils

Signed-off-by: WenyXu <wenymedia@gmail.com>

* chore(ci): update sqlness cmd

Signed-off-by: WenyXu <wenymedia@gmail.com>

* chore: add comments

Signed-off-by: WenyXu <wenymedia@gmail.com>

* fix: error fmt

Signed-off-by: WenyXu <wenymedia@gmail.com>

* fix: only reconnect mysql and pg client

Signed-off-by: WenyXu <wenymedia@gmail.com>

* chore: apply suggestions

Signed-off-by: WenyXu <wenymedia@gmail.com>

---------

Signed-off-by: WenyXu <wenymedia@gmail.com>
2025-10-11 06:34:17 +00:00

83 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Assemble the GreptimeDB binary download URL for a specific version.
binary_url() {
local ver="$1"
local bin_tar="greptime-$(uname -s | tr '[:upper:]' '[:lower:]')-amd64-v$ver.tar.gz"
echo "https://github.com/GreptimeTeam/greptimedb/releases/download/v$ver/$bin_tar"
}
# Download a specific version of GreptimeDB binary tar file, untar it to folder `./bins/$ver`.
# `ver` is semver without prefix `v`
download_binary() {
local ver="$1"
local url="$(binary_url $ver)"
local bin_tar="greptime-$(uname -s | tr '[:upper:]' '[:lower:]')-amd64-v$ver.tar.gz"
if [ -f ./bins/$ver/greptime ]; then
echo " === binaries exist: $(ls ./bins/$ver/* | tr '\n' ' ')"
chmod +x ./bins/$ver/*
return
fi
if [ -f "$bin_tar" ]; then
echo " === tar file exists: $bin_tar"
else
echo " === Download binary ver: $ver"
echo " === Download binary url: $url"
curl --connect-timeout 5 --retry 5 --retry-delay 1 -L "$url" -o "$bin_tar"
fi
mkdir -p ./bins/$ver
tar -xf "$bin_tar" --strip-components=1 -C ./bins/$ver
echo " === unpacked: ./bins/$ver:"
ls -lh ./bins/$ver
chmod +x ./bins/$ver/*
}
# Test data compatibility that:
# - the data written by an old version of GreptimeDB can be read by the current one
# - the data written by the current version of GreptimeDB can be read by an old one ("forward" compatibility)
run_test() {
local old_ver="$1"
local forward="$2"
local write_case_dir="./tests/compat/case/write"
local read_case_dir="./tests/compat/case/read"
local bin_old="./bins/$old_ver/greptime"
local bin_new="./bins/current/greptime"
local runner="./bins/current/sqlness-runner"
echo " === Test with:"
echo " === old greptimedb version:"
"$bin_old" --version
echo " === new greptimedb version:"
"$bin_new" --version
# "forward" means we are testing forward compatibility:
# the data generated by current version GreptimeDB can be used by old.
# So we run new GreptimeDB binary first to write, then run old to read.
# And the opposite for backward compatibility.
if [ "$forward" == "forward" ]
then
echo " === Running forward compat test ..."
echo " === Run test: write with current GreptimeDB"
$runner bare --bins-dir $(dirname $bin_new) --case-dir $write_case_dir
else
echo " === Running backward compat test ..."
echo " === Run test: write with old GreptimeDB"
$runner bare --bins-dir $(dirname $bin_old) --case-dir $write_case_dir
fi
if [ "$forward" == 'forward' ]
then
echo " === Run test: read with old GreptimeDB"
$runner bare --bins-dir $(dirname $bin_old) --case-dir $read_case_dir
else
echo " === Run test: read with current GreptimeDB"
$runner bare --bins-dir $(dirname $bin_new) --case-dir $read_case_dir
fi
}