set oltpbench config in driver
This commit is contained in:
parent
43fe67a8cb
commit
3ff9698295
|
@ -87,8 +87,8 @@ def create_controller_config():
|
|||
if dconf.DB_VERSION in ['5.6', '5.7']:
|
||||
dburl_fmt = 'jdbc:mysql://{host}:{port}/{db}?useSSL=false'.format
|
||||
elif dconf.DB_VERSION == '8.0':
|
||||
dburl_fmt = 'jdbc:mysql://{host}:{port}/{db}?\
|
||||
allowPublicKeyRetrieval=true&useSSL=false'.format
|
||||
dburl_fmt = ('jdbc:mysql://{host}:{port}/{db}?'
|
||||
'allowPublicKeyRetrieval=true&useSSL=false').format
|
||||
else:
|
||||
raise Exception("MySQL Database Version {} Not Implemented !".format(dconf.DB_VERSION))
|
||||
else:
|
||||
|
@ -636,6 +636,74 @@ def clean_oltpbench_results():
|
|||
local('rm -f {}/results/*'.format(dconf.OLTPBENCH_HOME))
|
||||
|
||||
|
||||
def _set_oltpbench_property(name, line):
|
||||
if name == 'username':
|
||||
ss = line.split('username')
|
||||
new_line = ss[0] + 'username>{}</username'.format(dconf.DB_USER) + ss[-1]
|
||||
elif name == 'password':
|
||||
ss = line.split('password')
|
||||
new_line = ss[0] + 'password>{}</password'.format(dconf.DB_PASSWORD) + ss[-1]
|
||||
elif name == 'DBUrl':
|
||||
ss = line.split('DBUrl')
|
||||
if dconf.DB_TYPE == 'postgres':
|
||||
dburl_fmt = 'jdbc:postgresql://{host}:{port}/{db}'.format
|
||||
elif dconf.DB_TYPE == 'oracle':
|
||||
dburl_fmt = 'jdbc:oracle:thin:@{host}:{port}:{db}'.format
|
||||
elif dconf.DB_TYPE == 'mysql':
|
||||
if dconf.DB_VERSION in ['5.6', '5.7']:
|
||||
dburl_fmt = 'jdbc:mysql://{host}:{port}/{db}?useSSL=false'.format
|
||||
elif dconf.DB_VERSION == '8.0':
|
||||
dburl_fmt = ('jdbc:mysql://{host}:{port}/{db}?'
|
||||
'allowPublicKeyRetrieval=true&useSSL=false').format
|
||||
else:
|
||||
raise Exception("MySQL Database Version {} "
|
||||
"Not Implemented !".format(dconf.DB_VERSION))
|
||||
else:
|
||||
raise Exception("Database Type {} Not Implemented !".format(dconf.DB_TYPE))
|
||||
database_url = dburl_fmt(host=dconf.DB_HOST, port=dconf.DB_PORT, db=dconf.DB_NAME)
|
||||
new_line = ss[0] + 'DBUrl>{}</DBUrl'.format(database_url) + ss[-1]
|
||||
else:
|
||||
raise Exception("OLTPBench Config Property {} Not Implemented !".format(name))
|
||||
return new_line
|
||||
|
||||
|
||||
@task
|
||||
def set_oltpbench_config():
|
||||
# set database user, password, and connection url in oltpbench config
|
||||
lines = None
|
||||
text = None
|
||||
with open(dconf.OLTPBENCH_CONFIG, 'r') as f:
|
||||
lines = f.readlines()
|
||||
text = ''.join(lines)
|
||||
lid = 10
|
||||
for i, line in enumerate(lines):
|
||||
if 'dbtype' in line:
|
||||
dbtype = line.split('dbtype')[1][1:-2].strip()
|
||||
if dbtype != dconf.DB_TYPE:
|
||||
raise Exception("dbtype {} in OLTPBench config != DB_TYPE {}"
|
||||
"in driver config !".format(dbtype, dconf.DB_TYPE))
|
||||
if 'username' in line:
|
||||
lines[i] = _set_oltpbench_property('username', line)
|
||||
elif 'password' in line:
|
||||
lines[i] = _set_oltpbench_property('password', line)
|
||||
lid = i + 1
|
||||
elif 'DBUrl' in line:
|
||||
lines[i] = _set_oltpbench_property('DBUrl', line)
|
||||
if dconf.ENABLE_UDM:
|
||||
# add the empty uploadCode and uploadUrl so that OLTPBench will output the summary file,
|
||||
# which contains throughput, 99latency, 95latency, etc.
|
||||
if 'uploadUrl' not in text:
|
||||
line = ' <uploadUrl></uploadUrl>\n'
|
||||
lines.insert(lid, line)
|
||||
if 'uploadCode' not in text:
|
||||
line = ' <uploadCode></uploadCode>\n'
|
||||
lines.insert(lid, line)
|
||||
text = ''.join(lines)
|
||||
with open(dconf.OLTPBENCH_CONFIG, 'w') as f:
|
||||
f.write(text)
|
||||
LOG.info('oltpbench config is set: %s', dconf.OLTPBENCH_CONFIG)
|
||||
|
||||
|
||||
@task
|
||||
def loop(i):
|
||||
i = int(i)
|
||||
|
@ -658,6 +726,9 @@ def loop(i):
|
|||
p.start()
|
||||
LOG.info('Run the controller')
|
||||
|
||||
# set oltpbench config, including db username, password, url
|
||||
set_oltpbench_config()
|
||||
|
||||
# run oltpbench as a background job
|
||||
while not _ready_to_start_oltpbench():
|
||||
time.sleep(1)
|
||||
|
|
Loading…
Reference in New Issue