コード例 #1
0
ファイル: Test.py プロジェクト: intel/mpxcheck
 def test_can_build(self):
     """Verify that test source can build with MPX flags
     Args:
         None
     Returns:
         Pass if successful, Fail otherwise
     """
     os.chdir("./test")
     result = Utl.exe(["make", "clean"])
     result = Utl.exe(["make"])
     file_exists = os.path.isfile("test01")
     os.chdir("../")
     self.assertTrue(result["valid"] and file_exists,
                     "Test suite build failed")
コード例 #2
0
ファイル: Env.py プロジェクト: intel/mpxcheck
 def has_mpx_instr(path):
     """Check if compiled object contains MPX instructions
     Args:
         path (str): path to binary
     Returns:
         True if successful, False otherwise
     Raises:
         Exception if missing objdump or output is missing
     """
     if not Env.has_objdump():
         raise Exception("[MPX]: Missing/invalid objdump")
     result = Utl.exe(["objdump", "-d", path])
     if not result["valid"]:
         raise Exception("[MPX]: %s" % (result["error"]))
     instr = {
         "bndmov": False,
         "bndcl": False,
         "bndcu": False,
         "bnd retq": False
     }
     for output in result["output"].split("\n"):
         for i in instr.keys():
             if re.search(i, output):
                 instr[i] = True
             if False not in set(instr.values()):
                 return True
     return False
コード例 #3
0
ファイル: Env.py プロジェクト: intel/mpxcheck
 def get_cpuinfo():
     """get cpuinfo
     Args:
         None
     Returns:
         cpuinfo as string
     """
     result = Utl.exe(["cat", "/proc/cpuinfo"])
     if not result["valid"]:
         return None
     return result['output']
コード例 #4
0
ファイル: Test.py プロジェクト: intel/mpxcheck
 def test_test03(self):
     """Verify that test03 doesn't generate false positives
     Args:
         None
     Returns:
         Pass if successful, Fail otherwise
     """
     print("Checking test03")
     path = "./test/test03"
     log = "./test03.csv"
     Utl.remove(log)
     cmd = [path]
     mpx = MpxCheck(cmd=cmd, log=log)
     self.assertTrue(os.path.isfile(path))
     self.assertTrue(0 == mpx.run())
     self.assertTrue(os.path.isfile(log))
     self.assertTrue(0 == mpx.sts["cnt"])
     self.assertTrue(0 != mpx.sts["begin"])
     self.assertTrue(0 != mpx.sts["end"])
     self.assertTrue(3 > mpx.sts["elapsed"])
     self.assertTrue(not Utl.is_none(mpx.sts["dt"]))
     mpx = MpxCheck(cmd=None)
     self.assertTrue(0 == mpx.read(log))
     self.assertTrue(0 == mpx.sts["cnt"])
     self.assertTrue(0 == mpx.sts["begin"])
     self.assertTrue(0 == mpx.sts["end"])
     self.assertTrue(0 == mpx.sts["elapsed"])
     self.assertTrue(Utl.is_none(mpx.sts["dt"]))
     Utl.remove(log)
コード例 #5
0
ファイル: Test.py プロジェクト: intel/mpxcheck
 def test_test01a(self):
     """Verify that test01 works correctly
     Args:
         None
     Returns:
         Pass if successful, Fail otherwise
     """
     print("Checking test01")
     path = "./test/test01"
     log = "./test01a.csv"
     Utl.remove(log)
     cmd = [path, "10"]
     mpx = MpxCheck(cmd=cmd, log=log)
     self.assertTrue(os.path.isfile(path))
     self.assertTrue(6 == mpx.run())
     self.assertTrue(os.path.isfile(log))
     self.assertTrue(6 == mpx.sts["cnt"])
     self.assertTrue(0 != mpx.sts["begin"])
     self.assertTrue(0 != mpx.sts["end"])
     self.assertTrue(3 > mpx.sts["elapsed"])
     self.assertTrue(not Utl.is_none(mpx.sts["dt"]))
     Utl.remove(log)
コード例 #6
0
ファイル: Env.py プロジェクト: intel/mpxcheck
 def get_binutils_ver():
     """get binutils version
     Args:
         None
     Returns:
         binutils version as string
     """
     result = Utl.exe(["ld", "--version"])
     if not result["valid"]:
         return None
     tokens = result["output"].split()
     if len(tokens) < 7:
         return None
     return tokens[6]
コード例 #7
0
ファイル: Env.py プロジェクト: intel/mpxcheck
 def get_objdump_ver():
     """get objdump version
     Args:
         None
     Returns:
         objdump version as string
     """
     result = Utl.exe(["objdump", "--version"])
     if not result["valid"]:
         return None
     tokens = result["output"].split()
     if len(tokens) < 7:
         return None
     return tokens[6]
コード例 #8
0
ファイル: Env.py プロジェクト: intel/mpxcheck
 def get_glibc_ver():
     """get glibc version
     Args:
         None
     Returns:
         glibc version as string
     """
     result = Utl.exe(["ldd", "--version"])
     if not result["valid"]:
         return None
     tokens = result["output"].split()
     if len(tokens) < 5:
         return None
     return tokens[4]
コード例 #9
0
ファイル: Test.py プロジェクト: intel/mpxcheck
 def test_test01c(self):
     """Verify that stop count option works
     Args:
         None
     Returns:
         Pass if successful, Fail otherwise
     """
     print("Checking test01")
     path = "./test/test01"
     log = "./test01c.csv"
     Utl.remove(log)
     cmd = [path, "100"]
     mpx = MpxCheck(cmd=cmd, log=log, stop_cnt=1)
     self.assertTrue(os.path.isfile(path))
     ret = mpx.run()
     self.assertTrue(1 == ret)
     self.assertTrue(os.path.isfile(log))
     self.assertTrue(1 == mpx.sts["cnt"])
     self.assertTrue(0 != mpx.sts["begin"])
     self.assertTrue(0 != mpx.sts["end"])
     self.assertTrue(3 > mpx.sts["elapsed"])
     self.assertTrue(not Utl.is_none(mpx.sts["dt"]))
     Utl.remove(log)
コード例 #10
0
ファイル: Env.py プロジェクト: intel/mpxcheck
 def get_kernel_config():
     """get kernel configuration
     Args:
         None
     Returns:
         kernel configuration as string
     """
     k_ver = Env.get_kernel_ver()
     if k_ver is None:
         return False
     result = Utl.exe(["cat", "/boot/config-%s" % (k_ver)])
     if not result["valid"]:
         return None
     config = {}
     tokens = result["output"].split("\n")
     for token in tokens:
         token = token.strip()
         if re.search("=", token):
             name, value = token.split("=")
             config[name.strip()] = value.strip()
     if len(config) < 1:
         return None
     return config