mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-30 10:45:18 -06:00
158 lines
4.0 KiB
Bash
158 lines
4.0 KiB
Bash
#!/usr/bin/env bats
|
|
load $BATS_TEST_DIRNAME/helper/common.bash
|
|
|
|
# NOTE: These are currently disabled because the high variance in GitHub CI makes them unreliable.
|
|
|
|
# This BATS test attempts to detect performance regressions when using standard workflows on large datasets.
|
|
# Please note that this is a rough approach that is not designed to detect all performance issues, merely an extra
|
|
# safeguard against bugs that cause large (order-of-magnitude+) regressions.
|
|
|
|
# BATS_TEST_TIMEOUT is measured in seconds and is chosen to be high enough that all tests in this suite pass
|
|
# when running on GitHub's CI, but low enough that an order-of magnitude regression will cause them to fail.
|
|
BATS_TEST_TIMEOUT=50
|
|
|
|
# This function was used to create the dolt repo used for this test. It is not run during testing.
|
|
create_repo() {
|
|
dolt init
|
|
dolt checkout -b full
|
|
|
|
dolt sql -q 'create table t (pk int primary key, c0 text default "1", c3 text default "2", c4 text default "3", c5 text default "4", c6 text default "5", c7 text default "6");'
|
|
dolt commit -Am "new table t"
|
|
|
|
echo "insert into t(pk) values" > import.sql
|
|
for i in {1..100000}
|
|
do
|
|
echo " ($i)," >> import.sql
|
|
done
|
|
echo " (104857);" >> import.sql
|
|
|
|
dolt sql < import.sql
|
|
|
|
dolt add .
|
|
dolt commit -m "Add all rows"
|
|
}
|
|
|
|
setup() {
|
|
skip
|
|
cp -r $BATS_TEST_DIRNAME/performance-repo/ $BATS_TMPDIR/dolt-repo-$$
|
|
cd $BATS_TMPDIR/dolt-repo-$$
|
|
}
|
|
|
|
@test "performance: merge with no schema change and no conflict" {
|
|
dolt checkout full
|
|
dolt checkout -b mod2
|
|
dolt reset --soft HEAD^
|
|
|
|
dolt sql -q "delete from t where pk % 2 = 0"
|
|
|
|
dolt add .
|
|
dolt commit -m "Add mod2 rows"
|
|
|
|
dolt checkout full
|
|
dolt checkout -b mod3
|
|
dolt reset --soft HEAD^
|
|
|
|
dolt sql -q "delete from t where pk % 3 = 0"
|
|
|
|
dolt add .
|
|
dolt commit -m "Add mod3 rows"
|
|
|
|
run dolt merge mod2
|
|
log_status_eq 0
|
|
}
|
|
|
|
@test "performance: merge with no schema change and conflict" {
|
|
dolt checkout full
|
|
dolt checkout -b mod2
|
|
dolt reset --soft HEAD^
|
|
|
|
dolt sql -q "delete from t where pk % 2 = 0"
|
|
|
|
dolt add .
|
|
dolt commit -m "Add mod2 rows"
|
|
|
|
dolt checkout full
|
|
dolt checkout -b mod3
|
|
dolt reset --soft HEAD^
|
|
|
|
dolt sql -q "delete from t where pk % 3 = 0"
|
|
dolt sql -q 'update t set c0 = "conflict" where pk = 91'
|
|
|
|
dolt add .
|
|
dolt commit -m "Add mod3 rows"
|
|
|
|
run dolt merge mod2
|
|
log_status_eq 1
|
|
[[ "$output" =~ "Merge conflict in t" ]] || false
|
|
|
|
dolt conflicts resolve --ours t
|
|
BATS_TEST_TIMEOUT=1
|
|
}
|
|
|
|
# bats test_tags=no_lambda
|
|
@test "performance: merge with schema change and no conflict" {
|
|
dolt checkout full
|
|
dolt checkout -b mod2
|
|
dolt reset --soft HEAD^
|
|
|
|
dolt sql -q "delete from t where pk % 2 = 0"
|
|
|
|
dolt add .
|
|
dolt commit -m "Add mod2 rows"
|
|
|
|
dolt sql -q "alter table t add column c1 int default 1"
|
|
dolt add .
|
|
dolt commit -m "Add column c1"
|
|
|
|
dolt checkout full
|
|
dolt checkout -b mod3
|
|
dolt reset --soft HEAD^
|
|
|
|
dolt sql -q "delete from t where pk % 3 = 0"
|
|
|
|
dolt add .
|
|
dolt commit -m "Add mod3 rows"
|
|
|
|
dolt sql -q "alter table t add column c2 int default 2"
|
|
dolt add .
|
|
dolt commit -m "Add column c2"
|
|
|
|
run dolt merge mod2
|
|
log_status_eq 0
|
|
}
|
|
|
|
# bats test_tags=no_lambda
|
|
@test "performance: merge with schema change and conflict" {
|
|
dolt checkout full
|
|
dolt checkout -b mod2
|
|
dolt reset --soft HEAD^
|
|
|
|
dolt sql -q "delete from t where pk % 2 = 0"
|
|
|
|
dolt add .
|
|
dolt commit -m "Add mod2 rows"
|
|
|
|
dolt sql -q "alter table t add column c1 int default 1"
|
|
dolt add .
|
|
dolt commit -m "Add column c1"
|
|
|
|
dolt checkout full
|
|
dolt checkout -b mod3
|
|
dolt reset --soft HEAD^
|
|
|
|
dolt sql -q "delete from t where pk % 3 = 0"
|
|
dolt sql -q 'update t set c0 = "conflict" where pk = 91'
|
|
|
|
dolt add .
|
|
dolt commit -m "Add mod3 rows"
|
|
|
|
dolt sql -q "alter table t add column c2 int default 2"
|
|
dolt add .
|
|
dolt commit -m "Add column c2"
|
|
|
|
run dolt merge mod2
|
|
log_status_eq 1
|
|
|
|
dolt conflicts resolve --ours t
|
|
}
|