1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-06-01 22:41:43 +03:00
2016-06-22 16:00:00 -05:00

98 lines
2.5 KiB
Python
Executable File

#!/usr/bin/python
import os, sys, glob, shutil, xml.dom.minidom
def find_paths():
"""Find DBRoot and BulkRoot."""
try:
config_file = os.environ['CALPONT_CONFIG_FILE']
except KeyError:
try:
config_file = '/usr/local/mariadb/columnstore/etc/Columnstore.xml'
os.lstat(config_file)
except:
sys.exit('No config file available')
xmldoc = xml.dom.minidom.parse(config_file)
bulk_node = xmldoc.getElementsByTagName('BulkRoot')[0]
db_node = xmldoc.getElementsByTagName('DBRoot')[0]
bulk_dir = bulk_node.childNodes[0].nodeValue
data_dir = db_node.childNodes[0].nodeValue
return (bulk_dir, data_dir)
def validate_indexes(job_file):
index_files = []
xmldoc = xml.dom.minidom.parse(job_file)
for index_node in xmldoc.getElementsByTagName('Index'):
curTreeOid = index_node.getAttribute('iTreeOid')
curListOid = index_node.getAttribute('iListOid')
curMapOid = index_node.getAttribute('mapOid')
#curIdxCmdArg = ' -t ' + curTreeOid + ' -l ' + curListOid + ' -v -c ' + curMapOid + ' > idxCol_' + curMapOid+'.out'
curIdxCmdArg = ' -t %s -l %s -v -c %s > idxCol_%s.out' % (curTreeOid, curListOid, curMapOid, curMapOid)
index_files.append( curIdxCmdArg )
return index_files
def exec_cmd(cmd, args):
"""Execute command using subprocess module or if that fails,
use os.system
"""
try:
import subprocess
try:
retcode = call(cmd + " "+args, shell=True)
if retcode < 0:
print >>sys.stderr, "Child was terminated by signal", -retcode
sys.exit(-1)
else:
print >>sys.stderr, "Child returned", retcode
except OSError, e:
print >>sys.stderr, "Execution failed:", e
sys.exit(-1)
except:
res = os.system(cmd+' '+args)
if res:
sys.exit( res )
def main():
"""
Validate indexes..
"""
if not os.access('.', os.W_OK):
os.chdir('/tmp')
print 'Changing to /tmp to have permission to write files'
if len(os.getenv('LD_LIBRARY_PATH'))<5:
print 'Suspicous LD_LIBRARY_PATH: %s'%os.getenv('LD_LIBRARY_PATH')
home = os.getenv('HOME')
genii = home+'/genii'
(bulkroot, dbroot) = find_paths()
if len(glob.glob(bulkroot+'/job/Job_300.xml')) == 0:
sys.exit("No Job_300.xml exist ")
indexes = validate_indexes(bulkroot+'/job/Job_300.xml')
for idxCmdArg in indexes:
print idxCmdArg
exec_cmd( genii + '/tools/evalidx/evalidx', idxCmdArg )
## the following line allows either interactive use or module import
if __name__=="__main__": main()