From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E4790A0547 for ; Wed, 19 May 2021 16:18:00 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DB84140041; Wed, 19 May 2021 16:18:00 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 0A7784003F for ; Wed, 19 May 2021 16:17:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1621433878; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=YfOe6fegZW7SgUb2Z6Wx6NAEKJPrlDfhbpm62MeRXO8=; b=Kr0uNvF1YuUL9caVawNZKREM9ore4eH1ClNhiEV0HvYfoMsmHnS/fLEbEvZaIuE9gD/N47 gDAnHKl9nyorK47JvHmVwEer2JBjr8n1AvkHPhfujX6Eg2tWR8VxGXpseZOmt34S1CVOK4 rl2KkugjXS6VYgEC6bGOmd4n9DaDjLo= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-430-y1pIUbIsPVqmq2nN9nnGtQ-1; Wed, 19 May 2021 10:17:57 -0400 X-MC-Unique: y1pIUbIsPVqmq2nN9nnGtQ-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id EC04588BB44; Wed, 19 May 2021 14:17:55 +0000 (UTC) Received: from RHTPC1VM0NT (ovpn-118-71.rdu2.redhat.com [10.10.118.71]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DE38360C04; Wed, 19 May 2021 14:17:54 +0000 (UTC) From: Aaron Conole To: Michael Santana Cc: ci@dpdk.org, Juraj Linkes , Bruce Richardson , Thomas Monjalon , Lincoln Lavoie Date: Wed, 19 May 2021 10:17:53 -0400 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=aconole@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain Subject: [dpdk-ci] [RFC pw-ci] pw_mon: check for recheck requested comments X-BeenThere: ci@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK CI discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ci-bounces@dpdk.org Sender: "ci" ENOTREADY: Missing the actual recheck logic... needs some input / design before committing to anything. When a developer wants to ask for a test case recheck (for example, maybe to rerun the github-actions test suite), we scan for the specific line: ^Recheck-request: .*$ The line would break up as: Recheck-request: [context] where '[context]' is the name of the check (as it appears in the UI). For example, if we look at a patch that has 'github-robot', we can request a recheck of the series by sending an email reply with the line: Recheck-request: github-robot It is important to use the 'msgid' field to distinguish recheck requests. Otherwise, we will continuously reparse the same recheck request and loop forever. Additionally, we've discussed using a counter to limit the recheck requests to a single 'recheck' per test name. As an additional change, we run after the 'superseded' and 'completed' checks, to ensure that we don't bother parsing comments from older series that aren't relevant any longer. Signed-off-by: Aaron Conole --- Submitting to the ci@dpdk.org mailing list for inputs / comments, etc. diff --git a/pw_mon b/pw_mon index 28feb8b..26c667d 100755 --- a/pw_mon +++ b/pw_mon @@ -154,7 +154,35 @@ function check_superseded_series() { done } +function run_recheck() { + local recheck_name=$(echo "$7" | sed 's,^Recheck-request: ,,') + echo "# recheck for $recheck_name requested...." +} + +function check_series_needs_retest() { + local pw_instance="$1" + + series_get_active_branches "$pw_instance" | while IFS=\| read -r series_id project url repo branchname; do + local patch_comments_url=$(curl -s "$userpw" "$url" | jq -rc '.comments') + if [ "Xnull" != "X$patch_comments_url" ]; then + local comments_json=$(curl -s "$userpw" "$patch_comments_url") + local seq_end=$(echo "$comments_json" | jq -rc 'length') + if [ "$seq_end" -a $seq_end -gt 0 ]; then + seq_end=$((seq_end-1)) + for comment_id in $(seq 0 $seq_end); do + local recheck_requested=$(echo "$comments_json" | jq -rc ".[$comment_id].content" | grep "^Recheck-request: ") + if [ "X$recheck_requested" != "X" ]; then + local msgid=$(echo "$comments_json" | jq -rc ".[$comment_id].msgid") + run_recheck "$pw_instance" "$series_id" "$project" "$url" "$repo" "$branchname" "$recheck_requested" "$msgid" + fi + done + fi + fi + done +} + check_undownloaded_series "$pw_instance" "$pw_project" check_completed_series "$pw_instance" "$pw_project" check_new_series "$pw_instance" "$pw_project" check_superseded_series "$pw_instance" +check_series_needs_retest "$pw_instance" ---