#!/usr/bin/env python import os from os import environ, mkdir from os.path import abspath, dirname, isdir import string import sys from glob import glob args = sys.argv[1:] try: j_home = environ["JAVA_HOME"] except KeyError: print "ERROR: $JAVA_HOME not defined" sys.exit(1) try: starj_home = environ["STARJ_HOME"] except KeyError: print "ERROR: $STARJ_HOME not defined" sys.exit(1) my_cp = os.path.join(j_home, "jre/lib/rt.jar:") my_cp += os.path.join(j_home, "jre/lib/ext/localedata.jar:") for jar in glob(starj_home + "/analyzer/lib/*.jar"): my_cp += jar + ":" my_args = [] tracedir = "." benchmark_name = "" runtime_flavour = "" i = 0 while i < len(args): if args[i] in ("-cp", "-classpath"): i = i + 1 my_cp += args[i] elif args[i] in ("-tracedir",): i = i + 1 tracedir = abspath(args[i]) print "tracedir\t: " + tracedir elif args[i] in ("-name",): i = i + 1 benchmark_name = args[i] print "benchmark_name\t: " + benchmark_name elif args[i] in ("-flavour",): i = i + 1 runtime_flavour = args[i] else: my_args.append(args[i]) i = i + 1 sys.stdout.flush() if my_cp: cp = list(my_cp.split(':')) try: idx = cp.index("$CLASSPATH") if idx >= 0: del cp[idx] except ValueError: pass cp = filter(lambda x : x, cp) my_cp = string.join(cp, ':') + ':' else: my_cp = '' if not isdir(tracedir): raise "ERROR: trace directory " + tracedir + " does not exist." if tracedir is not ".": tracedir = os.path.join(tracedir, benchmark_name) tracedir = abspath(tracedir) os.environ["CLASSPATH"] = my_cp os.system( "/usr/bin/nice " + "/usr/bin/time -o analyze." + runtime_flavour + ".time " + os.path.join(j_home, "bin/java") + ' -server' + ' -Xmx512m starj.Main' + ' -cp ' + my_cp + ' -p toolkits.aspects enabled' + ' -x results/aspects.' + runtime_flavour + '.xml \'toolkits.aspects.metrics\'' + ' -p toolkits.metrics enabled' + ' -p toolkits.metrics.sync enabled:false' + ' -x results/metrics.' + runtime_flavour + '.xml \'toolkits.metrics.*\'' + ' ' + tracedir + '/StarJ.dat') os.system("hostname >> analyze.time");