Created
February 14, 2018 18:43
-
-
Save bofm/5c9571a2b27e67f77b744db4e3711b7d to your computer and use it in GitHub Desktop.
tarantool replication test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
cat <<EE > app.lua | |
box.cfg { | |
listen = 3301, | |
read_only = false, | |
wal_mode = "write", | |
replication = {"t1:3301", "t2:3301"}, | |
} | |
box.once('schema', function() | |
box.schema.user.grant("guest", "read,write,execute", "universe", nil, {if_not_exists = true}) | |
s = box.schema.space.create("x") | |
s:create_index("primary", {type = "hash"}) | |
end) | |
require("fiber").create(function() | |
while true do | |
box.space.x:replace{require("math").random(10000), 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'} | |
box.space.x:delete(require("math").random(10000)) | |
require("fiber").sleep(0.01) | |
end | |
end) | |
EE | |
cat <<EE > docker-compose-repl-test.yml | |
version: '3.4' | |
services: | |
t1: | |
image: progaudi/tarantool:1.7.7-232-g47c4f8a97 | |
volumes: | |
- ./app.lua/:/opt/tarantool/app.lua | |
command: tarantool /opt/tarantool/app.lua | |
entrypoint: '' | |
t2: | |
image: progaudi/tarantool:1.7.7-232-g47c4f8a97 | |
volumes: | |
- ./app.lua/:/opt/tarantool/app.lua | |
command: tarantool /opt/tarantool/app.lua | |
entrypoint: '' | |
EE | |
_dc_bin=$(which docker-compose) | |
docker-compose() { | |
$_dc_bin -f docker-compose-repl-test.yml $@ | |
} | |
trap "docker-compose kill t1 t2; rm -f docker-compose-repl-test.yml app.lua; exit 1" SIGINT SIGTERM EXIT | |
wait_event_loop() { | |
while true; do | |
docker-compose logs $1 | grep "main C> entering the event loop" && break | |
done | |
} | |
tt_eval() { | |
echo "$2" | docker exec -i $(docker-compose ps -q $1) tarantoolctl connect 3301 | |
} | |
check_repl_follow() { | |
local c=$1 | |
tt_eval $c 'box.info().replication' | grep follow >/dev/null && echo "$c: follow" || ( echo "$c: NOT FOLLOW" && false ) | |
} | |
docker-compose kill t1 t2 | |
docker-compose rm -fv t1 t2 | |
docker-compose up -d t1 t2 | |
wait_event_loop t1 | |
wait_event_loop t2 | |
sleep 2 | |
while true; do | |
i=t$(( $(( $RANDOM >> 14 )) + 1)) # t1 or t2 | |
docker-compose kill $i | |
docker-compose rm -fv $i | |
docker-compose up -d $i | |
wait_event_loop $i | |
sleep 5 | |
check_repl_follow t1 && check_repl_follow t2 || break | |
done | |
docker-compose logs t1 t2 |
Author
bofm
commented
Feb 14, 2018
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment