mbuf: fix performance with 128-byte cache line
[dpdk.git] / app / test / autotest_runner.py
index 5cb700c..eadfb7f 100644 (file)
@@ -1,14 +1,14 @@
 #!/usr/bin/python
 
 #   BSD LICENSE
-# 
+#
 #   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 #   All rights reserved.
-# 
+#
 #   Redistribution and use in source and binary forms, with or without
 #   modification, are permitted provided that the following conditions
 #   are met:
-# 
+#
 #     * Redistributions of source code must retain the above copyright
 #       notice, this list of conditions and the following disclaimer.
 #     * Redistributions in binary form must reproduce the above copyright
@@ -18,7 +18,7 @@
 #     * Neither the name of Intel Corporation nor the names of its
 #       contributors may be used to endorse or promote products derived
 #       from this software without specific prior written permission.
-# 
+#
 #   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 #   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 #   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
@@ -154,7 +154,7 @@ def run_test_group(cmdline, test_group):
                        results.append(result)
 
        # regardless of whether test has crashed, try quitting it
-       try:    
+       try:
                child.sendline("quit")
                child.close()
        # if the test crashed, just do nothing instead
@@ -198,7 +198,7 @@ class AutotestRunner:
                self.logfile = open(logfile, "w")
                csvfile = open(csvfile, "w")
                self.csvwriter = csv.writer(csvfile)
-               
+
                # prepare results table
                self.csvwriter.writerow(["test_name","test_result","result_str"])
 
@@ -208,23 +208,19 @@ class AutotestRunner:
        def __get_cmdline(self, test):
                cmdline = self.cmdline
 
-               # perform additional linuxapp adjustments
-               if not "baremetal" in self.target:
-
-                       # append memory limitations for each test
-                       # otherwise tests won't run in parallel
-                       if not "i686" in self.target:
-                               cmdline += " --socket-mem=%s"% test["Memory"]
-                       else:
-                               # affinitize startup so that tests don't fail on i686
-                               cmdline = "taskset 1 " + cmdline
-                               cmdline += " -m " + str(sum(map(int,test["Memory"].split(","))))
+               # append memory limitations for each test
+               # otherwise tests won't run in parallel
+               if not "i686" in self.target:
+                       cmdline += " --socket-mem=%s"% test["Memory"]
+               else:
+                       # affinitize startup so that tests don't fail on i686
+                       cmdline = "taskset 1 " + cmdline
+                       cmdline += " -m " + str(sum(map(int,test["Memory"].split(","))))
 
-                       # set group prefix for autotest group
-                       # otherwise they won't run in parallel
-                       cmdline += " --file-prefix=%s"% test["Prefix"]
+               # set group prefix for autotest group
+               # otherwise they won't run in parallel
+               cmdline += " --file-prefix=%s"% test["Prefix"]
 
-                       return cmdline
                return cmdline
 
 
@@ -234,12 +230,12 @@ class AutotestRunner:
 
        def add_non_parallel_test_group(self,test_group):
                self.non_parallel_test_groups.append(test_group)
-               
-       
+
+
        def __process_results(self, results):
                # this iterates over individual test results
                for i, result in enumerate(results):
-               
+
                        # increase total number of tests that were run
                        # do not include "start" test
                        if i > 0:
@@ -267,10 +263,10 @@ class AutotestRunner:
                        # if test failed and it wasn't a "start" test
                        if test_result < 0 and not i == 0:
                                self.fails += 1
-               
+
                        # collect logs
                        self.log_buffers.append(log)
-               
+
                        # create report if it exists
                        if report:
                                try:
@@ -280,7 +276,7 @@ class AutotestRunner:
                                else:
                                        with f:
                                                f.write(report)
-                                               
+
                        # write test result to CSV file
                        if i != 0:
                                self.csvwriter.writerow([test_name, test_result, result_str])
@@ -303,7 +299,7 @@ class AutotestRunner:
                                # dump tests are specified in full e.g. "Dump_mempool"
                                if "_autotest" in test_id:
                                        test_id = test_id[:-len("_autotest")]
-                               
+
                                # filter out blacklisted/whitelisted tests
                                if self.blacklist and test_id in self.blacklist:
                                        test_group["Tests"].remove(test)
@@ -320,13 +316,13 @@ class AutotestRunner:
                                # put the numbers backwards so that we start
                                # deleting from the end, not from the beginning
                                groups_to_remove.insert(0, i)
-               
+
                # remove test groups that need to be removed
                for i in groups_to_remove:
                        del test_groups[i]
-               
+
                return test_groups
-               
+
 
 
        # iterate over test groups and run tests associated with them
@@ -336,17 +332,12 @@ class AutotestRunner:
                        self.__filter_groups(self.parallel_test_groups)
                self.non_parallel_test_groups = \
                        self.__filter_groups(self.non_parallel_test_groups)
-               
+
                # create a pool of worker threads
-               if not "baremetal" in self.target:
-                       pool = multiprocessing.Pool(processes=1)
-               else:
-                       # we can't be sure running baremetal tests in parallel
-                       # will work, so let's stay on the safe side
-                       pool = multiprocessing.Pool(processes=1)
-                       
+               pool = multiprocessing.Pool(processes=1)
+
                results = []
-       
+
                # whatever happens, try to save as much logs as possible
                try:
 
@@ -379,7 +370,7 @@ class AutotestRunner:
                                                continue
 
                                        res = group_result.get()
-                                       
+
                                        self.__process_results(res)
 
                                        # remove result from results list once we're done with it
@@ -388,11 +379,11 @@ class AutotestRunner:
                        # run non_parallel tests. they are run one by one, synchronously
                        for test_group in self.non_parallel_test_groups:
                                group_result = run_test_group(self.__get_cmdline(test_group), test_group)
-                                       
+
                                self.__process_results(group_result)
-               
+
                        # get total run time
-                       cur_time = time.time()          
+                       cur_time = time.time()
                        total_time = int(cur_time - self.start)
 
                        # print out summary
@@ -409,10 +400,12 @@ class AutotestRunner:
                except:
                        print "Exception occured"
                        print sys.exc_info()
+                       self.fails = 1
 
                # drop logs from all executions to a logfile
                for buf in self.log_buffers:
                        self.logfile.write(buf.replace("\r",""))
-               
+
                log_buffers = []
 
+               return self.fails