Received: by 10.213.65.68 with SMTP id h4csp1714689imn; Mon, 26 Mar 2018 13:10:48 -0700 (PDT) X-Google-Smtp-Source: AG47ELvGkceblfUptfOjkl5ZjK/aMMJAwrDMudv19OcMijU6c1zqbuj1BT3ZEbxk/h1h1V5nM3xJ X-Received: by 10.99.175.8 with SMTP id w8mr28824600pge.390.1522095048674; Mon, 26 Mar 2018 13:10:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522095048; cv=none; d=google.com; s=arc-20160816; b=hnELmwYVxDz17ajeYehZtR6xuMI47l2Im7b6l6IaxqN4fNZsdbmoTzBWl0lm7eCB4I 5j87C9AFVGKrbYhs4adURzd6Sbpo5Oe2rOadZ8KJLVIf8a8Y7sXLyUYMZVUhjG2PSXP5 Ctww08V5CEILHfBVGTGfjeknb9MOovmbOkBhwKY081JS8X2ekKBhVoNAUTYFYGi3Mm13 R0i8AGvz/QbD4c+8Ac97BzYYAihH+q4Uk01YWO0DXG0Hbv03n1A+ySesJFhJccwdCxkq ecNgZN10bzpHmcH5GVdJHbRMiC52a47hCE+7ctTxVcFCwIoxTAsvDIvUr5FUNcUf6ePF ySPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=8hSOqDt3Vb5Ek8yaj3UQWoshi7+k3z72B8quv0h3m+k=; b=AvsIwNBSVGqnNsUH58l3DngTfkEKJlPr+xtTBMSlHe4ZTsxJJjvq/aC2dSWbB5a7kW 1UBFUl986NwBlyhvGi91UtMbwDGh2yHK2JIjFtIKxV/UGoGjnmQS3ON3ra3erKAuP80X XrmcG+hlqUzUTiuotuisDokCj8eq5vj/DRctdjS0NcaO4cBoxSZoc9UlSILTpSlCfnqq SdCwHaXctWF1Z+0UDz586Fj+PRAu79VoI0qi3AB9D0pErluOu1GxdjwnZQxgA4ixo7ft Kkf3ziTV3dUIyu3X7yqrcPD7TKHId+3NYof7R6f0BgZcTRSg58IvzCD3BGWBbcFjQyle KQvg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=dQ7iOBo7; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j10si12142814pfe.276.2018.03.26.13.10.34; Mon, 26 Mar 2018 13:10:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=dQ7iOBo7; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751994AbeCZUIy (ORCPT + 99 others); Mon, 26 Mar 2018 16:08:54 -0400 Received: from userp2120.oracle.com ([156.151.31.85]:35836 "EHLO userp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751107AbeCZUIw (ORCPT ); Mon, 26 Mar 2018 16:08:52 -0400 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w2QK3fUm022123; Mon, 26 Mar 2018 20:08:50 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references; s=corp-2017-10-26; bh=8hSOqDt3Vb5Ek8yaj3UQWoshi7+k3z72B8quv0h3m+k=; b=dQ7iOBo7Z3JXlPBVrFx07ON1yRqJa/ptxVOHMAj+QfBc6FEXAEG5sDx/UnCtcvZtWcSA XOlw9mF5YuWoCfhll86VICga6whz27g8AYogHa6Tj1f+8sI2wgAvwKQVFNs/7IQuy2mv 4URW9tdfDSKuAEW/XiicGj/UfY6zGdB2Vx/XO7LF588JrvWJVQB/utnTbQNNNuJdO3g/ vLep2vBSd7h/f/R9yHipj7G+15ETNQEmSQ61jyLGxceMPrXVIQAxO7oih+08pFQwDIxb RP9HuqbsHpnRhIYGpyrkLSFk5xs/FYYwqMSjzLDQxSCRV4ukiWS+ZBKMRP+hQOYghTi4 2w== Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp2120.oracle.com with ESMTP id 2gy7jn00nt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Mar 2018 20:08:49 +0000 Received: from aserv0122.oracle.com (aserv0122.oracle.com [141.146.126.236]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id w2QK8n8d010822 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Mar 2018 20:08:49 GMT Received: from abhmp0019.oracle.com (abhmp0019.oracle.com [141.146.116.25]) by aserv0122.oracle.com (8.14.4/8.14.4) with ESMTP id w2QK8mCx024195; Mon, 26 Mar 2018 20:08:48 GMT Received: from titichen-linux.us.oracle.com (/10.211.54.111) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 26 Mar 2018 13:08:48 -0700 From: Tim Tianyang Chen To: rostedt@goodmis.org Cc: linux-kernel@vger.kernel.org, dhaval.giani@oracle.com Subject: [PATCH v3 1/4] Ktest: add email support Date: Mon, 26 Mar 2018 13:08:01 -0700 Message-Id: <1522094884-22718-2-git-send-email-tianyang.chen@oracle.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1522094884-22718-1-git-send-email-tianyang.chen@oracle.com> References: <1522094884-22718-1-git-send-email-tianyang.chen@oracle.com> X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8844 signatures=668695 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=1 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1803260203 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Users can define optional variables to get email notifications. Ktest can send emails when the script: * was started * failed with fatal errors and called dodie() * completed all testing Users have to setup the mailer provided in config prior to using this script. Supported mailers: mailx, mail, sendmail mailer specific routines are _sendmail_send(), _mailx_send() Suggested-by: Dhaval Giani Signed-off-by: Tim Tianyang Chen --- changes since v2: coding style fix for option maps and if statements moved sig int handeling to another patch changes since v1: added options for when to send emails to option_map --- ktest.pl | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/ktest.pl b/ktest.pl index 0c8b61f8398e..9469783bc6c1 100755 --- a/ktest.pl +++ b/ktest.pl @@ -22,6 +22,11 @@ my %evals; #default opts my %default = ( + "MAILER" => "sendmail", # default mailer + "EMAIL_ON_ERROR" => 1, + "EMAIL_WHEN_FINISHED" => 1, + "EMAIL_WHEN_CANCELED" => 0, + "EMAIL_WHEN_STARTED" => 0, "NUM_TESTS" => 1, "TEST_TYPE" => "build", "BUILD_TYPE" => "randconfig", @@ -204,6 +209,15 @@ my $install_time; my $reboot_time; my $test_time; +my $mailto; +my $mailer; +my $email_on_error; +my $email_when_finished; +my $email_when_started; +my $email_when_canceled; + +my $script_start_time = localtime(); + # set when a test is something other that just building or install # which would require more options. my $buildonly = 1; @@ -229,6 +243,12 @@ my $no_reboot = 1; my $reboot_success = 0; my %option_map = ( + "MAILTO" => \$mailto, + "MAILER" => \$mailer, + "EMAIL_ON_ERROR" => \$email_on_error, + "EMAIL_WHEN_FINISHED" => \$email_when_finished, + "EMAIL_WHEN_STARTED" => \$email_when_started, + "EMAIL_WHEN_CANCELED" => \$email_when_canceled, "MACHINE" => \$machine, "SSH_USER" => \$ssh_user, "TMP_DIR" => \$tmpdir, @@ -1426,6 +1446,11 @@ sub dodie { print " See $opt{LOG_FILE} for more info.\n"; } + if ($email_on_error) { + send_email("KTEST: critical failure for your [$test_type] test", + "Your test started at $script_start_time has failed with:\n@_\n"); + } + if ($monitor_cnt) { # restore terminal settings system("stty $stty_orig"); @@ -4224,6 +4249,26 @@ sub set_test_option { return eval_option($name, $option, $i); } +sub _mailx_send { + my ($subject, $message) = @_; + system("$mailer -s \'$subject\' $mailto <<< \'$message\'"); +} + +sub _sendmail_send { + my ($subject, $message) = @_; + system("echo -e \"Subject: $subject\n\n$message\" | sendmail -t $mailto"); +} + +sub send_email { + if (defined($mailto) && defined($mailer)) { + if ($mailer eq "mail" || $mailer eq "mailx"){ _mailx_send(@_);} + elsif ($mailer eq "sendmail" ) { _sendmail_send(@_);} + else { doprint "\nYour mailer: $mailer is not supported.\n" } + } else { + print "No email sent: email or mailer not specified in config.\n" + } +} + # First we need to do is the builds for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) { @@ -4264,9 +4309,15 @@ for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) { $start_minconfig_defined = 1; # The first test may override the PRE_KTEST option - if (defined($pre_ktest) && $i == 1) { - doprint "\n"; - run_command $pre_ktest; + if ($i == 1) { + if (defined($pre_ktest)) { + doprint "\n"; + run_command $pre_ktest; + } + if ($email_when_started) { + send_email("KTEST: Your [$test_type] test was started", + "Your test was started on $script_start_time"); + } } # Any test can override the POST_KTEST option @@ -4430,4 +4481,8 @@ if ($opt{"POWEROFF_ON_SUCCESS"}) { doprint "\n $successes of $opt{NUM_TESTS} tests were successful\n\n"; +if ($email_when_finished) { + send_email("KTEST: Your [$test_type] test has finished!", + "$successes of $opt{NUM_TESTS} tests started at $script_start_time were successful!"); +} exit 0; -- 2.15.1