From 395ed61a1ab9e91625e07e51c65db9de6b8625eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20R=C5=AF=C5=BEi=C4=8Dka?= Date: Tue, 27 Apr 2021 13:02:53 +0200 Subject: [PATCH] Automate the Anaconda_Save_Traceback_to_Bugzilla_Text test case. This PR adds a new test that automates the above mentioned test case. It starts the installation in text mode using the `install_text` test case, which it interrupts using the Anaconda crash trigger. When the crash happens, it goes through the process of reporting the bug to Bugzilla, checks that Bugzilla sends a positive confirmation of the action, but also performs some REST API calls to do a proper check and then it closes the bug to clean up. --- .gitignore | 1 - VARIABLES.md | 4 + ci/perl.yaml | 2 +- lib/anaconda.pm | 111 +++++++++++++++++- lib/bugzilla.pm | 82 +++++++++++++ main.pm | 11 +- .../install_process/text_bug_reported.json | 15 +++ .../install_process/text_bug_reported.png | Bin 0 -> 20424 bytes .../text_crash_menu_ready.json | 15 +++ .../install_process/text_crash_menu_ready.png | Bin 0 -> 23170 bytes .../install_process/text_install_main.json | 15 +++ .../install_process/text_install_main.png | Bin 0 -> 16821 bytes .../install_process/text_install_shell.json | 15 +++ .../install_process/text_install_shell.png | Bin 0 -> 3992 bytes templates.fif.json | 54 +++++++++ tests/install_text.pm | 9 ++ 16 files changed, 327 insertions(+), 7 deletions(-) create mode 100644 lib/bugzilla.pm create mode 100644 needles/anaconda/install_process/text_bug_reported.json create mode 100644 needles/anaconda/install_process/text_bug_reported.png create mode 100644 needles/anaconda/install_process/text_crash_menu_ready.json create mode 100644 needles/anaconda/install_process/text_crash_menu_ready.png create mode 100644 needles/anaconda/install_process/text_install_main.json create mode 100644 needles/anaconda/install_process/text_install_main.png create mode 100644 needles/anaconda/install_process/text_install_shell.json create mode 100644 needles/anaconda/install_process/text_install_shell.png diff --git a/.gitignore b/.gitignore index 6265c404..02bae73d 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,3 @@ .tox/ .coverage coverage.xml - diff --git a/VARIABLES.md b/VARIABLES.md index 69eb6704..2bc7819f 100644 --- a/VARIABLES.md +++ b/VARIABLES.md @@ -81,6 +81,10 @@ it also means that `B` conflicts `A` even if not shown in the table). | `ANACONDA_STATIC` | string (IPv4 address) | not set | `ANACONDA_TEXT` | If set, will set up static networking using the chosen IP address during install | | `POST_STATIC` | string (space-separated IPv4 address and hostname) | not set | nothing | If set, will set up static networking using the chosen IP address and hostname during early post-install | | `NO_UEFI_POST` | boolean | `false`/not set | nothing | If set, `uefi_postinstall` test will not be loaded even if `UEFI` is set (can be useful for non-English tests to avoid `uefi_postinstall` running loadkeys) | +| `CRASH_REPORT` | boolean | not set | nothing | If set, Anaconda will perorm a simulated crash during installation, which will be used to create a report in the Bugzilla. Currently, this only affects Anaconda when it runs in text mode. | +| `BUGZILLA_LOGIN` | string | not set | used with `_SECRET_BUGZILLA_PASSWORD` | This is used to store a login string which does not get exposed in log files. | +| `_SECRET_BUGZILLA_PASSWORD` | string | not set | used with `BUGZILLA_LOGIN` | This is used to store a password string which does not get exposed in log files. | +| `_SECRET_BUGZILLA_APIKEY` | string | not set | used with other secrets | This is used to store an API key which does not get exposed in log files. | Run variables ------------- diff --git a/ci/perl.yaml b/ci/perl.yaml index ba3b376b..bbc8ec58 100644 --- a/ci/perl.yaml +++ b/ci/perl.yaml @@ -2,7 +2,7 @@ tasks: - name: Install required packages package: - name: ['os-autoinst', 'perl-Test-Strict', 'perl-Test-Harness'] + name: ['os-autoinst', 'perl-Test-Strict', 'perl-Test-Harness', 'perl-JSON', 'perl-REST-Client'] state: present become: yes - name: Run perl tests diff --git a/lib/anaconda.pm b/lib/anaconda.pm index a449ed63..237bfcba 100644 --- a/lib/anaconda.pm +++ b/lib/anaconda.pm @@ -7,8 +7,9 @@ use Exporter; use testapi; use utils; +use bugzilla; -our @EXPORT = qw/select_disks custom_scheme_select custom_blivet_add_partition custom_blivet_format_partition custom_blivet_resize_partition custom_change_type custom_change_fs custom_change_device custom_delete_part get_full_repo get_mirrorlist_url check_help_on_pane/; +our @EXPORT = qw/select_disks custom_scheme_select custom_blivet_add_partition custom_blivet_format_partition custom_blivet_resize_partition custom_change_type custom_change_fs custom_change_device custom_delete_part get_full_repo get_mirrorlist_url crash_anaconda_text report_bug_text/; sub select_disks { # Handles disk selection. Has one optional argument - number of @@ -360,3 +361,111 @@ sub check_help_on_pane { } } +sub crash_anaconda_text { + # This routine uses the Anaconda crash trigger to break the ongoing Anaconda installation to simulate + # an Anaconda crash and runs a series of steps that results in creating a bug in Bugzilla. + # It is used in the `install_text.pm` test and can be switched on by using the CRASH_REPORT + # variable set to 1. + # + # First let us navigate to reach the shell window in Anaconda using the alt-f3 combo, + # this should take us to another terminal, where we can simulate the crash. + send_key "alt-f3"; + assert_screen("anaconda_text_install_shell"); + # We use the trigger command to do the simulated crash. + type_string "kill -USR1 `cat /var/run/anaconda.pid`\n"; + # And navigate back to the main panel of Anaconda. This should require + send_key "alt-f1"; + assert_screen("anaconda_text_install_main"); + # We wait until the crash menu appears. This usually takes some time, + # so let's try for 300 seconds, this should be long enough. + my $trials = 1; + until (check_screen("anaconda_text_crash_menu_ready") || $trials > 30) { + sleep 10; + ++$trials; + } + # If the crash menu never appears, let's assert it to fail. + if ($trials > 30) { + assert_screen("anaconda_text_crash_menu_ready"); + } + +} + +sub report_bug_text { + # This routine handles the Bugzilla reporting after a simulated crash on + # a textual console. + # We will not create a needle for every menu item, and we will fail, + # if there will be no positive Bugzilla confirmation shown at the end + # of the process and then we will fail. + # + # Let us record the time of this test run. Later, we will use it to + # limit the Bugzilla search. + my $timestamp = time(); + # + # First, collect the credentials. + my $login = get_var("BUGZILLA_LOGIN"); + my $password = get_var("_SECRET_BUGZILLA_PASSWORD"); + my $apikey = get_var("_SECRET_BUGZILLA_APIKEY"); + # Choose item 1 - Report the bug. + type_string "1\n"; + sleep 2; + # Choose item 1 - Report to Bugzilla + type_string "1\n"; + sleep 5; + # Do login. + type_string $login; + type_string "\n"; + sleep 5; + # Enter the name of the Zilla. + type_password $password; + type_string "\n"; + sleep 10; + # Save the report without changing it. + # It would need some more tweaking to actually type into the report, but since + # it is reported even if unchanged, we leave it as such. + type_string ":wq\n"; + # Wait until the Crash menu appears again. + # The same screen shows the result of the Bugzilla operation, + # so if the needle matches, the bug has been created in Bugzilla. + # Bugzilla connection is slow so we need to wait out some time, + # therefore let's use a cycle that will check each 10 seconds and + # ends if there is no correct answer from Bugzilla in 120 seconds. + my $counter = 0; + until (check_screen("anaconda_text_bug_reported") || $counter > 12) { + sleep 10; + ++$counter; + } + # Sometimes, Bugzilla throws out a communication error although the bug has been + # created successfully. If this happens, we will softfail and leave the creation + # check to a later step. + if ($counter > 12) { + record_soft_failure "Warning: Bugzilla has reported an error which could mean that the bug has not been created correctly, but it probably is not a real problem, if the test has not failed completely. "; + } + + # Now, let us check with Bugzilla directly, if the bug has been created. + # First, we shall get a Bugzilla format timestamp to use it in the query. + # The timestamp will limit the list of bugs to those that have been created since + # the then -> resulting with high probability in the one that this test run + # has just created. + $timestamp = convert_to_bz_timestamp($timestamp); + # Then we fetch the latest bug from Bugzilla. + my $lastbug = get_newest_bug($timestamp, $login); + unless ($lastbug) { + die "Bugzilla returned no newly created bug. It seems that the bug has not been created."; + } + else { + print("BUGZILLA: The last bug was found: $lastbug\n"); + } + # We have found that the bug indeed is in the bugzilla (otherwise + # we would have died already) so now we close it to clean up after this test run. + my $result = close_notabug($lastbug, $apikey); + unless ($result) { + record_soft_failure "The bug has not been closed for some reason. Check manually."; + } + else { + print("BUGZILLA: The last bug $lastbug changed status to CLOSED.\n"); + } + + # Quit anaconda + type_string "4\n"; + +} diff --git a/lib/bugzilla.pm b/lib/bugzilla.pm new file mode 100644 index 00000000..245ce64b --- /dev/null +++ b/lib/bugzilla.pm @@ -0,0 +1,82 @@ +package bugzilla; + +use strict; + +use base 'Exporter'; +use Exporter; +use lockapi; +use testapi; +use utils; +use POSIX qw(strftime); +use JSON; +use REST::Client; + +our @EXPORT = qw(convert_to_bz_timestamp get_newest_bug check_bug_status_field close_notabug); + +sub start_bugzilla_client { + # Start a Bugzilla REST client for setting up communication. + # This is a local subroutine, not intended for export. + my $bugzilla = REST::Client->new(); + $bugzilla->setHost("https://bugzilla.redhat.com"); + return $bugzilla; +} + +sub convert_to_bz_timestamp { + # This subroutine takes the epoch time and converts it to + # the Bugzilla timestamp format (YYYY-MM-DDTHH:MM:SS) + # in the GMT time zone. + my $epochtime = shift; + my $bz_stamp = strftime("%FT%T", gmtime($epochtime)); + return $bz_stamp; +} + +sub get_newest_bug { + # This subroutine makes an API call to Bugzilla and + # fetches the newest bug that have been created. + # This will be the bug created by Anaconda in this + # test run. + my ($timestamp, $login) = @_; + $timestamp = convert_to_bz_timestamp($timestamp); + my $bugzilla = start_bugzilla_client(); + my $api_call = $bugzilla->GET("/rest/bug?creator=$login&status=NEW&created_after=$timestamp"); + my $rest_json = decode_json($api_call->responseContent()); + my $last_id; + eval { + $last_id = $rest_json->{bugs}[-1]->{id}; + 1; + } or do { + record_soft_failure "Bugzilla returned an empty list of bugs which is unexpected!"; + $last_id = 0; + }; + return $last_id; +} + +sub check_bug_status_field { + # This will check that the status field matches the one + # tested status. Arguments are bug_id and status. + my ($bug_id, $status) = @_; + my $bugzilla = start_bugzilla_client(); + my $api_call = $bugzilla->GET("/rest/bug/$bug_id"); + my $rest_json = decode_json($api_call->responseContent()); + if ($rest_json->{bugs}[0]->{status} eq $status) { + return 1; + } + else { + return 0; + } +} + +sub close_notabug { + # This will call Bugzilla and close the bug with the requested + # bug id as a NOTABUG. + my ($bug_id, $key) = @_; + my $bugzilla = start_bugzilla_client(); + my $api_call = $bugzilla->PUT("/rest/bug/$bug_id?api_key=$key&status=CLOSED&resolution=NOTABUG"); + my $rest_json = decode_json($api_call->responseContent()); + if ($rest_json->{bugs}[0]->{changes}->{status}->{added} ne "CLOSED") { + return 0; + } + else { + return 1; + } +} diff --git a/main.pm b/main.pm index 639ed9c5..56b161dc 100644 --- a/main.pm +++ b/main.pm @@ -251,7 +251,9 @@ sub _load_early_postinstall_tests { if (get_var("SWITCHED_LAYOUT") || get_var("INPUT_METHOD")) { _load_instance("tests/_graphical_input", $instance); } - unless (get_var("DESKTOP")) { + # We do not want to run this on Desktop installations or when + # the installation is interrupted on purpose. + unless (get_var("DESKTOP") || get_var("CRASH_REPORT")) { _load_instance("tests/_console_wait_login", $instance); } } @@ -311,12 +313,13 @@ sub load_postinstall_tests() { # console avc / crash check # it makes no sense to run this after logging in on most post- - # install tests (hence ! BOOTFROM) but we *do* want to run it on - # upgrade tests after upgrading (hence UPGRADE) + # install tests (hence ! BOOTFROM) and we do not want it + # on crashed installations (hence ! CRASH_REPORT) but we *do* want + # to run it on upgrade tests after upgrading (hence UPGRADE) # desktops have specific tests for this (hence !DESKTOP). For # desktop upgrades we should really upload a disk image at the end # of upgrade and run all the desktop post-install tests on that - if (!get_var("DESKTOP") && (!get_var("BOOTFROM") || get_var("UPGRADE"))) { + if (!get_var("DESKTOP") && !get_var("CRASH_REPORT") && (!get_var("BOOTFROM") || get_var("UPGRADE"))) { autotest::loadtest "tests/_console_avc_crash.pm"; } diff --git a/needles/anaconda/install_process/text_bug_reported.json b/needles/anaconda/install_process/text_bug_reported.json new file mode 100644 index 00000000..7b53a70a --- /dev/null +++ b/needles/anaconda/install_process/text_bug_reported.json @@ -0,0 +1,15 @@ +{ + "properties": [], + "tags": [ + "anaconda_text_bug_reported" + ], + "area": [ + { + "xpos": 2, + "ypos": 304, + "width": 447, + "height": 17, + "type": "match" + } + ] +} \ No newline at end of file diff --git a/needles/anaconda/install_process/text_bug_reported.png b/needles/anaconda/install_process/text_bug_reported.png new file mode 100644 index 0000000000000000000000000000000000000000..ed74f02c951d1e04cc074646a733336874ebbcfe GIT binary patch literal 20424 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 literal 0 HcmV?d00001 diff --git a/needles/anaconda/install_process/text_install_shell.json b/needles/anaconda/install_process/text_install_shell.json new file mode 100644 index 00000000..50be8a38 --- /dev/null +++ b/needles/anaconda/install_process/text_install_shell.json @@ -0,0 +1,15 @@ +{ + "properties": [], + "tags": [ + "anaconda_text_install_shell" + ], + "area": [ + { + "xpos": 8, + "ypos": 81, + "width": 113, + "height": 15, + "type": "match" + } + ] +} \ No newline at end of file diff --git a/needles/anaconda/install_process/text_install_shell.png b/needles/anaconda/install_process/text_install_shell.png new file mode 100644 index 0000000000000000000000000000000000000000..202adfb416d2471f3911fa9e05f7715faeb8cb0f GIT binary patch literal 3992 zcmeH|Ycw0!7RL|u8ro7tN=tO6mU_ga9!Yf2=Atr6yx&zy+R81_M5yuBy2es@SdF2RkVu3UZHj0wN~KLoWYSVqQO}56zRg{0zT6M9?ic6FIs5GY{;$1$`>b_} z{ryhu(KONo0PI0~djtZYvUS`AG?ceCr}2Ww?TCm%2Wx0(@Fy|vwnF1n&+t_5j1(*( zEs=;Pn1%$R!DVa`$;H;zmY6|I#U>ehq_uAe^|pl`_@ubRWK+MmBrG_OO~4c492^tE zf7-UU`$Ik?1nmKw9Fgbk&moX7N2I+y%+bLa2|MR(e+*{l7>9&o5efEAcJYYjM@P15 zjkaq~VUw|hxYVs4PNt-Qv_wKGEGaHI?gEz3^dWz7O9lCFRVbD~OvEPx2b*Iyb_Q46 zx&YW)fc7{Ue5GdYZB+R$c6z{{*);b4>j-gH_}}6M`9HjLlU&dfiFK=Hd^Fmvw;ccX zl~UMDIwNXm<3C&T6QhA$8}TfSSEmA2 zt2^7KKBje$^l^|dQj`TlY9wx=2Jy3~oG!g1lLIjFLC+KH9Gsy|-R6A&HR`+83Ku>^gFuU4hr`Tf0fO=}o8k|xOO5LyB5zAseEN7i9MCR(k~huSFd zCtOk)RK>Q@1;@+A^SU?JtI)mxd^`F?@26?R!uXP^nQYBoG@Vc#WZ^ZOA9>E1ni^cQ zt5gZZ7UPvS9~InjFQT2kZPb73AOI7zI&hs*rhTxwYtl*^mZ-9#d!$JbQ0+j$)V1Xf z`YMB}=TEfr&E{uI-QNm(qpG<3Z3lX_r>3W+#qLSg@T(P}ZRs2qllhoTVon`-qBhmh zq*Wa{uEnJ}E@Py1mqy+HWYS%4!#?XhE2-yKWvO8q;usmxK~%|(nph1V!d+|6o|jgJ z9J=z$`!yR}nXuvlOSdget`uwaXNoR)Rh%O8!YfA(;H2coGm*TnD>wc*r^=K@yOc@#5DXvqC;~r%FEl;b zHA8UUw+A?^x+)!26bjTP=}HXoSh)i~9m_^VtMZyxtNsHO`MseAV zT@k?&uKY~k^E;qJk_gwjt0KCN=9)RV_Vsa@2IyK0z6bOvLsZVNYVa{!KH&kNrqx2-iX9~|3_lP7WK zIN8;6J0olGq^)aH@zxKJ0RRk$CQb69-x_2Y zVX$bw0*tf9%m{8^dN!I~TDaQjLH#}GnFFJ*T?f-SD2{$Bz{yaMrMml$%R~}q>nAFE zWd&f76Hw}2tzK~p(h@TEK)l|bV%wdsA9A(Le{dJb`q#&=PRtuOJ^hs8IzRorxkXA* zV?d{ef5W;uSPf2A&SAD$kvk}gX;*;xZa2tVq`E1sj+lG)@oBlb@9!WWv&J%EWS=bn zRsJ7}x(M)!%CnLQ$dvhQ=np~y6gT-Jf}NpOPj`2^pU#HKU+Z#Oa=*_U^6mO-M!Dm< oLtux%4uKs4I|OzJ{2vKG*3^|q^8rr4>eY4^Xiq;6Dk`?%KP(z+wEzGB literal 0 HcmV?d00001 diff --git a/templates.fif.json b/templates.fif.json index 744b03f6..16d0cbd8 100644 --- a/templates.fif.json +++ b/templates.fif.json @@ -369,6 +369,33 @@ "TEST_TARGET": "ISO" }, "version": "*" + }, + "fedora-seasonal-aarch64-*": { + "arch": "aarch64", + "distri": "fedora", + "flavor": "seasonal", + "settings": { + "TEST_TARGET": "ISO" + }, + "version": "*" + }, + "fedora-seasonal-ppc64le-*": { + "arch": "ppc64le", + "distri": "fedora", + "flavor": "seasonal", + "settings": { + "TEST_TARGET": "ISO" + }, + "version": "*" + }, + "fedora-seasonal-x86_64-*": { + "arch": "x86_64", + "distri": "fedora", + "flavor": "seasonal", + "settings": { + "TEST_TARGET": "ISO" + }, + "version": "*" } }, "Profiles": { @@ -507,6 +534,22 @@ "fedora-universal-x86_64-*-uefi": { "machine": "uefi", "product": "fedora-universal-x86_64-*" + }, + "fedora-seasonal-aarch64-*-aarch64": { + "machine": "aarch64", + "product": "fedora-seasonal-aarch64-*" + }, + "fedora-seasonal-ppc64le-*-ppc64le": { + "machine": "ppc64le", + "product": "fedora-seasonal-ppc64le-*" + }, + "fedora-seasonal-x86_64-*-64bit": { + "machine": "64bit", + "product": "fedora-seasonal-x86_64-*" + }, + "fedora-seasonal-x86_64-*-uefi": { + "machine": "uefi", + "product": "fedora-seasonal-x86_64-*" } }, "TestSuites": { @@ -899,6 +942,17 @@ "ANACONDA_TEXT": "1" } }, + "install_anaconda_text_save_traceback_bugzilla": { + "profiles": { + "fedora-seasonal-aarch64-*-aarch64": 20, + "fedora-seasonal-ppc64le-*-ppc64le": 20, + "fedora-seasonal-x86_64-*-64bit": 20 + }, + "settings": { + "ANACONDA_TEXT": "1", + "CRASH_REPORT": "1" + } + }, "install_arabic_language": { "profiles": { "fedora-universal-aarch64-*-aarch64": 40, diff --git a/tests/install_text.pm b/tests/install_text.pm index b02b7f26..ab5383a5 100644 --- a/tests/install_text.pm +++ b/tests/install_text.pm @@ -2,6 +2,7 @@ use base "anacondatest"; use strict; use testapi; use utils; +use anaconda; # this enables you to send a command and some post-command wait time @@ -119,6 +120,14 @@ sub run { # begin installation console_type_wait("b\n"); + # When simulated crash is planned, then proceed with the crash routines and finish, + # otherwise proceed normally and do + if (get_var("CRASH_REPORT")) { + crash_anaconda_text; + report_bug_text; + return; + } + # Wait for install to end. Give Rawhide a bit longer, in case # we're on a debug kernel, debug kernel installs are really slow. my $timeout = 1800;