代码拉取完成,页面将自动刷新
# coding: utf-8
# OceanBase Deploy.
# Copyright (C) 2021 OceanBase
#
# This file is part of OceanBase Deploy.
#
# OceanBase Deploy 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, either version 3 of the License, or
# (at your option) any later version.
#
# OceanBase Deploy 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 OceanBase Deploy. If not, see <https://www.gnu.org/licenses/>.
from __future__ import absolute_import, division, print_function
import re
import os
from time import sleep
try:
import subprocess32 as subprocess
except:
import subprocess
from ssh import LocalClient
stdio = None
def exec_cmd(cmd):
stdio.verbose('execute: %s' % cmd)
process = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
while process.poll() is None:
line = process.stdout.readline()
line = line.strip()
if line:
stdio.print(line.decode("utf8", 'ignore'))
return process.returncode == 0
def run_test(plugin_context, *args, **kwargs):
def get_option(key, default=''):
if key in opt_keys:
opt_keys.remove(key)
value = getattr(options, key, default)
if value is None:
value = default
return value
global stdio
stdio = plugin_context.stdio
options = plugin_context.options
opt_keys = list(vars(options).keys())
for used_key in ['component', 'test_server', 'skip_cluster_status_check', 'obclient_bin', 'optimization']:
opt_keys.remove(used_key)
host = get_option('host', '127.0.0.1')
port = get_option('port', 2881)
mysql_db = get_option('database', 'test')
user = get_option('user', 'root')
tenant_name = get_option('tenant', 'test')
password = get_option('password', '')
table_size = get_option('table_size', 10000)
tables = get_option('tables', 32)
threads = get_option('threads', 150)
time = get_option('time', 60)
interval = get_option('interval', 10)
events = get_option('events', 0)
rand_type = get_option('rand_type', None)
skip_trx = get_option('skip_trx', '').lower()
percentile = get_option('percentile', None)
script_name = get_option('script_name', 'oltp_point_select.lua')
sysbench_bin = get_option('sysbench_bin', 'sysbench')
sysbench_script_dir = get_option('sysbench_script_dir', '/usr/sysbench/share/sysbench')
try:
sysbench_cmd = "cd %s; %s %s --mysql-host=%s --mysql-port=%s --mysql-user=%s@%s --mysql-db=%s" % (sysbench_script_dir, sysbench_bin, script_name, host, port, user, tenant_name, mysql_db)
if password:
sysbench_cmd += ' --mysql-password=%s' % password
if table_size:
sysbench_cmd += ' --table_size=%s' % table_size
if tables:
sysbench_cmd += ' --tables=%s' % tables
if threads:
sysbench_cmd += ' --threads=%s' % threads
if time:
sysbench_cmd += ' --time=%s' % time
if interval:
sysbench_cmd += ' --report-interval=%s' % interval
if events:
sysbench_cmd += ' --events=%s' % events
if rand_type:
sysbench_cmd += ' --rand-type=%s' % rand_type
if skip_trx in ['on', 'off']:
sysbench_cmd += ' --skip_trx=%s' % skip_trx
if percentile:
sysbench_cmd += ' --percentile=%s' % percentile
for opt_key in opt_keys:
sysbench_cmd += ' --%s=%s' % (opt_key.replace('_', '-'), getattr(options, opt_key))
if exec_cmd('%s cleanup' % sysbench_cmd) and exec_cmd('%s prepare' % sysbench_cmd) and exec_cmd('%s --db-ps-mode=disable run' % sysbench_cmd):
return plugin_context.return_true()
except KeyboardInterrupt:
pass
except:
stdio.exception('')
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。