Testing
Install Composer metadata and run basic checks:
composer validate --strict --no-check-publishcomposer installcomposer run lintPostgreSQL Tests
Section titled “PostgreSQL Tests”Run the PostgreSQL PHPUnit suite:
PGSQL_TEST_DSN='pgsql:host=127.0.0.1;port=5432;dbname=wordpress_test' \PGSQL_TEST_USER='wordpress' \PGSQL_TEST_PASSWORD='wordpress' \composer run test-postgresqlRun the focused PostgreSQL smoke test:
PGSQL_TEST_DSN='pgsql:host=127.0.0.1;port=5432;dbname=wordpress_test' \PGSQL_TEST_USER='wordpress' \PGSQL_TEST_PASSWORD='wordpress' \composer run test-smokeDuckDB Tests
Section titled “DuckDB Tests”Install the DuckDB PHP client and C library:
composer config --no-plugins allow-plugins.satur.io/duckdb-auto truecomposer require --dev --no-plugins --with-all-dependencies satur.io/duckdb-autocomposer dump-autoload./vendor/bin/install-c-libRun the DuckDB suite:
WP_DUCKDB_TESTS=1 \WP_DUCKDB_AUTOLOAD="$PWD/vendor/autoload.php" \DUCKDB_PHP_AUTOLOAD="$PWD/vendor/autoload.php" \composer run test-duckdbRun the extended DuckDB parity suite:
WP_DUCKDB_TESTS=1 \WP_DUCKDB_AUTOLOAD="$PWD/vendor/autoload.php" \DUCKDB_PHP_AUTOLOAD="$PWD/vendor/autoload.php" \composer run test-duckdb-parityWordPress Plugin Smoke
Section titled “WordPress Plugin Smoke”Run a disposable WordPress site with WooCommerce and Query Monitor against the verifiable DuckDB backends:
WORDPRESS_VERSION=7.0 \WOOCOMMERCE_VERSION=10.9.1 \QUERY_MONITOR_VERSION=4.0.7 \./bin/duckdb-wordpress-plugin-smoke.sh duckdb json csv parquetRun a custom pipe-delimited backend:
WORDPRESS_VERSION=7.0 \WOOCOMMERCE_VERSION=10.9.1 \QUERY_MONITOR_VERSION=4.0.7 \WP_DUCKDB_BACKEND_FILE_EXTENSION=psv \WP_DUCKDB_BACKEND_READ_SQL="SELECT * FROM read_csv_auto({path}, HEADER = true, DELIM = '|')" \WP_DUCKDB_BACKEND_WRITE_SQL="COPY {table} TO {path} (HEADER, DELIMITER '|')" \./bin/duckdb-wordpress-plugin-smoke.sh pipe_textThe smoke installs WordPress, activates WooCommerce and Query Monitor, creates a product, verifies custom tables, performs HTTP requests, checks cart/session state, verifies Query Monitor output, and fails on WordPress database errors.
Benchmarks
Section titled “Benchmarks”Run a local WordPress HTTP benchmark:
WORDPRESS_VERSION=7.0 \WP_DUCKDB_BENCHMARK_BACKENDS="mysql sqlite duckdb sqlite_attach mysql_attach json csv parquet s3_parquet" \WP_DUCKDB_BENCHMARK_CONCURRENCY="1 2 4 8" \WP_DUCKDB_BENCHMARK_SERVER_WORKERS=4 \composer run benchmark-databasesEach run writes raw JSONL events under
artifacts/duckdb-benchmarks/runs/<run-id>/ and regenerates the benchmark
report data under docs/benchmarks/.
Readiness
Section titled “Readiness”Run the production-readiness evidence harness:
WP_DUCKDB_TESTS=1 \WP_DUCKDB_AUTOLOAD="$PWD/vendor/autoload.php" \DUCKDB_PHP_AUTOLOAD="$PWD/vendor/autoload.php" \composer run readiness-duckdbStructured results are written under
artifacts/duckdb-production-readiness/runs/.