mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
ZCL_ABAPGIT_SERIALIZE / DETERMINE_MAX_PROCESSES refactoring (#6646)
This commit is contained in:
parent
0cbbc5bbfd
commit
f9b25f279d
|
@ -1,6 +1,7 @@
|
|||
CLASS zcl_abapgit_exit DEFINITION
|
||||
PUBLIC
|
||||
CREATE PUBLIC.
|
||||
CREATE PUBLIC
|
||||
GLOBAL FRIENDS zcl_abapgit_injector.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
|
|
|
@ -126,6 +126,9 @@ CLASS zcl_abapgit_serialize DEFINITION
|
|||
VALUE(rs_i18n_params) TYPE zif_abapgit_definitions=>ty_i18n_params
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS is_parallelization_possible
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE abap_bool.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -300,75 +303,46 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD determine_max_processes.
|
||||
DATA: lo_settings TYPE REF TO zcl_abapgit_settings,
|
||||
li_exit TYPE REF TO zif_abapgit_exit.
|
||||
DATA: li_exit TYPE REF TO zif_abapgit_exit.
|
||||
|
||||
IF iv_force_sequential = abap_true.
|
||||
rv_processes = 1.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF gv_max_processes IS INITIAL.
|
||||
lo_settings = zcl_abapgit_persist_factory=>get_settings( )->read( ).
|
||||
IF gv_max_processes IS INITIAL AND is_parallelization_possible( ) = abap_true.
|
||||
|
||||
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true
|
||||
OR lo_settings->get_parallel_proc_disabled( ) = abap_true.
|
||||
gv_max_processes = 1.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
IF gv_max_processes >= 1.
|
||||
" SPBT_INITIALIZE gives error PBT_ENV_ALREADY_INITIALIZED if called
|
||||
" multiple times in same session
|
||||
rv_processes = gv_max_processes.
|
||||
ELSEIF mv_group IS NOT INITIAL.
|
||||
" The function module below should always exist here as is_merged evaluated to false above. It does however
|
||||
" not exist in the transpiled version which then causes unit tests to fail. Therefore the check needs to stay.
|
||||
IF zcl_abapgit_factory=>get_function_module( )->function_exists( 'Z_ABAPGIT_SERIALIZE_PARALLEL' ) = abap_false.
|
||||
gv_max_processes = 1.
|
||||
ELSE.
|
||||
CALL FUNCTION 'SPBT_INITIALIZE'
|
||||
EXPORTING
|
||||
group_name = mv_group
|
||||
IMPORTING
|
||||
free_pbt_wps = gv_max_processes
|
||||
EXCEPTIONS
|
||||
invalid_group_name = 1
|
||||
internal_error = 2
|
||||
pbt_env_already_initialized = 3
|
||||
currently_no_resources_avail = 4
|
||||
no_pbt_resources_found = 5
|
||||
cant_init_different_pbt_groups = 6
|
||||
OTHERS = 7.
|
||||
IF sy-subrc <> 0.
|
||||
" fallback to running sequentially. If SPBT_INITIALIZE fails, check transactions
|
||||
" RZ12, SM50, SM21, SARFC
|
||||
gv_max_processes = 1.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
gv_max_processes = zcl_abapgit_factory=>get_environment( )->init_parallel_processing( mv_group ).
|
||||
|
||||
IF gv_max_processes > 1.
|
||||
gv_max_processes = gv_max_processes - 1.
|
||||
ENDIF.
|
||||
ELSE.
|
||||
|
||||
IF gv_max_processes > 32.
|
||||
" https://en.wikipedia.org/wiki/Amdahl%27s_law
|
||||
gv_max_processes = 32.
|
||||
ENDIF.
|
||||
|
||||
ENDIF.
|
||||
|
||||
IF gv_max_processes IS INITIAL.
|
||||
" fallback to running sequentially.
|
||||
gv_max_processes = 1.
|
||||
ENDIF.
|
||||
|
||||
ASSERT gv_max_processes >= 1.
|
||||
|
||||
IF gv_max_processes > 32.
|
||||
" https://en.wikipedia.org/wiki/Amdahl%27s_law
|
||||
gv_max_processes = 32.
|
||||
ENDIF.
|
||||
|
||||
rv_processes = gv_max_processes.
|
||||
|
||||
ASSERT rv_processes >= 1.
|
||||
|
||||
li_exit = zcl_abapgit_exit=>get_instance( ).
|
||||
li_exit->change_max_parallel_processes(
|
||||
EXPORTING
|
||||
iv_package = iv_package
|
||||
CHANGING
|
||||
cv_max_processes = rv_processes ).
|
||||
|
||||
ASSERT rv_processes >= 1. " check exit above
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -718,4 +692,19 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
|||
lo_timer->end( abap_true ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_parallelization_possible.
|
||||
|
||||
rv_result = boolc( zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false
|
||||
AND zcl_abapgit_persist_factory=>get_settings( )->read( )->get_parallel_proc_disabled( ) = abap_false
|
||||
AND mv_group IS NOT INITIAL
|
||||
" The function module below should always exist here as is_merged evaluated to false above.
|
||||
" It does however not exist in the transpiled version which then causes unit tests to fail.
|
||||
" Therefore the check needs to stay.
|
||||
AND zcl_abapgit_factory=>get_function_module(
|
||||
)->function_exists( 'Z_ABAPGIT_SERIALIZE_PARALLEL' ) = abap_true ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -10,31 +10,49 @@ CLASS ltd_settings DEFINITION FINAL FOR TESTING
|
|||
zif_abapgit_persist_settings.
|
||||
|
||||
METHODS:
|
||||
constructor
|
||||
set_parallel_proc_disabled
|
||||
IMPORTING
|
||||
iv_parallel_proc_disabled TYPE abap_bool.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
ms_settings TYPE zif_abapgit_definitions=>ty_s_user_settings.
|
||||
mv_parallel_proc_disabled TYPE zif_abapgit_definitions=>ty_s_user_settings-parallel_proc_disabled.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltd_settings IMPLEMENTATION.
|
||||
|
||||
METHOD constructor.
|
||||
ms_settings-parallel_proc_disabled = iv_parallel_proc_disabled.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_persist_settings~modify.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_persist_settings~read.
|
||||
|
||||
CREATE OBJECT ro_settings.
|
||||
ro_settings->set_parallel_proc_disabled( ms_settings-parallel_proc_disabled ).
|
||||
ro_settings->set_parallel_proc_disabled( mv_parallel_proc_disabled ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_parallel_proc_disabled.
|
||||
mv_parallel_proc_disabled = iv_parallel_proc_disabled.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltd_function_module DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES:
|
||||
zif_abapgit_function_module.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltd_function_module IMPLEMENTATION.
|
||||
|
||||
METHOD zif_abapgit_function_module~function_exists.
|
||||
rv_exists = abap_true.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
@ -49,33 +67,29 @@ CLASS ltd_environment DEFINITION FINAL FOR TESTING
|
|||
zif_abapgit_environment.
|
||||
|
||||
METHODS:
|
||||
constructor
|
||||
IMPORTING
|
||||
iv_is_merged TYPE abap_bool.
|
||||
set_is_merged
|
||||
IMPORTING iv_is_merged TYPE abap_bool,
|
||||
|
||||
set_free_work_processes
|
||||
IMPORTING iv_free_work_processes TYPE i.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
mv_is_merged TYPE abap_bool.
|
||||
mv_is_merged TYPE abap_bool,
|
||||
mv_free_work_processes TYPE i.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltd_environment IMPLEMENTATION.
|
||||
|
||||
METHOD constructor.
|
||||
mv_is_merged = iv_is_merged.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~compare_with_inactive.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~get_basis_release.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~get_system_language_filter.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~is_merged.
|
||||
|
@ -83,23 +97,139 @@ CLASS ltd_environment IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~is_repo_object_changes_allowed.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~is_restart_required.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~is_sap_cloud_platform.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~is_sap_object_allowed.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~is_variant_maintenance.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~init_parallel_processing.
|
||||
rv_free_work_processes = mv_free_work_processes.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_is_merged.
|
||||
me->mv_is_merged = iv_is_merged.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_free_work_processes.
|
||||
me->mv_free_work_processes = iv_free_work_processes.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltd_exit DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES:
|
||||
zif_abapgit_exit.
|
||||
|
||||
METHODS:
|
||||
set_max_parallel_processes
|
||||
IMPORTING
|
||||
iv_max_parallel_processes TYPE i.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
mv_max_parallel_processes TYPE i.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltd_exit IMPLEMENTATION.
|
||||
|
||||
METHOD zif_abapgit_exit~adjust_display_commit_url.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~adjust_display_filename.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~allow_sap_objects.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_local_host.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_max_parallel_processes.
|
||||
IF mv_max_parallel_processes IS NOT INITIAL.
|
||||
cv_max_processes = mv_max_parallel_processes.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_proxy_authentication.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_proxy_port.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_proxy_url.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_rfc_server_group.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_supported_data_objects.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_supported_object_types.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_tadir.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~create_http_client.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~custom_serialize_abap_clif.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~deserialize_postprocess.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~determine_transport_request.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~enhance_repo_toolbar.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~get_ci_tests.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~get_ssl_id.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~http_client.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~on_event.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~pre_calculate_repo_status.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~serialize_postprocess.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~validate_before_push.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~wall_message_list.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~wall_message_repo.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_max_parallel_processes.
|
||||
mv_max_parallel_processes = iv_max_parallel_processes.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
@ -109,11 +239,24 @@ CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LE
|
|||
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
mo_cut TYPE REF TO zcl_abapgit_serialize.
|
||||
mo_cut TYPE REF TO zcl_abapgit_serialize,
|
||||
mv_act_processes TYPE i,
|
||||
mo_settings_double TYPE REF TO ltd_settings,
|
||||
mo_environment_double TYPE REF TO ltd_environment,
|
||||
mo_function_module_double TYPE REF TO ltd_function_module,
|
||||
mo_exit TYPE REF TO ltd_exit.
|
||||
|
||||
METHODS:
|
||||
setup,
|
||||
|
||||
determine_max_processes_free FOR TESTING RAISING zcx_abapgit_exception,
|
||||
det_max_processes_not_free FOR TESTING RAISING zcx_abapgit_exception,
|
||||
det_max_proc_amdahls_law FOR TESTING RAISING zcx_abapgit_exception,
|
||||
determine_max_processes_no_pp FOR TESTING RAISING zcx_abapgit_exception,
|
||||
determine_max_processes_merged FOR TESTING RAISING zcx_abapgit_exception,
|
||||
determine_max_processes_exit FOR TESTING RAISING zcx_abapgit_exception,
|
||||
force FOR TESTING RAISING zcx_abapgit_exception,
|
||||
|
||||
teardown,
|
||||
|
||||
given_parallel_proc_disabled
|
||||
|
@ -124,23 +267,51 @@ CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LE
|
|||
IMPORTING
|
||||
iv_is_merged TYPE abap_bool,
|
||||
|
||||
determine_max_processes FOR TESTING RAISING zcx_abapgit_exception,
|
||||
determine_max_processes_no_pp FOR TESTING RAISING zcx_abapgit_exception,
|
||||
determine_max_processes_merged FOR TESTING RAISING zcx_abapgit_exception,
|
||||
force FOR TESTING RAISING zcx_abapgit_exception.
|
||||
given_free_work_processes
|
||||
IMPORTING
|
||||
iv_free_work_processes TYPE i,
|
||||
|
||||
when_determine_max_processes
|
||||
IMPORTING
|
||||
iv_force_sequential TYPE abap_bool OPTIONAL
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
then_we_shd_have_n_processes
|
||||
IMPORTING
|
||||
iv_exp_processes TYPE i,
|
||||
|
||||
given_exit_chg_max_processes
|
||||
IMPORTING
|
||||
iv_max_processes TYPE i.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||
|
||||
METHOD setup.
|
||||
|
||||
CREATE OBJECT mo_settings_double.
|
||||
zcl_abapgit_persist_injector=>set_settings( mo_settings_double ).
|
||||
|
||||
CREATE OBJECT mo_environment_double.
|
||||
zcl_abapgit_injector=>set_environment( mo_environment_double ).
|
||||
|
||||
CREATE OBJECT mo_function_module_double.
|
||||
zcl_abapgit_injector=>set_function_module( mo_function_module_double ).
|
||||
|
||||
CREATE OBJECT mo_exit.
|
||||
zcl_abapgit_injector=>set_exit( mo_exit ).
|
||||
|
||||
TRY.
|
||||
CREATE OBJECT mo_cut.
|
||||
CATCH zcx_abapgit_exception.
|
||||
cl_abap_unit_assert=>fail( 'Error creating serializer' ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD teardown.
|
||||
|
||||
CLEAR: mo_cut->gv_max_processes.
|
||||
|
@ -148,92 +319,129 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD determine_max_processes.
|
||||
|
||||
DATA: lv_processes TYPE i.
|
||||
METHOD determine_max_processes_free.
|
||||
|
||||
given_parallel_proc_disabled( abap_false ).
|
||||
given_is_merged( abap_false ).
|
||||
given_free_work_processes( 10 ).
|
||||
|
||||
lv_processes = mo_cut->determine_max_processes( 'ZDUMMY' ).
|
||||
when_determine_max_processes( ).
|
||||
|
||||
cl_abap_unit_assert=>assert_differs(
|
||||
act = lv_processes
|
||||
exp = 0 ).
|
||||
then_we_shd_have_n_processes( 9 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD det_max_processes_not_free.
|
||||
|
||||
given_parallel_proc_disabled( abap_false ).
|
||||
given_is_merged( abap_false ).
|
||||
given_free_work_processes( 0 ).
|
||||
|
||||
when_determine_max_processes( ).
|
||||
|
||||
then_we_shd_have_n_processes( 1 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD det_max_proc_amdahls_law.
|
||||
|
||||
given_parallel_proc_disabled( abap_false ).
|
||||
given_is_merged( abap_false ).
|
||||
given_free_work_processes( 50 ).
|
||||
|
||||
when_determine_max_processes( ).
|
||||
|
||||
then_we_shd_have_n_processes( 32 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD determine_max_processes_no_pp.
|
||||
|
||||
DATA: lv_processes TYPE i.
|
||||
|
||||
given_parallel_proc_disabled( abap_true ).
|
||||
given_is_merged( abap_false ).
|
||||
|
||||
lv_processes = mo_cut->determine_max_processes( 'ZDUMMY' ).
|
||||
when_determine_max_processes( ).
|
||||
|
||||
cl_abap_unit_assert=>assert_differs(
|
||||
act = lv_processes
|
||||
exp = 0 ).
|
||||
then_we_shd_have_n_processes( 1 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD determine_max_processes_merged.
|
||||
|
||||
DATA: lv_processes TYPE i.
|
||||
|
||||
given_parallel_proc_disabled( abap_false ).
|
||||
given_is_merged( abap_true ).
|
||||
|
||||
lv_processes = mo_cut->determine_max_processes( 'ZDUMMY' ).
|
||||
when_determine_max_processes( ).
|
||||
|
||||
cl_abap_unit_assert=>assert_differs(
|
||||
act = lv_processes
|
||||
exp = 0 ).
|
||||
then_we_shd_have_n_processes( 1 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD determine_max_processes_exit.
|
||||
|
||||
given_exit_chg_max_processes( 7 ).
|
||||
when_determine_max_processes( ).
|
||||
then_we_shd_have_n_processes( 7 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD force.
|
||||
|
||||
DATA: lv_processes TYPE i.
|
||||
when_determine_max_processes( abap_true ).
|
||||
|
||||
lv_processes = mo_cut->determine_max_processes( iv_force_sequential = abap_true
|
||||
iv_package = 'ZDUMMY' ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_processes
|
||||
exp = 1 ).
|
||||
then_we_shd_have_n_processes( 1 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD given_parallel_proc_disabled.
|
||||
|
||||
DATA:
|
||||
lo_settings_double TYPE REF TO ltd_settings.
|
||||
|
||||
CREATE OBJECT lo_settings_double
|
||||
EXPORTING
|
||||
iv_parallel_proc_disabled = iv_parallel_proc_disabled.
|
||||
|
||||
zcl_abapgit_persist_injector=>set_settings( lo_settings_double ).
|
||||
mo_settings_double->set_parallel_proc_disabled( iv_parallel_proc_disabled ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD given_is_merged.
|
||||
|
||||
DATA:
|
||||
lo_environment_double TYPE REF TO ltd_environment.
|
||||
mo_environment_double->set_is_merged( iv_is_merged ).
|
||||
|
||||
CREATE OBJECT lo_environment_double
|
||||
EXPORTING
|
||||
iv_is_merged = iv_is_merged.
|
||||
ENDMETHOD.
|
||||
|
||||
zcl_abapgit_injector=>set_environment( lo_environment_double ).
|
||||
|
||||
METHOD given_free_work_processes.
|
||||
|
||||
mo_environment_double->set_free_work_processes( iv_free_work_processes ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD when_determine_max_processes.
|
||||
|
||||
mv_act_processes = mo_cut->determine_max_processes(
|
||||
iv_force_sequential = iv_force_sequential
|
||||
iv_package = 'ZDUMMY' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD then_we_shd_have_n_processes.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mv_act_processes
|
||||
exp = iv_exp_processes ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD given_exit_chg_max_processes.
|
||||
|
||||
mo_exit->set_max_parallel_processes( iv_max_processes ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -38,6 +38,8 @@ CLASS lcl_environment IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
METHOD zif_abapgit_environment~is_variant_maintenance.
|
||||
ENDMETHOD.
|
||||
METHOD zif_abapgit_environment~init_parallel_processing.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
|
|
@ -213,4 +213,29 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~init_parallel_processing.
|
||||
|
||||
DATA: lv_group TYPE rzlli_apcl.
|
||||
|
||||
lv_group = iv_group.
|
||||
|
||||
" SPBT_INITIALIZE gives error PBT_ENV_ALREADY_INITIALIZED if called
|
||||
" multiple times in same session
|
||||
CALL FUNCTION 'SPBT_INITIALIZE'
|
||||
EXPORTING
|
||||
group_name = lv_group
|
||||
IMPORTING
|
||||
free_pbt_wps = rv_free_work_processes
|
||||
EXCEPTIONS
|
||||
invalid_group_name = 1
|
||||
internal_error = 2
|
||||
pbt_env_already_initialized = 3
|
||||
currently_no_resources_avail = 4
|
||||
no_pbt_resources_found = 5
|
||||
cant_init_different_pbt_groups = 6
|
||||
OTHERS = 7.
|
||||
" If SPBT_INITIALIZE fails, check transactions RZ12, SM50, SM21, SARFC
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -42,6 +42,9 @@ CLASS zcl_abapgit_injector DEFINITION
|
|||
CLASS-METHODS set_function_module
|
||||
IMPORTING
|
||||
ii_function_module TYPE REF TO zif_abapgit_function_module.
|
||||
CLASS-METHODS set_exit
|
||||
IMPORTING
|
||||
ii_exit TYPE REF TO zif_abapgit_exit.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
@ -146,9 +149,12 @@ CLASS zcl_abapgit_injector IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD set_function_module.
|
||||
|
||||
zcl_abapgit_factory=>gi_function_module = ii_function_module.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_exit.
|
||||
zcl_abapgit_exit=>gi_global_exit = ii_exit.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -34,4 +34,10 @@ INTERFACE zif_abapgit_environment
|
|||
METHODS is_variant_maintenance
|
||||
RETURNING
|
||||
VALUE(rv_is_variant_maintenance) TYPE abap_bool.
|
||||
METHODS init_parallel_processing
|
||||
IMPORTING
|
||||
iv_group TYPE clike
|
||||
RETURNING
|
||||
VALUE(rv_free_work_processes) TYPE i.
|
||||
|
||||
ENDINTERFACE.
|
||||
|
|
Loading…
Reference in New Issue
Block a user