Beispiel #1
0
def check_tracing_params(accessor, param_key):
    tracer = FullTracer()
    tracer._enter_calculation('A', '2015-01')
    tracingParams = TracingParameterNodeAtInstant(parameters('2015-01-01'), tracer)
    param = accessor(tracingParams)
    assert tracer.trees[0].parameters[0].name == param_key
    assert tracer.trees[0].parameters[0].value == approx(param)
Beispiel #2
0
def test_calculation_time():
    tracer = FullTracer()

    tracer._enter_calculation('a', 2019)
    tracer._record_start_time(1500)
    tracer._record_end_time(2500)
    tracer._exit_calculation()

    performance_json = tracer.performance_log._json()
    assert performance_json['name'] == 'All calculations'
    assert performance_json['value'] == 1000

    simulation_children = performance_json['children']
    assert simulation_children[0]['name'] == 'a<2019>'
    assert simulation_children[0]['value'] == 1000
Beispiel #3
0
 def trace(self, trace):
     self._trace = trace
     if trace:
         self.tracer = FullTracer()
     else:
         self.tracer = SimpleTracer()
Beispiel #4
0
def tracer():
    return FullTracer()
Beispiel #5
0
    def enter_calculation(self, variable, period):
        self.entered = True

    def record_calculation_result(self, value):
        self.recorded_result = True

    def exit_calculation(self):
        self.exited = True


@fixture
def tracer():
    return FullTracer()


@mark.parametrize("tracer", [SimpleTracer(), FullTracer()])
def test_stack_one_level(tracer):
    tracer.enter_calculation('a', 2017)
    assert len(tracer.stack) == 1
    assert tracer.stack == [{'name': 'a', 'period': 2017}]

    tracer.exit_calculation()
    assert tracer.stack == []


@mark.parametrize("tracer", [SimpleTracer(), FullTracer()])
def test_stack_two_levels(tracer):
    tracer.enter_calculation('a', 2017)
    tracer.enter_calculation('b', 2017)
    assert len(tracer.stack) == 2
    assert tracer.stack == [{
Beispiel #6
0
def test_browse_trace():
    tracer = FullTracer()

    tracer._enter_calculation("B", 2017)
    tracer._enter_calculation("C", 2017)
    tracer._exit_calculation()
    tracer._exit_calculation()
    tracer._enter_calculation("D", 2017)
    tracer._enter_calculation("E", 2017)
    tracer._exit_calculation()
    tracer._enter_calculation("F", 2017)
    tracer._exit_calculation()
    tracer._exit_calculation()

    browsed_nodes = [node.name for node in tracer.browse_trace()]
    assert browsed_nodes == ['B', 'C', 'D', 'E', 'F']
Beispiel #7
0
def tracer_calc_time():
    tracer = FullTracer()

    tracer._enter_calculation('a', 2019)
    tracer._record_start_time(1500)

    tracer._enter_calculation('b', 2019)
    tracer._record_start_time(1600)
    tracer._record_end_time(2300)
    tracer._exit_calculation()

    tracer._enter_calculation('c', 2019)
    tracer._record_start_time(2300)
    tracer._record_end_time(2400)
    tracer._exit_calculation()

    # Cache call
    tracer._enter_calculation('c', 2019)
    tracer._record_start_time(2400)
    tracer._record_end_time(2410)
    tracer._exit_calculation()

    tracer._record_end_time(2500)
    tracer._exit_calculation()

    tracer._enter_calculation('a', 2018)
    tracer._record_start_time(1800)
    tracer._record_end_time(1800 + 200)
    tracer._exit_calculation()

    return tracer