Example #1
0
    def __test_parallel_fib(self):
        # Branching function calls.

        fib_index = 6
        expected_value = 13
        expected_len_stubbed_exprs = fib_index + 1

        dsl_source = """
def fib(n): fib(n-1) + fib(n-2) if n > 2 else n
fib(%d)
""" % fib_index

        # # Check the source works as a serial operation.
        # dsl_expr = dsl_parse(dsl_source, inParallel=False)
        # self.assertIsInstance(dsl_expr, Add)
        # dsl_value = dsl_expr.evaluate()
        # self.assertEqual(dsl_value, expected_value)

        # Check the source works as a parallel operation.
        dsl_expr = dsl_compile(dsl_source, is_parallel=True)

        # Expect an expression stack object...
        self.assertIsInstance(dsl_expr, DependencyGraph)

        # Remember the number of stubbed exprs - will check it after the value.
        actual_len_stubbed_exprs = len(dsl_expr.call_requirements)

        # Evaluate the stack.
        runner = SingleThreadedDependencyGraphRunner(dsl_expr)
        dsl_value = runner.evaluate()

        # Check the value is expected.
        self.assertEqual(dsl_value, expected_value)

        # Check the number of stubbed exprs is expected.
        self.assertEqual(actual_len_stubbed_exprs, expected_len_stubbed_exprs)

        # Also check the runner call count is the same.
        self.assertEqual(runner.call_count, expected_len_stubbed_exprs)
Example #2
0
    def __test_parallel_fib(self):
        # Branching function calls.

        fib_index = 6
        expected_value = 13
        expected_len_stubbed_exprs = fib_index + 1

        dsl_source = """
def fib(n): fib(n-1) + fib(n-2) if n > 2 else n
fib(%d)
""" % fib_index

        # # Check the source works as a serial operation.
        # dsl_expr = dsl_parse(dsl_source, inParallel=False)
        # self.assertIsInstance(dsl_expr, Add)
        # dsl_value = dsl_expr.evaluate()
        # self.assertEqual(dsl_value, expected_value)

        # Check the source works as a parallel operation.
        dsl_expr = dsl_compile(dsl_source, is_parallel=True)

        # Expect an expression stack object...
        self.assertIsInstance(dsl_expr, DependencyGraph)

        # Remember the number of stubbed exprs - will check it after the value.
        actual_len_stubbed_exprs = len(dsl_expr.call_requirements)

        # Evaluate the stack.
        runner = SingleThreadedDependencyGraphRunner(dsl_expr)
        dsl_value = runner.evaluate()

        # Check the value is expected.
        self.assertEqual(dsl_value, expected_value)

        # Check the number of stubbed exprs is expected.
        self.assertEqual(actual_len_stubbed_exprs, expected_len_stubbed_exprs)

        # Also check the runner call count is the same.
        self.assertEqual(runner.call_count, expected_len_stubbed_exprs)