#!/bin/bash

function ti_cmd_sysbench_runs()
{
	local ti_file="${1}"
	local ti_args="${2}"
	local cmd_mod_names="${3}"
	local cmd_hosts="${4}"
	local cmd_indexes="${5}"
	local mods="${6}"
	shift 6

	if [ -z "${1+x}" ]; then
		echo "[cmd sysbench/run] usage: <cmd> threads duration_sec workload" >&2
		return 1
	fi

	local threads="${1}"
	local dur="${2}"
	local workload="${3}"

	local entry_dir="${ti_file}.data"

	local tidb_mod=`from_mods_random_mod "${mods}" 'tidb' 'false'`
	local tidb_host=`from_mod_get_host "${tidb_mod}"`
	local tidb_dir=`from_mod_get_dir "${tidb_mod}"`
	local tidb_port=`ssh_get_value_from_proc_info "${tidb_host}" "${tidb_dir}" 'tidb_port'`

	local ti="${integrated}/ops/ti.sh"

	local title="=> `date +%D-%T`"
	local sub_dir="sysbench"
	local log="${entry_dir}/${sub_dir}/run.log"
	local count="${entry_dir}/${sub_dir}/count"

	mkdir -p "${entry_dir}/${sub_dir}"

	echo "${title}" >> "${log}"

	local tables=`"${ti}" -h "${cmd_hosts}" -m "${cmd_mod_names}" -i "${cmd_indexes}" \
		"${ti_file}" "mysql" "show tables" "${db}" 'false' | trim_host | grep -v 'Tables_in_' | wc -l | awk '{print $1}'`
	local table_size=`"${ti}" -h "${cmd_hosts}" -m "${cmd_mod_names}" -i "${cmd_indexes}" \
		"${ti_file}" "mysql" "select count(*) from sbtest1" "${db}" 'false' | trim_host | grep -v 'count'`

	sysbench_run "${entry_dir}" "${tidb_host}" "${tidb_port}" \
		"${tables}" "${table_size}" "${threads}" "${dur}" "${workload}" # | tee -a "${log}"
}

source "`cd $(dirname ${BASH_SOURCE[0]}) && pwd`/_env.sh"
auto_error_handle

ti_cmd_sysbench_runs "${@}"
