Skip to content

Commit 0d99b6a

Browse files
Merge pull request #153 from 26fe/test-multiple-mysql-version
setup travis to run test on multiple mysql version (5.6 and 5.7)
2 parents 7845fa0 + d8c0d49 commit 0d99b6a

File tree

5 files changed

+132
-59
lines changed

5 files changed

+132
-59
lines changed

.travis.yml

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -5,56 +5,16 @@ python:
55
- "3.3"
66
- "3.4"
77
- "pypy"
8+
env:
9+
- DB=mysql57
10+
- DB=mysql56
811
install:
9-
- "pip install ."
10-
- "pip install nose"
12+
- "pip install ."
13+
- "pip install nose"
1114
cache: apt
1215
before_script:
13-
# Remove old mysql version
14-
- "sudo /etc/init.d/mysql stop || true"
15-
- "sudo apt-get remove mysql-common mysql-server-5.5 mysql-server-core-5.5 mysql-client-5.5 mysql-client-core-5.5"
16-
- "sudo apt-get autoremove"
17-
# Config
18-
- "sudo sed -i'' 's/table_cache/table_open_cache/' /etc/mysql/my.cnf"
19-
- "sudo sed -i'' 's/log_slow_queries/slow_query_log/' /etc/mysql/my.cnf"
20-
21-
# Install new mysql version
22-
- "echo deb http://repo.mysql.com/apt/ubuntu/ precise mysql-5.6 | sudo tee /etc/apt/sources.list.d/mysql.list"
23-
- "sudo apt-key add .mysql/dev.mysql.com.gpg.key"
24-
- "sudo apt-get update"
25-
- "sudo env DEBIAN_FRONTEND=noninteractive apt-get install -o Dpkg::Options::='--force-confold' -q -y mysql-server"
26-
27-
# Cleanup old mysql datas
28-
- "sudo rm -rf /var/ramfs/mysql/"
29-
- "sudo mkdir /var/ramfs/mysql/"
30-
- "sudo chown mysql: /var/ramfs/mysql/"
31-
32-
# Config
33-
- "echo '[mysqld]' | sudo tee /etc/mysql/conf.d/replication.cnf"
34-
- "echo 'log-bin=mysql-bin' | sudo tee -a /etc/mysql/conf.d/replication.cnf"
35-
- "echo 'server-id=1' | sudo tee -a /etc/mysql/conf.d/replication.cnf"
36-
- "echo 'binlog-format = row' | sudo tee -a /etc/mysql/conf.d/replication.cnf"
37-
38-
- "sudo /etc/init.d/mysql stop || true"
39-
40-
# Install new datas
41-
- "sudo mysql_install_db --defaults-file=/etc/mysql/my.cnf --basedir=/usr --datadir=/var/ramfs/mysql --verbose"
42-
43-
# Enable GTID
44-
- "echo '[mysqld]' | sudo tee /etc/mysql/conf.d/gtid.cnf"
45-
- "echo 'gtid_mode=ON' | sudo tee -a /etc/mysql/conf.d/gtid.cnf"
46-
- "echo 'enforce_gtid_consistency' | sudo tee -a /etc/mysql/conf.d/gtid.cnf"
47-
- "echo 'binlog_format=ROW' | sudo tee -a /etc/mysql/conf.d/gtid.cnf"
48-
- "echo 'log_slave_updates' | sudo tee -a /etc/mysql/conf.d/gtid.cnf"
49-
50-
# Start mysql (avoid errors to have logs)
51-
- "sudo /etc/init.d/mysql start || true"
52-
- "sudo tail -1000 /var/log/syslog"
53-
54-
- "mysql --version"
55-
- "mysql -e 'SELECT VERSION();'"
56-
- "mysql -u root -e \"GRANT ALL PRIVILEGES ON *.* TO ''@'localhost';\""
57-
58-
- "mysql -e 'CREATE DATABASE pymysqlreplication_test;'"
16+
- env | grep DB
17+
- bash -c "if [ '$DB' = 'mysql57' ]; then sudo ./scripts/install_mysql_sandbox.sh; ./scripts/install_mysql57_on_sandbox.sh; fi"
18+
- bash -c "if [ '$DB' = 'mysql56' ]; then sudo ./scripts/install_mysql56.sh; fi"
5919
script:
6020
- "nosetests"

pymysqlreplication/tests/base.py

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,32 @@ def ignoredEvents(self):
1919
return []
2020

2121
def setUp(self):
22-
self.database = {
23-
"host": "localhost",
24-
"user": "root",
25-
"passwd": "",
26-
"port": 3306,
27-
"use_unicode": True,
28-
"charset": "utf8",
29-
"db": "pymysqlreplication_test"
30-
}
31-
if os.getenv("TRAVIS") is not None:
32-
self.database["user"] = "travis"
22+
23+
db = os.environ.get('DB')
24+
if db == 'mysql57':
25+
# mysql 5.7 sandbox running on travis
26+
self.database = {
27+
"host": "localhost",
28+
"user": "root",
29+
"passwd": "msandbox",
30+
"port": 5712,
31+
"use_unicode": True,
32+
"charset": "utf8",
33+
"db": "pymysqlreplication_test"
34+
}
35+
else:
36+
# default
37+
self.database = {
38+
"host": "localhost",
39+
"user": "root",
40+
"passwd": "",
41+
"port": 3306,
42+
"use_unicode": True,
43+
"charset": "utf8",
44+
"db": "pymysqlreplication_test"
45+
}
46+
if os.getenv("TRAVIS") is not None:
47+
self.database["user"] = "travis"
3348

