...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This section explains how to build and run this library's tests. It is not intended for the regular user.
This library has both unit and integration tests. Considering the different flavors the MySQL server has (v5.x, v8.x and MariaDB, with sutile differences) and the complex nature of the client/server protocol, we have given certain weight to the latter. Additionally, all examples are also built and run as integration tests, too (as they require access to a real database server).
By default, the build will only compile and run unit tests (i.e. if you run
b2 libs/mysql/test
or cmake
with no special args).
If you want to run the integration tests and the examples, you need a real
database server.
If you are using docker
, you can use one of the following images:
ghcr.io/anarthal-containers/mysql8
ghcr.io/anarthal-containers/mysql5
ghcr.io/anarthal-containers/mariadb
You can run the containers as follows:
# If you're on a system supporting UNIX sockets. Note that /var/run/mysqld # should be empty for this to work; you can specify a different directory, if it's not > docker run -p 3306:3306 -v /var/run/mysqld:/var/run/mysqld -d <IMAGE_NAME> # replace by the image you've chosen # If you're on a system that does not support UNIX sockets > docker run -p 3306:3306 -d ghcr.io/anarthal-containers/mysql8
You then need to run the following setup files, e.g. by running mysql
-u root < path/to/setup.sql
:
example/db_setup.sql
test/integration/db_setup.sql
test/integration/db_setup_sha256.sql
.
If you are using your own database server, you will need to install the SSL
certificates in tools/ssl
in your MySQL server and change your
config file so that your server uses them. More information here.
Next, define the following environment variables:
localhost
, define
BOOST_MYSQL_SERVER_HOST
to the host where it is running. If
you are using the Docker image as provided in this document, you don't
need this.
/var/run/mysqld/mysqld.sock
), define
BOOST_MYSQL_NO_UNIX_SOCKET_TESTS=1
.
BOOST_MYSQL_TEST_DB
to either mysql5
,
mysql8
or mariadb
, depending on the server you're
running.
If you are using b2
, you can build the targets boost/mysql/example//boost_mysql_all_examples
,
boost/mysql/test/integration//boost_mysql_integrationtests
and
boost/mysql/test
to build and run the tests.
If you are using cmake
, add -DBOOST_MYSQL_INTEGRATION_TESTS=ON
to enable building and running integration tests and examples, and then test
regularly with ctest
.