diff --git a/scripts/run.stress-tests.py b/scripts/run.stress-tests.py index 34643d58099..9753be3b3de 100755 --- a/scripts/run.stress-tests.py +++ b/scripts/run.stress-tests.py @@ -53,9 +53,10 @@ class Killed(Exception): pass class TestRunnerBase(object): - def __init__(self, scheduler, tokudb, rev, jemalloc, execf, tsize, csize, test_time, savedir): + def __init__(self, scheduler, builddir, installdir, rev, jemalloc, execf, tsize, csize, test_time, savedir): self.scheduler = scheduler - self.tokudb = tokudb + self.builddir = builddir + self.installdir = installdir self.rev = rev self.execf = execf self.tsize = tsize @@ -64,7 +65,7 @@ class TestRunnerBase(object): self.savedir = savedir self.env = os.environ - libpath = os.path.join(self.tokudb, 'lib') + libpath = os.path.join(self.installdir, 'lib') if 'LD_LIBRARY_PATH' in self.env: self.env['LD_LIBRARY_PATH'] = '%s:%s' % (libpath, self.env['LD_LIBRARY_PATH']) else: @@ -145,7 +146,7 @@ class TestRunnerBase(object): copytree(self.envdir, self.prepareloc) def run(self): - srctests = os.path.join(self.tokudb, 'src', 'tests') + srctests = os.path.join(self.builddir, 'src', 'tests') self.rundir = mkdtemp(dir=srctests) try: @@ -185,9 +186,9 @@ class TestRunnerBase(object): copytree(f, targetfor(f)) else: copy(f, targetfor(f)) - fullexecf = os.path.join(self.tokudb, 'src', 'tests', self.execf) + fullexecf = os.path.join(self.builddir, 'src', 'tests', self.execf) copy(fullexecf, targetfor(fullexecf)) - for lib in glob(os.path.join(self.tokudb, 'lib', '*.so')): + for lib in glob(os.path.join(self.installdir, 'lib', '*.so')): copy(lib, targetfor(lib)) return savedir @@ -412,10 +413,7 @@ def compiler_works(cc): exception('Error running %s.', cc) return False -def rebuild(tokudb, cc, tests): - env = os.environ - env['CC'] = cc - env['DEBUG'] = '0' +def rebuild(tokudb, builddir, installdir, cc, tests): info('Updating from svn.') devnull = open(os.devnull, 'w') call(['svn', 'up'], stdout=devnull, stderr=STDOUT, cwd=tokudb) @@ -423,19 +421,20 @@ def rebuild(tokudb, cc, tests): if not compiler_works(cc): error('Cannot find working compiler named "%s". Try sourcing the icc env script or providing another compiler with --cc.', cc) sys.exit(r) + if cc == 'icc': + iccstr = 'ON' + else: + iccstr = 'OFF' info('Building tokudb.') - r = call(['make', '-s', 'clean'], - cwd=tokudb, env=env) - if r != 0: - error('Cleaning the source tree failed.') - sys.exit(r) - r = call(['make', '-s', 'fastbuild'], - cwd=tokudb, env=env) - if r != 0: - error('Building the fractal tree failed.') - sys.exit(r) - r = call(['make', '-s'] + tests, - cwd=os.path.join(tokudb, 'src', 'tests'), env=env) + if not os.path.exists(builddir): + os.mkdir(builddir) + r = call(['cmake', + '-DCMAKE_BUILD_TYPE=Debug', + '-DINTELCC=%s' % iccstr, + '-DCMAKE_INSTALL_DIR=%s' % installdir, + tokudb] + cwd=builddir) + r = call(['make', '-s'] + tests, cwd=builddir) if r != 0: error('Building the tests failed.') sys.exit(r) @@ -449,8 +448,10 @@ def revfor(tokudb): return rev def main(opts): + builddir = os.path.join(opts.tokudb, 'build') + installdir = os.path.join(opts.tokudb, 'install') if opts.build: - rebuild(opts.tokudb, opts.cc, opts.testnames + opts.recover_testnames) + rebuild(opts.tokudb, builddir, installdir, opts.cc, opts.testnames + opts.recover_testnames) rev = revfor(opts.tokudb) if not os.path.exists(opts.savedir): @@ -471,7 +472,8 @@ def main(opts): for csize in [50 * tsize, 1000 ** 3]: kwargs = { 'scheduler': scheduler, - 'tokudb': opts.tokudb, + 'builddir': builddir, + 'installdir': installdir, 'rev': rev, 'jemalloc': opts.jemalloc, 'tsize': tsize, @@ -534,7 +536,7 @@ def main(opts): if scheduler.error is not None: error('Scheduler reported an error.') raise scheduler.error - rebuild(opts.tokudb, opts.cc, opts.testnames + opts.recover_testnames) + rebuild(opts.tokudb, builddir, installdir, opts.cc, opts.testnames + opts.recover_testnames) rev = revfor(opts.tokudb) for runner in runners: runner.rev = rev