#!/bin/bash # Description: Verify reporter-mantisbt functionality # Author: Matej Habrnal # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # # Copyright (c) 2011 Red Hat, Inc. All rights reserved. # # This program is free software: you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation, either version 3 of # the License, or (at your option) any later version. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see http://www.gnu.org/licenses/. # # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TEST_DIR="tests/p_abrt-cli" source $TEST_DIR/_lib.sh t_Log "Running $0 - reporter-mantisbt test suite" # testing if bugs-test.centos.org is reachable for that test .. curl --silent -I http://bugs-test.centos.org/my_view_page.php|grep -q "HTTP/1.1 200 OK" if [ "$?" -ne "0" ];then t_Log "Mantis test instance doesn't seem reachable ... SKIP" exit 0 fi # run only on centos 7 or greater [[ $centos_ver -lt 7 ]] && exit rlJournalStart rlPhaseStartSetup LANG="" export LANG TmpDir=$(mktemp -d) cp -R $TEST_DIR/queries/* $TmpDir cp -R $TEST_DIR/problem_dir $TmpDir cp $TEST_DIR/_pyserve $TmpDir/pyserve cp $TEST_DIR/_mantisbt.conf $TmpDir/mantisbt.conf cp $TEST_DIR/_mantisbt_format.conf $TmpDir/mantisbt_format.conf cp $TEST_DIR/_mantisbt_formatdup.conf $TmpDir/mantisbt_formatdup.conf cp $TEST_DIR/_attachment_file $TmpDir/attachment_file pushd $TmpDir rlPhaseEnd rlPhaseStartTest "sanity" rlRun "reporter-mantisbt --help &> null" rlRun "reporter-mantisbt --help 2>&1 | grep 'Usage:'" rlPhaseEnd # search by duphash # API new method for searching in MantisBT by duphas rlPhaseStartTest "search by duphash" ./pyserve \ login_correct \ search_two_issues &> server_log & sleep 1 rlRun "reporter-mantisbt -vvv -h bbfe66399cc9cb8ba647414e33c5d1e4ad82b511 -c mantisbt.conf &> client_log" kill %1 rlAssertGrep "test" server_log rlAssertGrep "password" server_log rlAssertGrep "" server_log rlAssertGrep "abrt_hash" server_log rlAssertGrep "bbfe66399cc9cb8ba647414e33c5d1e4ad82b511" server_log rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "test" client_log rlAssertGrep "Looking for similar problems in CentOS Bug Tracker" client_log rlAssertGrep "99" client_log rlAssertGrep "99" client_log # not contain rlAssertNotGrep "Status: new open http://localhost:12345/view.php?id=99" client_log rlAssertNotGrep "323795" client_log rm -f problem_dir/reported_to rlPhaseEnd # attach files to issue (parameter t, issue ID is specified) rlPhaseStartTest "attach files to issue (issue ID is specified)" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/attachment \ &> server_log & sleep 1 rlRun "reporter-mantisbt -vvv -c mantisbt.conf -F mantisbt_format.conf \ -d problem_dir -t1 attachment_file &> client_log" kill %1 # request rlAssertGrep "test" server_log rlAssertGrep "" server_log rlAssertGrep "1" server_log rlAssertGrep "attachment_file" server_log rlAssertGrep "U1NCaGJTQmhkSFJoWTJobFpDQTZLUW89Cg==" server_log # response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Attaching file 'attachment_file' to issue 1" client_log rlAssertGrep "4" client_log # not contain rlAssertNotGrep "Status: new open http://localhost:12345/view.php?id=99" client_log rlAssertNotGrep "323795" client_log rm -f problem_dir/reported_to rlPhaseEnd # attach files to issue (parameter -t, issue ID is not specified) # API mc_issue_attachment_add rlPhaseStartTest "attach files to issue (issue ID is not specified)" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/attachment \ &> server_log & rlRun "echo \"CentOS Bug Tracker: URL=http://localhost:12345/mantisbt/view.php?id=1\" > problem_dir/reported_to" sleep 1 rlRun "reporter-mantisbt -vvv -c mantisbt.conf -F mantisbt_format.conf -d problem_dir -t attachment_file &> client_log" kill %1 # request rlAssertGrep "" server_log rlAssertGrep "1" server_log rlAssertGrep "attachment_file" server_log # response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Attaching file 'attachment_file' to issue 1" client_log rlAssertGrep "4" client_log # not contain rlAssertNotGrep "Status: new open http://localhost:12345/view.php?id=99" client_log rlAssertNotGrep "323795" client_log #dummy rm -f problem_dir/reported_to rlPhaseEnd # force reporting even if this problem is already reported (parameter -f) rlPhaseStartTest "force reporting" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/search_two_issues \ $QUERIES_DIR/search_no_issue \ $QUERIES_DIR/get_custom_fields \ $QUERIES_DIR/create \ $QUERIES_DIR/attachment \ $QUERIES_DIR/attachment \ &> server_log & # is reported rlRun "echo \"CentOS Bug Tracker: URL=http://localhost:12345/mantisbt/view.php?id=1\" > problem_dir/reported_to" sleep 1 rlRun "reporter-mantisbt -f -vvv -c mantisbt.conf -F mantisbt_format.conf -A mantisbt_formatdup.conf -d problem_dir >client_log 2>&1 " kill %1 #request rlAssertGrep "test" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "proj" server_log rlAssertGrep "public" server_log rlAssertGrep "666" server_log rlAssertGrep "\[abrt\] : rxvt_term::selection_delimit_word(): Process /usr/bin/urxvtd was killed by signal 11 (SIGSEGV)" server_log rlAssertGrep "" server_log rlAssertGrep "backtrace" server_log rlAssertGrep "7" server_log rlAssertGrep "backtrace" server_log #response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Checking for duplicates" client_log rlAssertGrep "CentOS Bug Tracker has 2 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511' including cross-version ones" client_log rlAssertGrep "" client_log rlAssertGrep "Potential duplicate: issue 99" client_log rlAssertGrep "CentOS Bug Tracker has 0 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511'" client_log rlAssertGrep "" client_log rlAssertGrep "Creating a new issue" client_log rlAssertGrep "7" client_log # not contain rlAssertNotGrep "323795" client_log #dummy rm -f problem_dir/reported_to rlPhaseEnd # create a new issue (only potential duplicate issues exist) rlPhaseStartTest "create an issue (only potential duplicate issues exist)" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/search_two_issues \ $QUERIES_DIR/search_no_issue \ $QUERIES_DIR/get_custom_fields \ $QUERIES_DIR/create \ $QUERIES_DIR/attachment \ $QUERIES_DIR/attachment \ &> server_log & # is reported rlRun "echo \"CentOS Bug Tracker: URL=http://localhost:12345/mantisbt/view.php?id=1\" > problem_dir/reported_to" sleep 1 rlRun "reporter-mantisbt -f -vvv -c mantisbt.conf -F mantisbt_format.conf -A mantisbt_formatdup.conf -d problem_dir >client_log 2>&1 " kill %1 #request rlAssertGrep "test" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "proj" server_log rlAssertGrep "public" server_log rlAssertGrep "666" server_log rlAssertGrep "\[abrt\] : rxvt_term::selection_delimit_word(): Process /usr/bin/urxvtd was killed by signal 11 (SIGSEGV)" server_log rlAssertGrep "" server_log rlAssertGrep "backtrace" server_log rlAssertGrep "7" server_log rlAssertGrep "backtrace" server_log #response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Checking for duplicates" client_log rlAssertGrep "CentOS Bug Tracker has 2 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511' including cross-version ones" client_log rlAssertGrep "" client_log rlAssertGrep "Potential duplicate: issue 99" client_log rlAssertGrep "CentOS Bug Tracker has 0 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511'" client_log rlAssertGrep "" client_log rlAssertGrep "Creating a new issue" client_log rlAssertGrep "7" client_log rlAssertGrep "Status: new http://localhost:12345/view.php?id=7" client_log # not contain rlAssertNotGrep "323795" client_log #dummy rm -f problem_dir/reported_to rlPhaseEnd # create a new issue (no potential duplicate issues exist) rlPhaseStartTest "create an issue (no potential duplicate issues exist)" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/search_no_issue \ $QUERIES_DIR/get_custom_fields \ $QUERIES_DIR/create \ $QUERIES_DIR/attachment \ $QUERIES_DIR/attachment \ &> server_log & sleep 1 rlRun "reporter-mantisbt -vvv -c mantisbt.conf -F mantisbt_format.conf -d problem_dir &> client_log" kill %1 #request rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log #response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Checking for duplicates" client_log rlAssertGrep "CentOS Bug Tracker has 0 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511' including cross-version ones" client_log rlAssertGrep "" client_log # not contain rlAssertNotGrep "CentOS Bug Tracker has 2 reports" client_log #not rlAssertGrep "Creating a new issue" client_log rlAssertGrep "7" client_log rlAssertGrep "Status: new http://localhost:12345/view.php?id=7" client_log rlAssertNotGrep "323795" client_log #dummy rm -f problem_dir/reported_to rlPhaseEnd # duplicate issue exist (comment doesn't exist, not closed as duplicate) rlPhaseStartTest "duplicate issue exist (comment doesn't exist)" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/search_two_issues \ $QUERIES_DIR/search_one_issue \ $QUERIES_DIR/get_issue \ &> server_log & rlRun "rm -f problem_dir/comment" sleep 1 rlRun "reporter-mantisbt -vvv -c mantisbt.conf -F mantisbt_format.conf -A mantisbt_formatdup.conf -d problem_dir &> client_log" kill %1 # request rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "99" server_log # response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Checking for duplicates" client_log rlAssertGrep "CentOS Bug Tracker has 2 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511' including cross-version ones" client_log rlAssertGrep "" client_log rlAssertGrep "CentOS Bug Tracker has 1 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511'" client_log rlAssertNotGrep "" client_log #not rlAssertGrep "99" client_log rlAssertGrep "new" client_log rlAssertGrep "Bug is already reported: 99" client_log rlAssertGrep "Status: new open http://localhost:12345/view.php?id=99" client_log # not contain rlAssertNotGrep "323795" client_log #dummy rm -f problem_dir/reported_to rlPhaseEnd # duplicate issue exist (comment doesn't exist, closed as duplicate) rlPhaseStartTest "duplicate issue exist (comment doesn't exist)" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/search_two_issues \ $QUERIES_DIR/search_one_issue \ $QUERIES_DIR/get_issue_closed_as_duplicate \ $QUERIES_DIR/get_issue \ &> server_log & sleep 1 rlRun "reporter-mantisbt -vvv -c mantisbt.conf -F mantisbt_format.conf -A mantisbt_formatdup.conf -d problem_dir &> client_log" kill %1 # request rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "99" server_log # response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Checking for duplicates" client_log rlAssertGrep "CentOS Bug Tracker has 2 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511' including cross-version ones" client_log rlAssertGrep "" client_log rlAssertGrep "CentOS Bug Tracker has 1 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511'" client_log # not contain rlAssertNotGrep "" client_log rlAssertGrep "99" client_log rlAssertGrep "new" client_log rlAssertGrep "duplicate" client_log rlAssertGrep "Bug is already reported: 99" client_log rlAssertGrep "Issue 99 is a duplicate, using parent issue 101" client_log rlAssertGrep "Status: new open http://localhost:12345/view.php?id=101" client_log # not contain rlAssertNotGrep "Status: new open http://localhost:12345/view.php?id=99" client_log rlAssertNotGrep "323795" client_log #dummy rm -f problem_dir/reported_to rm -f problem_dir/comment rlPhaseEnd # duplicate issue exist (comment file exists, isn't duplicate, attach backtrace) rlPhaseStartTest "duplicate issue exist (comment file exists, isn't duplicate, attach backtrace)" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/search_two_issues \ $QUERIES_DIR/search_one_issue \ $QUERIES_DIR/get_issue \ $QUERIES_DIR/add_note \ $QUERIES_DIR/attachment \ &> server_log & # create a comment file rlRun "echo \"i am comment\" > problem_dir/comment" sleep 1 rlRun "reporter-mantisbt -vvv -c mantisbt.conf -F mantisbt_format.conf -A mantisbt_formatdup.conf -d problem_dir &> client_log" kill %1 # request rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "99" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log # response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Checking for duplicates" client_log rlAssertGrep "CentOS Bug Tracker has 2 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511' including cross-version ones" client_log rlAssertGrep "" client_log rlAssertGrep "CentOS Bug Tracker has 1 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511'" client_log rlAssertNotGrep "" client_log #not rlAssertGrep "99" client_log rlAssertGrep "new" client_log rlAssertGrep "Bug is already reported: 99" client_log rlAssertGrep "Adding new comment to issue 99" client_log rlAssertGrep "Attaching better backtrace" client_log rlAssertGrep "5" client_log rlAssertGrep "4" client_log rlAssertGrep "Status: new open http://localhost:12345/view.php?id=99" client_log # not contain rlAssertNotGrep "323795" client_log #dummy rm -f problem_dir/reported_to rm -f problem_dir/comment rlPhaseEnd # duplicate issue exist (comment file exists, is duplicate) rlPhaseStartTest "duplicate issue exist (comment file exists, is duplicate)" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/search_two_issues \ $QUERIES_DIR/search_one_issue \ $QUERIES_DIR/get_issue_dup_comment_rating_1 \ &> server_log & # create a comment file rlRun "echo \"i am comment\" > problem_dir/comment" sleep 1 rlRun "reporter-mantisbt -vvv -c mantisbt.conf -F mantisbt_format.conf -A mantisbt_formatdup.conf -d problem_dir &> client_log" kill %1 # request rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "99" server_log # response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Checking for duplicates" client_log rlAssertGrep "CentOS Bug Tracker has 2 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511' including cross-version ones" client_log rlAssertGrep "" client_log rlAssertGrep "CentOS Bug Tracker has 1 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511'" client_log # not contain rlAssertNotGrep "" client_log rlAssertGrep "99" client_log rlAssertGrep "new" client_log rlAssertGrep "Bug is already reported: 99" client_log rlAssertGrep "Found the same comment in the issue history, not adding a new one" client_log # not contain rlAssertNotGrep "5" client_log rlAssertNotGrep "4" client_log rlAssertGrep "Status: new open http://localhost:12345/view.php?id=99" client_log rlAssertNotGrep "323795" client_log #dummy rm -f problem_dir/reported_to rm -f problem_dir/comment rlPhaseEnd rlPhaseStartTest "duplicate issue exist (comment file exists, isn't duplicate, the same backtrace rating)" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/search_two_issues \ $QUERIES_DIR/search_one_issue \ $QUERIES_DIR/get_issue_comment_rating_1 \ $QUERIES_DIR/add_note \ &> server_log & # create a comment file rlRun "echo \"i am comment\" > problem_dir/comment" sleep 1 rlRun "reporter-mantisbt -vvv -c mantisbt.conf -F mantisbt_format.conf -A mantisbt_formatdup.conf -d problem_dir &> client_log" kill %1 # request rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "99" server_log rlAssertGrep "" server_log #not contain rlAssertNotGrep "" server_log # response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Checking for duplicates" client_log rlAssertGrep "CentOS Bug Tracker has 2 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511' including cross-version ones" client_log rlAssertGrep "" client_log rlAssertGrep "CentOS Bug Tracker has 1 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511'" client_log rlAssertGrep "Status: new open http://localhost:12345/view.php?id=99" client_log rlAssertGrep "99" client_log rlAssertGrep "new" client_log rlAssertGrep "Bug is already reported: 99" client_log rlAssertGrep "5" client_log rlAssertGrep "Adding new comment to issue 99" client_log # not contain rlAssertNotGrep "" client_log rlAssertNotGrep "Attaching better backtrace" client_log rlAsserNottGrep "Found the same comment in the issue history, not adding a new one" client_log rlAssertNotGrep "4" client_log rlAssertNotGrep "323795" client_log #dummy rm -f problem_dir/reported_to rm -f problem_dir/comment rlPhaseEnd rlPhaseStartTest "duplicate issue exist (comment file exists, isn't duplicate, better backtrace rating)" ./pyserve \ $QUERIES_DIR/login_correct \ $QUERIES_DIR/project_get_id_from_name \ $QUERIES_DIR/search_two_issues \ $QUERIES_DIR/search_one_issue \ $QUERIES_DIR/get_issue_comment_rating_1 \ $QUERIES_DIR/add_note \ $QUERIES_DIR/attachment \ &> server_log & # create a comment file rlRun "echo \"i am comment\" > problem_dir/comment" rlRun "echo \"5\" > problem_dir/backtrace_rating" sleep 1 rlRun "reporter-mantisbt -vvv -c mantisbt.conf -F mantisbt_format.conf -A mantisbt_formatdup.conf -d problem_dir &> client_log" kill %1 # request rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log rlAssertGrep "99" server_log rlAssertGrep "" server_log rlAssertGrep "" server_log # response rlAssertGrep "" client_log rlAssertGrep "2" client_log rlAssertGrep "name xsi:type=\"xsd:string\">test" client_log rlAssertGrep "Checking for duplicates" client_log rlAssertGrep "CentOS Bug Tracker has 2 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511' including cross-version ones" client_log rlAssertGrep "" client_log # not contain rlAssertGrep "CentOS Bug Tracker has 1 reports with duphash 'bbfe66399cc9cb8ba647414e33c5d1e4ad82b511'" client_log rlAssertNotGrep "" client_log rlAssertGrep "99" client_log rlAssertGrep "new" client_log rlAssertGrep "Bug is already reported: 99" client_log rlAssertGrep "5" client_log rlAssertGrep "Adding new comment to issue 99" client_log rlAssertGrep "Attaching better backtrace" client_log rlAssertGrep "4" client_log rlAssertGrep "Status: new open http://localhost:12345/view.php?id=99" client_log # not contain rlAsserNottGrep "Found the same comment in the issue history, not adding a new one" client_log rlAssertNotGrep "323795" client_log #dummy rm -f problem_dir/reported_to rm -f problem_dir/comment rlRun "echo \"1\" > problem_dir/backtrace_rating" rlPhaseEnd rlPhaseStartCleanup rlBundleLogs abrt server* client* popd # TmpDir rm -rf $TmpDir rlPhaseEnd rlJournalPrintText rlJournalEnd