#############################################################################
# sysbench-lua / BMK Example User Properties File (MySQL)
#
# Created: January 2026
# Last Modified: January 2026
# Version: 1.0
#
# This file is part of the Test Automation Framework (TAF).
# Copyright (c) 2025-2026 MariaDB Foundation and Jonathan "jeb" Miller
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 or later of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 
#
# Licensed under the GNU General Public License, version 2 or later (GPLv2+).
# See https://www.gnu.org/licenses/ for details.
#
# PURPOSE:
#     Provide an example user-level properties file for running sysbench-lua
#     or BMK workloads against MariaDB under TAF. This file demonstrates how
#     to override default sysbench-lua and BMK settings supplied by:
#         - sysbench_lua_default.properties
#         - auto-populated TAF runtime values
#         - command-line overrides
#
# ARCHITECTURAL ROLE:
#     - Acts as the user-override layer in the TAF configuration resolution
#       chain for sysbench-lua and BMK workloads.
#     - Supplies a documented template for MariaDB-specific sysbench-lua and
#       BMK configuration without modifying framework defaults.
#     - Ensures that contributors override only what is necessary while
#       preserving deterministic, contributor-proof behavior.
#
# WHAT THIS FILE DOES NOT DO:
#     - Does not define global defaults (see sysbench_lua_default.properties).
#     - Does not validate MariaDB, sysbench-lua, or BMK installation.
#     - Does not auto-populate missing values.
#     - Does not configure sysbench-lua or BMK itself.
#
# CONTRACT:
#     TAF merges properties in the following order:
#         1. TAF defaults
#         2. auto-populate (special null handling)
#         3. sysbench-lua / BMK defaults
#         4. user properties file (this file)
#         5. command-line overrides
#
#     - Any property defined in the default file may be overridden here.
#     - Paths may be absolute or relative to the TAF root.
#
# GUARANTEES:
#     - All example lines below are preserved exactly as written.
#     - This file is safe to copy, modify, and use as a template.
#     - No framework defaults are modified here; only user-level overrides
#       belong in this file.
#
# NOTES:
#     - Sysbench-lua must be compiled, or BMK must be installed, before
#       executing this test case.
#     - BMK should be unpacked under:
#           taf-perl/client_source/BMK
#     - MariaDB installations used for sysbench-lua should be placed under
#           taf-perl/database_install/
#       and referenced via taf.database_install_dir in this file.
#     - Uncomment and override only the values you need.
#
# EXAMPLE EXECUTION:
#     perl taf.pl --prop=./properties/mariadb/beta/sysbench_lua.properties
#     perl taf.pl --prop=./properties/mariadb/beta/sysbench_lua.properties --action=setup-client
#############################################################################

#############################################################################
# TAF SETTINGS (GLOBAL)
#
# These settings control TAF behavior for this sysbench-lua or BMK test run:
#     - what action to perform
#     - which test suite to execute
#     - how long to run the workload
#     - how many iterations and threads to use
#     - warmup behavior
#     - report generation
#############################################################################

## Action TAF should perform.
# Run "perl taf.pl --list-actions" for the full list.
taf.action=init-start-db-run-tests

# Optional comment describing the purpose of this run.
taf.comments="MariaDB Cached Reads performance using Sysbench-lua test suite"

# Host on which the test is executed.
taf.host=localhost

#############################################################################
# TEST EXECUTION SETTINGS
#############################################################################

# Duration of the workload in seconds.
taf.duration=300

# Number of iterations to run for each thread count.
taf.iterations=3

# Name of the test suite to load.
taf.test_suite=sysbench-lua

# Classification of this run.
# Valid values: adhoc, investigation, production, rerun, release
taf.test_type=adhoc

# Comma-separated list of test cases to execute.
taf.tests=POINT_SELECT,OLTP_RO,OLTP_RW

# Comma-separated list of thread counts to test.
taf.threads=4,8,16,32,64,128

# Warmup duration in seconds.
taf.warmup_duration=200

# Number of warmup threads.
taf.warmup_threads=64

#############################################################################
# TIMING CONTROLS
#############################################################################

# Sleep X seconds after test setup.
#taf.sleep_after_test_setup=60

# Sleep X seconds after test run.
#taf.sleep_after_test_run=60

# Turns on CPU-based rest detection for the DB process.
taf.db_process_rest_enable=true

# CPU percent at or below this value counts as "rest".
taf.db_process_rest_low=6

# CPU percent at or above this value resets the rest counter (DB not idle).
taf.db_process_rest_high=20

#############################################################################
# REPORT GENERATION
#############################################################################

# Comma-separated list of report plugins to run after the test.
taf.report_plugin=taf_res_raw_text.pm,text.pm,chart_and_test_info_results_tables_html.pm

#############################################################################
# DATABASE SETTINGS
#
# These settings control how TAF connects to the MySQL server for this run.
# Any value left commented out will fall back to:
#     1. TAF defaults
#     2. auto-populated values (special null handling)
#     3. command-line overrides
#############################################################################

# Whether to connect using a UNIX socket instead of TCP.
# true  = use socket
# false = use TCP (default)
taf.db_clients_use_unix_socket=true

# Path to the MariaDB configuration file to feed into mariadbd.
# This must be a valid MariaDB config file.
taf.db_config_file=./database_config_files/mariadb/mariadb_simple_2gbp.cnf

# Optional: directory where the database software has been unpacked.
# If omitted, TAF attempts to auto-detect the install directory.
# taf.db_software_install_dir=/home/taf-perl/database_software_installs/mariadb-12.3.0-linux-systemd-x86_64/

# Optional: explicit socket path for MySQL connections.
# Only needed when using UNIX socket mode.
# taf.db_socket=/home/taf-perl/tmp/mariadb.sock

# Optional: override the storage engine.
# Default is taken from TAF or test suite defaults.
taf.db_engine=innodb

#############################################################################
# SYSBENCH-LUA SETTINGS
#
# These settings apply ONLY to the sysbench-lua test suite. They control:
#     - whether BMK integration is enabled
#     - table and row counts for workload generation
#     - intermediate result reporting
#
# NOTE:
#     If sysbench_lua.use_bmk is commented out or set to false, TAF will
#     attempt to run the native sysbench-lua executable instead, provided
#     it has been built and is available under client_source/sysbench-lua/.
#
# These values override the defaults in sysbench_lua_default.properties.
#############################################################################

# Which db driver
sysbench_lua.db_driver=mariadb

# Enable BMK integration for sysbench-lua.
# Comment this out or set to false to use the native sysbench-lua executable.
#sysbench_lua.use_bmk=true

# Number of rows per table for sysbench workloads.
sysbench_lua.number_of_rows=1000000

# Number of tables to create for the workload.
sysbench_lua.number_of_tables=8

# Intermediate result reporting mode.
# 0 = disabled
# 1 = minimal
# 2 = detailed
sysbench_lua.intermediate_result=2

#############################################################################
# SYSBENCH DEBUG SETTINGS
#############################################################################

# Enable verbose sysbench debugging output.
 sysbench_lua.debug_sysbench=false

# TAF Debug
taf.tools_debug=true
taf.verbose=true