fix 'determine_max_processes' for disabled Parallel Processing and Merged abapGit (#6559)

This commit is contained in:
Christian Günter 2023-10-24 08:40:09 +02:00 committed by GitHub
parent cb08c70741
commit 05b8f90520
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 200 additions and 11 deletions

View File

@ -314,7 +314,6 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
IF zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_true
OR lo_settings->get_parallel_proc_disabled( ) = abap_true.
gv_max_processes = 1.
RETURN.
ENDIF.
ENDIF.

View File

@ -1,6 +1,110 @@
CLASS ltcl_determine_max_processes DEFINITION DEFERRED.
CLASS zcl_abapgit_serialize DEFINITION LOCAL FRIENDS ltcl_determine_max_processes.
CLASS ltd_settings DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PUBLIC SECTION.
INTERFACES:
zif_abapgit_persist_settings.
METHODS:
constructor
IMPORTING
iv_parallel_proc_disabled TYPE abap_bool.
PRIVATE SECTION.
DATA:
ms_settings TYPE zif_abapgit_definitions=>ty_s_user_settings.
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 ).
ENDMETHOD.
ENDCLASS.
CLASS ltd_environment DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PUBLIC SECTION.
INTERFACES:
zif_abapgit_environment.
METHODS:
constructor
IMPORTING
iv_is_merged TYPE abap_bool.
PRIVATE SECTION.
DATA:
mv_is_merged TYPE abap_bool.
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.
rv_result = mv_is_merged.
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.
ENDCLASS.
CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
PRIVATE SECTION.
@ -9,12 +113,24 @@ CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LE
METHODS:
setup,
determine_max_threads FOR TESTING RAISING zcx_abapgit_exception,
teardown,
given_parallel_proc_disabled
IMPORTING
iv_parallel_proc_disabled TYPE abap_bool,
given_is_merged
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.
ENDCLASS.
CLASS ltcl_determine_max_processes IMPLEMENTATION.
METHOD setup.
@ -25,29 +141,103 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
ENDTRY.
ENDMETHOD.
METHOD determine_max_threads.
METHOD teardown.
DATA: lv_threads TYPE i.
CLEAR: mo_cut->gv_max_processes.
lv_threads = mo_cut->determine_max_processes( 'ZDUMMY' ).
ENDMETHOD.
METHOD determine_max_processes.
DATA: lv_processes TYPE i.
lv_processes = mo_cut->determine_max_processes( 'ZDUMMY' ).
cl_abap_unit_assert=>assert_differs(
act = lv_threads
act = lv_processes
exp = 0 ).
ENDMETHOD.
METHOD determine_max_processes_no_pp.
DATA: lv_processes TYPE i.
given_parallel_proc_disabled( abap_true ).
lv_processes = mo_cut->determine_max_processes( 'ZDUMMY' ).
cl_abap_unit_assert=>assert_differs(
act = lv_processes
exp = 0 ).
ENDMETHOD.
METHOD determine_max_processes_merged.
DATA: lv_processes TYPE i.
given_is_merged( abap_true ).
lv_processes = mo_cut->determine_max_processes( 'ZDUMMY' ).
cl_abap_unit_assert=>assert_differs(
act = lv_processes
exp = 0 ).
ENDMETHOD.
METHOD force.
DATA: lv_threads TYPE i.
DATA: lv_processes TYPE i.
lv_threads = mo_cut->determine_max_processes( iv_force_sequential = abap_true
iv_package = 'ZDUMMY' ).
lv_processes = mo_cut->determine_max_processes( iv_force_sequential = abap_true
iv_package = 'ZDUMMY' ).
cl_abap_unit_assert=>assert_equals(
act = lv_threads
act = lv_processes
exp = 1 ).
given_parallel_proc_disabled( 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 ).
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 ).
ENDMETHOD.
METHOD given_is_merged.
DATA:
lo_environment_double TYPE REF TO ltd_environment.
CREATE OBJECT lo_environment_double
EXPORTING
iv_is_merged = iv_is_merged.
zcl_abapgit_injector=>set_environment( lo_environment_double ).
ENDMETHOD.
ENDCLASS.