Example #1
0
 def test_memdependency_x86(self):
     dg = KernelDG(self.kernel_x86_memdep, self.parser_x86,
                   self.machine_model_csx, self.semantics_csx)
     self.assertTrue(nx.algorithms.dag.is_directed_acyclic_graph(dg.dg))
     self.assertEqual(
         set(dg.get_dependent_instruction_forms(line_number=3)), {6, 8})
     self.assertEqual(
         set(dg.get_dependent_instruction_forms(line_number=5)), {10, 12})
     with self.assertRaises(ValueError):
         dg.get_dependent_instruction_forms()
     # test dot creation
     dg.export_graph(filepath="/dev/null")
Example #2
0
 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))
     self.assertEqual(
         set(dg.get_dependent_instruction_forms(line_number=3)), {7, 8})
     self.assertEqual(
         set(dg.get_dependent_instruction_forms(line_number=4)), {9, 10})
     self.assertEqual(
         set(dg.get_dependent_instruction_forms(line_number=5)), {6, 7, 8})
     self.assertEqual(
         set(dg.get_dependent_instruction_forms(line_number=6)), {9, 10})
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=7)), 13)
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=8)), 14)
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=9)), 16)
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=10)), 17)
     self.assertEqual(
         set(dg.get_dependent_instruction_forms(line_number=11)), {13, 14})
     self.assertEqual(
         set(dg.get_dependent_instruction_forms(line_number=12)), {16, 17})
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=13)), 15)
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=14)), 15)
     self.assertEqual(
         len(list(dg.get_dependent_instruction_forms(line_number=15))), 0)
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=16)), 18)
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=17)), 18)
     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)
     self.assertEqual(
         len(list(dg.get_dependent_instruction_forms(line_number=20))), 0)
     with self.assertRaises(ValueError):
         dg.get_dependent_instruction_forms()
     # test dot creation
     dg.export_graph(filepath='/dev/null')
Example #3
0
 def test_kernelDG_x86(self):
     #
     #  4
     #   \___>6__>7
     #   /
     #  3
     #     5_______>9
     #
     dg = KernelDG(self.kernel_x86, self.parser_x86, self.machine_model_csx)
     self.assertTrue(nx.algorithms.dag.is_directed_acyclic_graph(dg.dg))
     self.assertEqual(
         len(list(dg.get_dependent_instruction_forms(line_number=3))), 1)
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=3)), 6)
     self.assertEqual(
         len(list(dg.get_dependent_instruction_forms(line_number=4))), 1)
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=4)), 6)
     self.assertEqual(
         len(list(dg.get_dependent_instruction_forms(line_number=5))), 1)
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=5)), 9)
     self.assertEqual(
         len(list(dg.get_dependent_instruction_forms(line_number=6))), 1)
     self.assertEqual(
         next(dg.get_dependent_instruction_forms(line_number=6)), 7)
     self.assertEqual(
         len(list(dg.get_dependent_instruction_forms(line_number=7))), 0)
     self.assertEqual(
         len(list(dg.get_dependent_instruction_forms(line_number=8))), 0)
     with self.assertRaises(ValueError):
         dg.get_dependent_instruction_forms()
     # test dot creation
     dg.export_graph(filepath='/dev/null')