Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754340AbdLNXjT (ORCPT ); Thu, 14 Dec 2017 18:39:19 -0500 Received: from mail.kernel.org ([198.145.29.99]:34306 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754223AbdLNXjR (ORCPT ); Thu, 14 Dec 2017 18:39:17 -0500 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6085C21879 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=goodmis.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=rostedt@goodmis.org Date: Thu, 14 Dec 2017 18:39:14 -0500 From: Steven Rostedt To: Tim Tianyang Chen Cc: linux-kernel@vger.kernel.org, dhaval.giani@oracle.com, "John 'Warthog9' Hawley" Subject: Re: [PATCH 1/2][RFC]Ktest: Add email support Message-ID: <20171214183914.7d911500@gandalf.local.home> In-Reply-To: References: <20171120173738.34823-2-tianyang.chen@oracle.com> X-Mailer: Claws Mail 3.14.0 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5284 Lines: 182 On Tue, 21 Nov 2017 10:53:32 -0800 Tim Tianyang Chen wrote: Hi! Sorry for taking so long, but I've been swamped in other aspects. I'm trying to push maintainership off to John, but he's busy too :-p First comment is that the numbered patches need to be a reply to the cover patch (that is patches 1/2 and 2/2 need to be replies of 0/2). Otherwise, my mailer loses them, because I always have my email sorted by threads, and a reply to 0/2 will move it away from the other patches if the other patches are not replies. > Users can define optional "MAILER" "USR_EMAIL" variables to get email notifications. Use "MAILTO" for the variable for email. That's the common name in other tools. > Ktest will send emails when the script: > * was started > * was cancelled by Ctrl-C Hmm, I'm thinking it doesn't get sent when we hit Ctrl-C. Or at last have these as options to when to send them. I think by default, it should only send when finished, or failed. But have options like: EMAIL_WHEN_STARTED, EMAIL_WHEN_CANCELED (both default false) EMAIL_WHEN_FINIHSED and EMAIL_ON_ERROR (both default true). > * 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 > --- > ktest.pl | 41 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 41 insertions(+) > > diff --git a/ktest.pl b/ktest.pl > index 0c8b61f..2e38647 100755 > --- a/ktest.pl > +++ b/ktest.pl > @@ -22,6 +22,8 @@ my %evals; > > #default opts > my %default = ( > + "USR_EMAIL" => "", > + "MAILER" => "mailx", # default mailer Other tools (namely quilt) use sendmail (and I always make sure that is functional on my system), please default to that. "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 +206,8 @@ my $install_time; > my $reboot_time; > my $test_time; > > +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; > @@ -1426,6 +1430,9 @@ sub dodie { > print " See $opt{LOG_FILE} for more info.\n"; > } > > + send_email("KTEST: critical failure for your [$opt{TEST_TYPE}] test", > + "Your test started at $script_start_time has failed with:\n@_\n") if ($email_on_error); > + > if ($monitor_cnt) { > # restore terminal settings > system("stty $stty_orig"); > @@ -4224,6 +4231,38 @@ sub set_test_option { > return eval_option($name, $option, $i); > } > > +sub _mailx_send { > + my ($subject, $message) = @_; > + system("$opt{MAILER} -s \'$subject\' $opt{USR_EMAIL} <<< \'$message\'"); > +} > + > +sub _sendmail_send { > + my ($subject, $message) = @_; > + system("echo -e \"Subject: $subject\n\n$message\" | sendmail -t $opt{USR_EMAIL}"); > +} > + > +sub send_email { > + if ($opt{USR_EMAIL} ne "" && $opt{MAILER} ne "") Add these to the option map: [..] my $mailto; my $mailer; my $email_on_error; my $email_when_finished; my $email_when_started; my $email_when_canceled; [..] 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, Then you can do: if ($mailto ne "" && $mailer ne "") And use these variables through out, it makes it much easier to read. Also, all variables also need to be commented in the samples.conf file. > + { > + if ($opt{MAILER} eq "mail" || $opt{MAILER} eq "mailx"){ _mailx_send(@_);} > + elsif ($opt{MAILER} eq "sendmail" ) { _sendmail_send(@_);} > + else { doprint "\nYour mailer: $opt{MAILER} is not supported.\n" } > + } > + else > + { > + print "No email sent: email or mailer not specified in config.\n" > + } > +} > + > +$SIG{INT} = sub { > + send_email("KTEST: Your [$opt{TEST_TYPE}] test was cancelled", > + "Your test started at $script_start_time was cancelled: sig int") if ($email_when_canceled); > + die "\nCaught Sig Int, test interrupted: $!\n" > +}; > + > +send_email("KTEST: Your [$opt{TEST_TYPE}] test was started", > + "Your test was started on $script_start_time") if ($email_when_started); > + > # First we need to do is the builds > for (my $i = 1; $i <= $opt{"NUM_TESTS"}; $i++) { > > @@ -4429,5 +4468,7 @@ if ($opt{"POWEROFF_ON_SUCCESS"}) { > > > doprint "\n $successes of $opt{NUM_TESTS} tests were successful\n\n"; > +send_email("KTEST: Your [$opt{TEST_TYPE}] test has finished!", > + "$successes of $opt{NUM_TESTS} tests started at $script_start_time were successful!") if ($email_when_finished); Thanks for doing this! -- Steve > > exit 0; > --