GA

2021/06/09

Percona Toolkitのテスト環境を整える

TL;DR

  • Setting up the development environment の通りに ~やるつもりがない人または~ やっても上手くいかなかった人向け
    • ほら、テストしたいバージョンがいろいろある人とかさ

Setting up the development environment は一通り目を通しておいた方が良い気がします。

Percona Toolkitのテストは MySQL::Sandbox っぽいスクリプトを内包していて、バイナリをポンと置いて環境変数をセットするだけで、3つくらいの mysqld を起動してそれに対してテストを走らせてくれます。

というわけでまずは mysqld 実行ファイルが必要。PXCのテストをするつもりでないなら吊るしのMySQLでも良い。ただし INSTALL_LAYOUT=STANDALONE を想定しているので、rpmでインストールするのはダメ。Linux - Genericのtarボールを解凍するのが良いんではないか。

$ wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
$ tar -C /tmp -xf mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz
$ ll -d /tmp/mysql-8.0.25-linux-glibc2.12-x86_64
$ export PERCONA_TOOLKIT_SANDBOX=/tmp/mysql-8.0.25-linux-glibc2.12-x86_64

展開した先のディレクトリを PERCONA_TOOLKIT_SANDBOX 環境変数に詰めておく。

次はPercona Toolkitのソースコードを持ってくる。

$ git clone https://github.com/percona/percona-toolkit.git
$ cd percona-toolkit
$ pwd  ### まあどこでもいいんだけど
/root/git/percona-toolkit
$ export PERCONA_TOOLKIT_BRANCH="$PWD"   ### percona-toolkitディレクトリが PERCONA_TOOLKIT_BRANCH環境変数
$ export PERL5LIB=${PERCONA_TOOLKIT_BRANCH}/lib ### percona-toolkit/lib をPERL5LIBに追加

percona-toolkitのトップディレクトリとlibディレクトリをそれぞれ環境変数で指定。
全部設定が通ってれば、sandboxディレクトリの test-env スクリプトでテスト用のインスタンスが立ち上げられる。

$ ./sandbox/test-env checkconfig
PERCONA_TOOLKIT_BRANCH=/root/git/percona-toolkit - ok
PERCONA_TOOLKIT_SANDBOX=/tmp/mysql-8.0.25-linux-glibc2.12-x86_64 - ok
Percona Toolkit test environment config is ok!

$ ./sandbox/test-env stop
MySQL test server on port 12349 does not exist.
MySQL test server on port 12348 does not exist.
Stopping MySQL test server on port 12347... OK (1s)
Stopping MySQL test server on port 12346... OK (11s)
Stopping MySQL test server on port 12345... OK (12s)
MySQL test server on port 2903 does not exist.
MySQL test server on port 2902 does not exist.
MySQL test server on port 2901 does not exist.
MySQL test server on port 2900 does not exist.
Percona Toolkit test environment stopped.
[root@81dc970554a2 percona-toolkit]$ ./sandbox/test-env start
Creating default databases ...
Starting MySQL test server on port 12345... return 0
OK (1s)
Creating default databases ...
Starting MySQL test server on port 12346... return 0
OK (2s)
Creating default databases ...
Starting MySQL test server on port 12347... return 0
OK (9s)
Loading sakila database... OK
LOAD DATA LOCAL INFILE is enabled
Waiting for replication to finish... OK
Percona Toolkit test environment started with MySQL v8.0.

こいつらが起動している状態でテストを実行してやればOK。
t ディレクトリの真下ではなくて、コマンドごとにさらにディレクトリが掘ってあるのでその単位で prove してやる。

$ ps auxwww | grep mysqld
root      2358  4.1  8.5 1636704 86304 pts/0   Sl   09:52   0:08 /tmp/mysql-8.0.25-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/tmp/12346/my.sandbox.cnf -u root --init-file /tmp/12346/mysql-init
root      2510  4.7 28.6 1635464 290640 pts/0  Sl   09:52   0:09 /tmp/mysql-8.0.25-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/tmp/12347/my.sandbox.cnf -u root --init-file /tmp/12347/mysql-init
root      2703  5.0 33.9 1634624 344132 pts/0  Sl   09:55   0:02 /tmp/mysql-8.0.25-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/tmp/12345/my.sandbox.cnf -u root --init-file /tmp/12345/mysql-init
root      2986  0.0  0.0   9092   672 pts/0    S+   09:56   0:00 grep --color=auto mysqld

$ prove t/pt-table-usage/
t/pt-table-usage/basics.t .................... ok
t/pt-table-usage/create_table_definitions.t .. ok
t/pt-table-usage/explain_extended.t .......... ok
All tests successful.
Files=3, Tests=21,  5 wallclock secs ( 0.03 usr  0.01 sys +  0.91 cusr  0.44 csys =  1.39 CPU)
Result: PASS

ちなみにMySQL::Sandboxっぽいので、 /tmp/ポート番号/use とか起動すると中に入れる。

$ ll /tmp/12345/
total 28
drwxr-x--- 8 root root 4096 Jun  9 09:55 data
-rw-r--r-- 1 root root 1475 Jun  9 09:52 my.sandbox.cnf
-rw-r--r-- 1 root root  529 Jun  9 09:52 mysql-init
srwxrwxrwx 1 root root    0 Jun  9 09:55 mysql_sandbox12345.sock
-rw------- 1 root root    5 Jun  9 09:55 mysql_sandbox12345.sock.lock
-rwxr-xr-x 1 root root 2589 Jun  9 09:52 start
-rwxr-xr-x 1 root root 1537 Jun  9 09:52 stop
-rwxr-xr-x 1 root root  135 Jun  9 09:52 use

8.0.25だと t/pt-show-grants が転けたとか、5.6ベースでも t/pt-online-schema-change が転けるとかいろいろあるけど取り敢えずここまで

0 件のコメント :

コメントを投稿