Integration Tests#
MLFP integration tests automatically provision the following prerequisites via fixtures:
Run a Docker instance of Exasol for accessing the BucketFS
Build a Script Language Container (SLC)
Run an MLflow server
As these steps can be quite time-consuming, there are options to skip these steps and reuse artifacts and services already provided on your local machine.
Reusing an Existing Database#
For reusing an existing database you can use the following pytest CLI options:
pytest \
--backend=onprem \
--itde-db-version=external \
--bucketfs-password "$BUCKETFS_PASSWORD"
See Pytest Plugin Exasol-Backend.
Reuse SLC#
For skipping building and deploying the SLC you can add option
--skip-slc. This will also cause the test fixture language_alias to
return PYTHON3.
If you have installed the SLC already you can reuse it by adding pytest CLI
option --language-alias MLFLOW.
Reusing the MLflow Server#
For reusing an already running instance of MLflow server you can add option
--mlflow-server:
pytest --mlflow-server http://localhost:5000
MLflow Tracking URI in UDFs#
Please note when running Exasol Docker-DB in a virtual machine, UDFs cannot
access the MLflow server via localhost, but only via the default gateway
of the virtual machine.
When using a Lima VM, you can retrieve the IP address with the following command:
function vmip() {
limactl shell default ip route show match default | awk '{print $3}'
}
Here is a complete example:
pytest \
--skip-slc --backend onprem --itde-db-version external \
--bucketfs-password "$BUCKETFS_PASSWORD" \
--mlflow-server http://$(vmip):5000 --language-alias MLFLOW \
test/integration/with_mlflow_server/test_udfs.py