1 # Copyright 2015-2016 ARM Limited 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 # 15 16 17 import unittest 18 import os 19 import shutil 20 import subprocess 21 import tempfile 22 23 TESTS_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) 24 25 26 def trace_cmd_installed(): 27 """Return true if trace-cmd is installed, false otherwise""" 28 with open(os.devnull) as devnull: 29 try: 30 subprocess.check_call(["trace-cmd", "options"], stdout=devnull) 31 except OSError: 32 return False 33 34 return True 35 36 class SetupDirectory(unittest.TestCase): 37 38 def __init__(self, files_to_copy, *args, **kwargs): 39 self.files_to_copy = files_to_copy 40 super(SetupDirectory, self).__init__(*args, **kwargs) 41 42 def setUp(self): 43 self.previous_dir = os.getcwd() 44 45 self.out_dir = tempfile.mkdtemp() 46 os.chdir(self.out_dir) 47 48 for src_fname, dst_fname in self.files_to_copy: 49 src_fname = os.path.join(TESTS_DIRECTORY, src_fname) 50 shutil.copy(src_fname, os.path.join(self.out_dir, dst_fname)) 51 52 def tearDown(self): 53 os.chdir(self.previous_dir) 54 shutil.rmtree(self.out_dir) 55 56 57 class TestBART(SetupDirectory): 58 59 def __init__(self, *args, **kwargs): 60 super(TestBART, self).__init__( 61 [ 62 ("./trace.txt", "trace.txt"), 63 ("./trace.raw.txt", "trace.raw.txt") 64 ], 65 *args, 66 **kwargs) 67