From 46d272cd202c80318c2bd4e0f52a3f544edc58e0 Mon Sep 17 00:00:00 2001 From: reshke Date: Fri, 23 Jun 2023 06:28:32 +0000 Subject: [PATCH] Add regression tests local run script --- Makefile | 13 ++++-- cmd/router/main.go | 4 +- script/regress_local.sh | 7 ++++ .../tests/router/expected/shard_routing.out | 40 ++++++++++++++++++- .../tests/router/sql/shard_routing.sql | 8 ++++ 5 files changed, 66 insertions(+), 6 deletions(-) create mode 100755 script/regress_local.sh diff --git a/Makefile b/Makefile index 4a11f5b9e..6e5f92c20 100644 --- a/Makefile +++ b/Makefile @@ -59,18 +59,25 @@ run: build_images docker-compose build client docker-compose run --entrypoint /bin/bash client +proxy_2sh_run: + ./spqr-router run -c ./examples/2shardproxy.yaml -d + proxy_run: - ./spqr-router run -c ./config-example/router.yaml + ./spqr-router run -c ./examples/router.yaml coordinator_run: - ./spqr-coordinator run -c ./config-example/coordinator.yaml + ./spqr-coordinator run -c ./examples/coordinator.yaml pooler_run: - ./spqr-router run -c ./config-example/localrouter.yaml + ./spqr-router run -c ./examples/localrouter.yaml clean: rm -f spqr-router spqr-coordinator spqr-mover spqr-worldmock spqr-balancer + +regress_local: proxy_2sh_run + ./script/regress_local.sh + regress: build_images docker-compose -f test/regress/docker-compose.yaml up --remove-orphans --exit-code-from regress --build coordinator router shard1 shard2 regress diff --git a/cmd/router/main.go b/cmd/router/main.go index 18969df5b..431bb28b9 100644 --- a/cmd/router/main.go +++ b/cmd/router/main.go @@ -23,6 +23,7 @@ var ( rcfgPath string saveProfie bool profileFile string + daemonize bool ) var rootCmd = &cobra.Command{ @@ -39,6 +40,7 @@ var rootCmd = &cobra.Command{ func init() { rootCmd.PersistentFlags().StringVarP(&rcfgPath, "config", "c", "/etc/spqr/router.yaml", "path to config file") rootCmd.PersistentFlags().StringVarP(&profileFile, "profile-file", "p", "/etc/spqr/router.prof", "path to profile file") + rootCmd.PersistentFlags().BoolVarP(&daemonize, "daemonize", "d", false, "daemonize router binary or not") rootCmd.PersistentFlags().BoolVar(&saveProfie, "profile", false, "path to config file") rootCmd.AddCommand(runCmd) } @@ -53,7 +55,7 @@ var runCmd = &cobra.Command{ } spqrlog.RebornLogger(rcfg.LogFileName) - if rcfg.Daemonize { + if rcfg.Daemonize || daemonize { cntxt := &daemon.Context{ PidFileName: rcfg.PidFileName, PidFilePerm: 0644, diff --git a/script/regress_local.sh b/script/regress_local.sh new file mode 100755 index 000000000..5af97b3c9 --- /dev/null +++ b/script/regress_local.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +for name in `ls -1 test/regress/tests/router/sql/`; +do + cat test/regress/tests/router/sql/$name | psql "host=localhost port=6432 dbname=db1" --echo-all --quiet > test/regress/tests/router/expected/$(basename $name .sql).out 2>&1; +done + diff --git a/test/regress/tests/router/expected/shard_routing.out b/test/regress/tests/router/expected/shard_routing.out index 195df3ec6..e414860a4 100644 --- a/test/regress/tests/router/expected/shard_routing.out +++ b/test/regress/tests/router/expected/shard_routing.out @@ -107,6 +107,14 @@ INSERT INTO xxtt1 (i, w_id, j) VALUES(-12, 15, 123123); NOTICE: send query to shard(s) : sh1 INSERT INTO xxtt1 (j, i, w_id) VALUES(2121221, -211212, 23); NOTICE: send query to shard(s) : sh2 +INSERT INTO xxtt1 (j, i, w_id) VALUES(2121221, -211212, 21); +NOTICE: send query to shard(s) : sh2 +INSERT INTO xxtt1 (j, i, w_id) VALUES(2121221, -211212, 21); +NOTICE: send query to shard(s) : sh2 +INSERT INTO xxtt1 (j, i, w_id) VALUES(2121221, -211212, 21); +NOTICE: send query to shard(s) : sh2 +INSERT INTO xxtt1 (j, i, w_id) VALUES(2121221, -211212, 21); +NOTICE: send query to shard(s) : sh2 SELECT * FROM xxtt1 WHERE w_id >= 1; NOTICE: send query to shard(s) : sh1 i | j | w_id @@ -138,7 +146,11 @@ NOTICE: send query to shard(s) : sh2 12 | | 21 2121221 | | 21 -211212 | 2121221 | 23 -(5 rows) + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 +(9 rows) -- check that aliases works SELECT * FROM xxtt1 a WHERE a.w_id >= 1; @@ -172,7 +184,31 @@ NOTICE: send query to shard(s) : sh2 12 | | 21 2121221 | | 21 -211212 | 2121221 | 23 -(5 rows) + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 +(9 rows) + +SELECT * FROM xxtt1 a WHERE a.w_id = 21 and j + i != 0; +NOTICE: send query to shard(s) : sh2 + i | j | w_id +---------+---------+------ + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 +(4 rows) + +SELECT * FROM xxtt1 a WHERE a.w_id = 21 and w_id <= 30 and j + i != 0; +NOTICE: send query to shard(s) : sh2 + i | j | w_id +---------+---------+------ + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 + -211212 | 2121221 | 21 +(4 rows) -- check that `INSERT FROM SELECT` works INSERT INTO xx SELECT * FROM xx a WHERE a.w_id = 20; diff --git a/test/regress/tests/router/sql/shard_routing.sql b/test/regress/tests/router/sql/shard_routing.sql index cae4d9f77..ff5d49c7a 100644 --- a/test/regress/tests/router/sql/shard_routing.sql +++ b/test/regress/tests/router/sql/shard_routing.sql @@ -42,6 +42,10 @@ INSERT INTO xxtt1 (i, w_id) VALUES(2121221, 21); INSERT INTO xxtt1 (i, j, w_id) VALUES(-12, 1, 1); INSERT INTO xxtt1 (i, w_id, j) VALUES(-12, 15, 123123); INSERT INTO xxtt1 (j, i, w_id) VALUES(2121221, -211212, 23); +INSERT INTO xxtt1 (j, i, w_id) VALUES(2121221, -211212, 21); +INSERT INTO xxtt1 (j, i, w_id) VALUES(2121221, -211212, 21); +INSERT INTO xxtt1 (j, i, w_id) VALUES(2121221, -211212, 21); +INSERT INTO xxtt1 (j, i, w_id) VALUES(2121221, -211212, 21); SELECT * FROM xxtt1 WHERE w_id >= 1; SELECT * FROM xxtt1 WHERE w_id >= 20; @@ -52,6 +56,10 @@ SELECT * FROM xxtt1 a WHERE a.w_id >= 1; SELECT * FROM xxtt1 a WHERE a.w_id >= 20; SELECT * FROM xxtt1 a WHERE a.w_id >= 21; + +SELECT * FROM xxtt1 a WHERE a.w_id = 21 and j + i != 0; +SELECT * FROM xxtt1 a WHERE a.w_id = 21 and w_id <= 30 and j + i != 0; + -- check that `INSERT FROM SELECT` works INSERT INTO xx SELECT * FROM xx a WHERE a.w_id = 20; SELECT * FROM xx WHERE w_id >= 20;