3449
self.conn_control = None
3550
db = copy.copy(self.database)

scripts/install_mysql56.sh

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env bash
2+
3+
set -x
4+
5+
# Remove old mysql version
6+
/etc/init.d/mysql stop || true
7+
apt-get remove mysql-common mysql-server-5.5 mysql-server-core-5.5 mysql-client-5.5 mysql-client-core-5.5
8+
apt-get autoremove
9+
10+
# Config
11+
sed -i'' 's/table_cache/table_open_cache/' /etc/mysql/my.cnf
12+
sed -i'' 's/log_slow_queries/slow_query_log/' /etc/mysql/my.cnf
13+
14+
# Install new mysql version
15+
echo deb http://repo.mysql.com/apt/ubuntu/ precise mysql-5.6 | tee /etc/apt/sources.list.d/mysql.list
16+
apt-key add .mysql/dev.mysql.com.gpg.key
17+
apt-get update
18+
env DEBIAN_FRONTEND=noninteractive apt-get install -o Dpkg::Options::='--force-confold' -q -y mysql-server
19+
20+
# Cleanup old mysql datas
21+
rm -rf /var/ramfs/mysql/
22+
mkdir /var/ramfs/mysql/
23+
chown mysql: /var/ramfs/mysql/
24+
25+
# Config
26+
echo '[mysqld]' | tee /etc/mysql/conf.d/replication.cnf
27+
echo 'log-bin=mysql-bin' | tee -a /etc/mysql/conf.d/replication.cnf
28+
echo 'server-id=1' | tee -a /etc/mysql/conf.d/replication.cnf
29+
echo 'binlog-format = row' | tee -a /etc/mysql/conf.d/replication.cnf
30+
31+
/etc/init.d/mysql stop || true
32+
33+
# Install new datas
34+
mysql_install_db --defaults-file=/etc/mysql/my.cnf --basedir=/usr --datadir=/var/ramfs/mysql --verbose
35+
36+
# Enable GTID
37+
echo '[mysqld]' | tee /etc/mysql/conf.d/gtid.cnf
38+
echo 'gtid_mode=ON' | tee -a /etc/mysql/conf.d/gtid.cnf
39+
echo 'enforce_gtid_consistency' | tee -a /etc/mysql/conf.d/gtid.cnf
40+
echo 'binlog_format=ROW' | tee -a /etc/mysql/conf.d/gtid.cnf
41+
echo 'log_slave_updates' | tee -a /etc/mysql/conf.d/gtid.cnf
42+
43+
# Start mysql (avoid errors to have logs)
44+
/etc/init.d/mysql start || true
45+
tail -1000 /var/log/syslog
46+
47+
mysql --version
48+
mysql -e 'SELECT VERSION();'
49+
mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO ''@'localhost';"
50+
51+
mysql -e 'CREATE DATABASE pymysqlreplication_test;'

scripts/install_mysql57_on_sandbox.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/usr/bin/env bash
2+
3+
mkdir $HOME/bins
4+
mkdir $HOME/sandboxes
5+
6+
cd $HOME/bins
7+
curl -O http://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
8+
tar xfz mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
9+
ln -s mysql-5.7.12-linux-glibc2.5-x86_64 5.7.12
10+
11+
export SANDBOX_BINARY=$HOME/bins
12+
export SANDBOX_HOME=$HOME/sandboxes
13+
make_sandbox 5.7.12 -- --no_confirm --no_run
14+
15+
CNF=$SANDBOX_HOME/msb_5_7_12/my.sandbox.cnf
16+
17+
echo 'log-bin=mysql-bin' | tee -a $CNF
18+
echo 'server-id=1' | tee -a $CNF
19+
echo 'binlog-format =row' | tee -a $CNF
20+
echo 'gtid_mode=ON' | tee -a $CNF
21+
echo 'enforce_gtid_consistency' | tee -a $CNF
22+
echo 'log_slave_updates' | tee -a $CNF
23+
24+
cat $CNF
25+
26+
$SANDBOX_HOME/msb_5_7_12/start
27+
28+
MYSQL=$SANDBOX_BINARY/5.7.12/bin/mysql
29+
$MYSQL --version
30+
$MYSQL -e 'SELECT VERSION();'
31+
# $MYSQL -u root -e "GRANT ALL PRIVILEGES ON *.* TO ''@'localhost';"
32+
$MYSQL -e 'CREATE DATABASE pymysqlreplication_test;'
33+
$MYSQL -e 'show variables;'
34+

scripts/install_mysql_sandbox.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/usr/bin/env bash
2+
3+
set -x
4+
5+
apt-get install tree
6+
apt-get install libaio1
7+
8+
curl -O http://www.cpan.org/authors/id/G/GM/GMAX/MySQL-Sandbox-3.1.05.tar.gz
9+
tar xfz MySQL-Sandbox-3.1.05.tar.gz
10+
cd MySQL-Sandbox-3.1.05
11+
perl Makefile.PL
12+
make install
13+

0 commit comments

Comments
 (0)