test_accumulate_nested Subroutine

public subroutine test_accumulate_nested()

Arguments

None

Calls

proc~~test_accumulate_nested~~CallsGraph proc~test_accumulate_nested test_TimeProfiler::test_accumulate_nested assertequal assertequal proc~test_accumulate_nested->assertequal asserttrue asserttrue proc~test_accumulate_nested->asserttrue get_child get_child proc~test_accumulate_nested->get_child get_meter get_meter proc~test_accumulate_nested->get_meter get_num_cycles get_num_cycles proc~test_accumulate_nested->get_num_cycles has_child has_child proc~test_accumulate_nested->has_child none~accumulate mapl_BaseProfiler::BaseProfiler%accumulate proc~test_accumulate_nested->none~accumulate none~finalize mapl_BaseProfiler::BaseProfiler%finalize proc~test_accumulate_nested->none~finalize none~get_num_meters mapl_BaseProfiler::BaseProfiler%get_num_meters proc~test_accumulate_nested->none~get_num_meters none~get_root_node mapl_BaseProfiler::BaseProfiler%get_root_node proc~test_accumulate_nested->none~get_root_node none~start mapl_TimeProfiler_private::TimeProfiler%start proc~test_accumulate_nested->none~start none~accumulate->none~get_root_node accumulate accumulate none~accumulate->accumulate none~back mapl_MeterNodeStack::MeterNodeStack%back none~accumulate->none~back none~finalize~2 MAPL_AbstractMeter::AbstractMeter%finalize none~finalize->none~finalize~2 none~get_meter MAPL_MeterNode::MeterNode%get_meter none~finalize->none~get_meter none~pop_back mapl_MeterNodeStack::MeterNodeStack%pop_back none~finalize->none~pop_back none~get_num_nodes MAPL_MeterNode::MeterNode%get_num_nodes none~get_num_meters->none~get_num_nodes none~start_self mapl_BaseProfiler::BaseProfiler%start_self none~start->none~start_self mpi_op_free mpi_op_free none~finalize~2->mpi_op_free mpi_type_free mpi_type_free none~finalize~2->mpi_type_free get_num_nodes get_num_nodes none~get_num_nodes->get_num_nodes none~begin~3 MAPL_MeterNodeVector::MeterNodeVector%begin none~get_num_nodes->none~begin~3 none~get~3 MAPL_MeterNodeVector::MeterNodeVectorIterator%get none~get_num_nodes->none~get~3 none~next~3 MAPL_MeterNodeVector::MeterNodeVectorIterator%next none~get_num_nodes->none~next~3 interface~mapl_assert MAPL_ErrorHandlingMod::MAPL_Assert none~start_self->interface~mapl_assert none~get_name MAPL_MeterNode::MeterNode%get_name none~start_self->none~get_name none~start~2 mapl_BaseProfiler::BaseProfiler%start none~start_self->none~start~2 proc~mapl_return MAPL_ErrorHandlingMod::MAPL_Return none~start_self->proc~mapl_return none~start~2->none~start_self at at proc~mapl_return->at insert insert proc~mapl_return->insert proc~mapl_throw_exception MAPL_ThrowMod::MAPL_throw_exception proc~mapl_return->proc~mapl_throw_exception

Source Code

   subroutine test_accumulate_nested()
      type(TimeProfiler), target :: main, lap
      class(AbstractMeterNode), pointer :: main_node
      class(AbstractMeterNode), pointer :: child
      class(AbstractMeter), pointer :: t

      main = TimeProfiler('main')
      call main%start()
      lap = TimeProfiler('lap')
      call lap%start()
      call lap%start('A')
      call lap%stop('A')
      call lap%finalize()
      call main%accumulate(lap)

      ! should now have 'lap' as a subtimer of 'main'
      @assertEqual(3, main%get_num_meters())

      main_node => main%get_root_node()
      @assertTrue(main_node%has_child('lap'))

      child => main_node%get_child('lap')
      t => child%get_meter()
      select type (t)
      class is (AdvancedMeter)
         @assertEqual(1, t%get_num_cycles())
      end select

      @assertTrue(child%has_child('A'))
      child => child%get_child('A')
      t => child%get_meter()
      select type (t)
      class is (AdvancedMeter)
         @assertEqual(1, t%get_num_cycles())
      end select

   end subroutine test_accumulate_nested