Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```

Expand Down
6 changes: 6 additions & 0 deletions dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,9 @@ commands:
logs:
desc: "See the DB logs (ctrl-c + ctrl-c to exit)"
run: docker-compose logs -f
mysql:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's a really good addition 👍

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
3 changes: 3 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -44,3 +46,4 @@ services:
command: "proxysql -c /etc/proxysql.cnf -f --idle-threads"
ports:
- "33005:3306"
- "6032:6032"
3 changes: 3 additions & 0 deletions scripts/mysql/writer/create_users.sql
Original file line number Diff line number Diff line change
@@ -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';
56 changes: 14 additions & 42 deletions spec/README.md
Original file line number Diff line number Diff line change
@@ -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
Comment thread
EtienneBerubeShopify marked this conversation as resolved.