moved frontend tests to test_frontend.py

This commit is contained in:
JanLJL
2019-07-24 11:06:28 +02:00
parent abf8b674be
commit 832fa4e241
3 changed files with 85 additions and 9 deletions

View File

@@ -9,7 +9,8 @@ suite = unittest.TestLoader().loadTestsFromNames(
'test_parser_x86att',
'test_parser_AArch64v81',
'test_marker_utils',
'test_semantics'
'test_semantics',
'test_frontend'
]
)

83
tests/test_frontend.py Executable file
View File

@@ -0,0 +1,83 @@
#!/usr/bin/env python3
"""
Unit tests for OSACA Frontend
"""
import os
import unittest
from osaca.frontend import Frontend
from osaca.parser import ParserAArch64v81, ParserX86ATT
from osaca.semantics.hw_model import MachineModel
from osaca.semantics.kernel_dg import KernelDG
from osaca.semantics.semanticsAppender import SemanticsAppender
class TestFrontend(unittest.TestCase):
MODULE_DATA_DIR = os.path.join(
os.path.dirname(os.path.split(os.path.abspath(__file__))[0]), 'osaca/data/'
)
def setUp(self):
# set up parser and kernels
self.parser_x86 = ParserX86ATT()
self.parser_AArch64 = ParserAArch64v81()
with open(self._find_file('kernel-x86.s')) as f:
code_x86 = f.read()
with open(self._find_file('kernel-AArch64.s')) as f:
code_AArch64 = f.read()
self.kernel_x86 = self.parser_x86.parse_file(code_x86)
self.kernel_AArch64 = self.parser_AArch64.parse_file(code_AArch64)
# set up machine models
self.machine_model_csl = MachineModel(
path_to_yaml=os.path.join(self.MODULE_DATA_DIR, 'csl.yml')
)
self.machine_model_tx2 = MachineModel(
path_to_yaml=os.path.join(self.MODULE_DATA_DIR, 'vulcan.yml')
)
self.semantics_csl = SemanticsAppender(
self.machine_model_csl, path_to_yaml=os.path.join(self.MODULE_DATA_DIR, 'isa/x86.yml')
)
self.semantics_tx2 = SemanticsAppender(
self.machine_model_tx2,
path_to_yaml=os.path.join(self.MODULE_DATA_DIR, 'isa/AArch64.yml'),
)
for i in range(len(self.kernel_x86)):
self.semantics_csl.assign_src_dst(self.kernel_x86[i])
self.semantics_csl.assign_tp_lt(self.kernel_x86[i])
for i in range(len(self.kernel_AArch64)):
self.semantics_tx2.assign_src_dst(self.kernel_AArch64[i])
self.semantics_tx2.assign_tp_lt(self.kernel_AArch64[i])
###########
# Tests
###########
def test_frontend_x86(self):
dg = KernelDG(self.kernel_x86, self.parser_x86, self.machine_model_csl)
fe = Frontend(path_to_yaml=os.path.join(self.MODULE_DATA_DIR, 'csl.yml'))
fe.print_throughput_analysis(self.kernel_x86)
fe.print_latency_analysis(dg.get_critical_path())
def test_frontend_AArch64(self):
dg = KernelDG(self.kernel_AArch64, self.parser_AArch64, self.machine_model_tx2)
fe = Frontend(path_to_yaml=os.path.join(self.MODULE_DATA_DIR, 'vulcan.yml'))
fe.print_throughput_analysis(self.kernel_AArch64)
fe.print_latency_analysis(dg.get_critical_path())
##################
# Helper functions
##################
@staticmethod
def _find_file(name):
testdir = os.path.dirname(__file__)
name = os.path.join(testdir, 'test_files', name)
assert os.path.exists(name)
return name
if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(TestFrontend)
unittest.TextTestRunner(verbosity=2).run(suite)

View File

@@ -110,10 +110,6 @@ class TestSemanticTools(unittest.TestCase):
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=6))), 0)
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=7))), 0)
fe = Frontend(arch='CSL')
fe.print_throughput_analysis(self.kernel_x86)
fe.print_latency_analysis(dg.get_critical_path())
def test_kernelDG_AArch64(self):
dg = KernelDG(self.kernel_AArch64, self.parser_AArch64, self.machine_model_tx2)
self.assertTrue(nx.algorithms.dag.is_directed_acyclic_graph(dg.dg))
@@ -136,10 +132,6 @@ class TestSemanticTools(unittest.TestCase):
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=18))), 0)
self.assertEqual(len(list(dg.get_dependent_instruction_forms(line_number=19))), 0)
fe = Frontend(arch='vulcan')
fe.print_throughput_analysis(self.kernel_AArch64)
fe.print_latency_analysis(dg.get_critical_path())
def test_is_read_is_written_x86(self):
# independent form HW model
dag = KernelDG(self.kernel_x86, self.parser_x86, None)