From 2691562da1c9e5ae7a37f6083f2b80947109c024 Mon Sep 17 00:00:00 2001 From: Manan007224 Date: Mon, 8 Nov 2021 18:06:11 -0800 Subject: [PATCH] fix docs and local env scripts changes changes changes changes changes fix tests changes --- README.md | 4 +- dev.yml | 6 +++ docker-compose.yml | 3 ++ scripts/mysql/writer/create_users.sql | 3 ++ spec/README.md | 56 +++++++-------------------- 5 files changed, 28 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 6a7680aa..1d0593f1 100644 --- a/README.md +++ b/README.md @@ -240,14 +240,14 @@ bundle exec rake unit # all tests You can run an individual test as follows: ```bash -bundle exec rake unit TEST=spec/integration/atomic_switcher_spec.rb +bundle exec rake unit TEST=spec/unit/atomic_switcher_spec.rb ``` You can check the code coverage reporting for an individual test as follows: ```bash rm -rf coverage -COV=1 bundle exec rake unit TEST=spec/integration/atomic_switcher_spec.rb +COV=1 bundle exec rake unit TEST=spec/unit/atomic_switcher_spec.rb open coverage/index.html ``` diff --git a/dev.yml b/dev.yml index d6d67d11..b20a3245 100644 --- a/dev.yml +++ b/dev.yml @@ -25,3 +25,9 @@ commands: logs: desc: "See the DB logs (ctrl-c + ctrl-c to exit)" run: docker-compose logs -f + mysql: + desc: Open a MySQL console + run: mysql --protocol=tcp -uroot -ppassword -P 33006 + proxysql: + desc: Open a ProxySQL console + run: mysql -h127.0.0.1 -P6032 -uremote-admin -ppassword diff --git a/docker-compose.yml b/docker-compose.yml index 47149d01..22c6e140 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,10 +5,12 @@ services: image: percona:5.7 command: --server-id=1 + --log-bin --log-slave-updates=ON --gtid-mode=ON --enforce-gtid-consistency=ON --read-only=OFF + --max-connections=1000 hostname: 'mysql-1' volumes: - ./scripts/mysql/writer:/docker-entrypoint-initdb.d @@ -44,3 +46,4 @@ services: command: "proxysql -c /etc/proxysql.cnf -f --idle-threads" ports: - "33005:3306" + - "6032:6032" diff --git a/scripts/mysql/writer/create_users.sql b/scripts/mysql/writer/create_users.sql index 4793d6ac..9d0ca490 100644 --- a/scripts/mysql/writer/create_users.sql +++ b/scripts/mysql/writer/create_users.sql @@ -1,3 +1,6 @@ # Creates replication user in Writer +CREATE USER IF NOT EXISTS 'writer'@'%' IDENTIFIED BY 'password'; +CREATE USER IF NOT EXISTS 'reader'@'%' IDENTIFIED BY 'password'; + CREATE USER IF NOT EXISTS 'replication'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO' replication'@'%' IDENTIFIED BY 'password'; diff --git a/spec/README.md b/spec/README.md index d18c8bd6..6bfbc75b 100644 --- a/spec/README.md +++ b/spec/README.md @@ -1,58 +1,30 @@ -# Preparing for master slave integration tests +# Running master slave integration tests -## Configuration +## Setup -create ~/.lhm: +To setup local docker containers for mysql and proxysql used in integration tests via docker-compose run - mysqldir=/usr/local/mysql - basedir=~/lhm-cluster - master_port=3306 - slave_port=3307 + docker-compose up -d + ./scripts/helpers/wait-for-dbs.sh # wait for mysql and proxysql instances to be ready -mysqldir specifies the location of your mysql install. basedir is the -directory master and slave databases will get installed into. - -## Automatic setup - -### Run - - bin/lhm-spec-clobber.sh - -You can set the integration specs up to run against a master slave setup by -running the included that. This deletes the configured lhm master slave setup and reinstalls and configures a master slave setup. - -Follow the manual instructions if you want more control over this process. - -## Manual setup - -### set up instances - - bin/lhm-spec-setup-cluster.sh - -### start instances - - basedir=/opt/lhm-luster - mysqld --defaults-file="$basedir/master/my.cnf" - mysqld --defaults-file="$basedir/slave/my.cnf" - -### run the grants +Setup the dependency gems - bin/lhm-spec-grants.sh + export BUNDLE_GEMFILE=gemfiles/ar-5.0_mysql2.gemfile + bundle install -## run specs +## Run specs -Setup the dependency gems +To run the specs in master mode - export BUNDLE_GEMFILE=gemfiles/ar-4.2_mysql2.gemfile - bundle install + bundle exec rake integration To run specs in slave mode, set the MASTER_SLAVE=1 when running tests: - MASTER_SLAVE=1 bundle exec rake specs + MASTER_SLAVE=1 bundle exec rake integration -# connecting +# Connecting you can connect by running (with the respective ports): - mysql --protocol=TCP -p3307 + mysql --protocol=tcp -uroot -ppassword -P 33007