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