diff options
Diffstat (limited to 'linux_dpdk/cov.py')
-rw-r--r-- | linux_dpdk/cov.py | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/linux_dpdk/cov.py b/linux_dpdk/cov.py new file mode 100644 index 00000000..27578f4b --- /dev/null +++ b/linux_dpdk/cov.py @@ -0,0 +1,141 @@ +# hhaim 2015 +import sys +import os +import argparse; +import uuid +import urllib2 + + + +H_COV_VER = "0.0.1" + +class cov_driver(object): + args=None; + + +BUILD_NUM_FILE = "../VERSION" + +COV_FILE_OUT = 'trex-64.bz2' + +#'http://www.python.org/' +def check_url_is_valid (url): + try: + f = urllib2.urlopen(url) + f.read() + return 0 + except : + return -1 + + +def get_build_num (): + s=''; + if os.path.isfile(BUILD_NUM_FILE): + f=open(BUILD_NUM_FILE,'r'); + s+=f.readline().rstrip(); + f.close(); + return s; + +def get_build_num_dis (): + return get_build_num ()+ "-"+str(uuid.uuid1()) + + +def process_options (): + parser = argparse.ArgumentParser(usage=""" + cov -b # build sa + cov -u #upload sa + """, + description="sa utility ", + epilog=" written by hhaim"); + + + parser.add_argument('-b', action='store_true', + help='build ') + parser.add_argument('-u', action='store_true', + help='upload ') + parser.add_argument('-nc', action='store_true', + help='build without clean ') + + parser.add_argument('--version', action='version', + version=H_COV_VER ) + + cov_driver.args = parser.parse_args(); + + + + +def run_cmd (cmd,is_exception=True): + print "run cmd '%s'" % (cmd) + res=os.system(cmd); + if is_exception and (res !=0): + s= "ERORR cmd return error !"; + raise Exception(s); + else: + print "OK" + + +def run_build (is_clean): + clean_str = "" + if is_clean : + clean_str = "clean" + cov_build_cmd = cov_driver.tool_path+"cov-analysis-linux64-7.7.0.4/bin/cov-build --dir cov-int ./b %s build --target=_t-rex-64" % (clean_str); + run_cmd(cov_build_cmd); + if os.path.isfile(COV_FILE_OUT) : + run_cmd(('rm %s' % COV_FILE_OUT)); + run_cmd("tar caf %s cov-int" % COV_FILE_OUT); + +def upload (): + if not os.path.isfile(COV_FILE_OUT) : + s="ERROR file %s does not exit try to build it " % (COV_FILE_OUT); + raise Exception (s) + if check_url_is_valid ('http://www.google.com/')<0: + s="ERROR, You are under firewall, try from another build server"; + raise Exception (s) + + ver=get_build_num_dis () + cmd='curl --form token=fRIZZCAGD9TnkSiuxXiEAQ --form email='+cov_driver.user_name+'@cisco.com --form file=@./'+COV_FILE_OUT+' --form version="'+ver+'" --form description="'+ver+'" https://scan.coverity.com/builds?project=cisco-system-traffic-generator%2Ftrex-core' + run_cmd(cmd); + print "You should get an email with the results" + print "or visit http://scan.coverity.com/projects/cisco-system-traffic-generator-trex-core?tab=overview" + +def check_env (env,err): + if os.environ.has_key(env) == False : + s= "ERROR you should define %s, %s" % (env,err) + raise Exception(s); + + +def main_cov (): + args=cov_driver.args + + # default nothing was given + if args.b == False and args.u == False : + run_build (True) + upload () + + if args.b : + is_clean = not args.nc + run_build (is_clean) + + if args.u: + upload () + + +def main (): + try: + check_env ('NBAR_ENV',"should defined to the tools path") + check_env ('USER',"should be defined as your user name") + + cov_driver.tool_path=os.environ['NBAR_ENV'] + cov_driver.user_name=os.environ['USER'] + process_options () + main_cov () + exit(0); + except Exception, e: + print str(e); + exit(-1); + + + +if __name__ == "__main__": + main(); + + |