diff --git a/LoadCSVData.pl b/LoadCSVData.pl index 881b03c..46e19f8 100755 --- a/LoadCSVData.pl +++ b/LoadCSVData.pl @@ -59,6 +59,7 @@ my @errors; my @warnings; my $MatlabErrors = ''; my $MatlabWarnings = ''; +my $tool_status = ''; sub uniq { my %seen; @@ -122,67 +123,75 @@ sub writeOutSql { sub matlabCalc { getMatlabCmd(); - $matlab_timestamp = getTimeStamp("db_ts"); - print getTimeStamp("log") - . " - pid $$ >> $unit - $tool MatLab calc started...\n"; - if ( $matlab_cmd =~ /_lnx$/ ) { - $matlab_cmd = './run_' . $matlab_cmd . '.sh'; - $MatlabErrorFilename .= "${unit}${tool}_output_error.txt"; - - #print $ENV{"HOME"} . "\n"; - $ENV{"HOME"} = "/" . $ENV{"HOME"}; - chdir($matlab_func_dir) - or die "cannot change: $!\n"; + if ( $tool_status eq 'Monitoring Completed' ) { print getTimeStamp("log") - . " - pid $$ >> current dir: $matlab_func_dir\n"; - my @args = - ( 'timeout', $matlab_timeout, $matlab_cmd, $matlab_rt, $unit, $tool ); - if ( system(@args) != 0 ) { - open( my $fh, '<', $MatlabErrorFilename ) - or warn print getTimeStamp("log") - . " - pid $$ >> Cannot open Matlab output error file: ${MatlabErrorFilename}\n"; - { - chomp( @matlabOutputErrorArray = <$fh> ); - } - close($fh); - @matlabOutputErrorArray = grep( /\S/, @matlabOutputErrorArray ); - @errors = grep( /^Error/, @matlabOutputErrorArray ); - @warnings = grep( !/^Error/, @matlabOutputErrorArray ); - $MatlabErrors = join( "
", @errors ); - $MatlabWarnings = join( "
", uniq(@warnings) ); - my $exit_value = $? >> 8; - - if ( $exit_value == 124 ) { - print getTimeStamp("log") - . " - pid $$ >> system @args excessive duration: killed after $matlab_timeout seconds\n"; - $matlab_error = -"Matlab elab excessive duration: killed after $matlab_timeout seconds"; - } - else { - print getTimeStamp("log") - . " - pid $$ >> system @args failed: return code $exit_value - $?\n"; - $matlab_error = "Matlab elab failed: $exit_value - $?"; - } - makeEmailMsg(); - emailSend(); - print getTimeStamp("log") . " - pid $$ >> Execution ended.\n"; - exit(1); - } + . " - pid $$ >> $unit - $tool - Monitoring completed: MatLab calc by-passed.\n"; } else { - $matlab_cmd = 'matlab_' . uc $matlab_cmd . '.cmd'; - my @out_matlab = `ssh1 $matlab_ip 'cmd /c $matlab_cmd ' $tool`; - if ( index( $out_matlab[-1], "Failure" ) != -1 ) { + $matlab_timestamp = getTimeStamp("db_ts"); + print getTimeStamp("log") + . " - pid $$ >> $unit - $tool MatLab calc started...\n"; + if ( $matlab_cmd =~ /_lnx$/ ) { + $matlab_cmd = './run_' . $matlab_cmd . '.sh'; + $MatlabErrorFilename .= "${unit}${tool}_output_error.txt"; + + #print $ENV{"HOME"} . "\n"; + $ENV{"HOME"} = "/" . $ENV{"HOME"}; + chdir($matlab_func_dir) + or die "cannot change: $!\n"; print getTimeStamp("log") - . " - pid $$ >> $unit - $tool MatLab calc failed.\n"; - makeEmailMsg(); - emailSend(); - print getTimeStamp("log") . " - pid $$ >> Execution ended.\n"; - exit(1); + . " - pid $$ >> current dir: $matlab_func_dir\n"; + my @args = ( + 'timeout', $matlab_timeout, $matlab_cmd, $matlab_rt, $unit, + $tool + ); + if ( system(@args) != 0 ) { + open( my $fh, '<', $MatlabErrorFilename ) + or warn print getTimeStamp("log") + . " - pid $$ >> Cannot open Matlab output error file: ${MatlabErrorFilename}\n"; + { + chomp( @matlabOutputErrorArray = <$fh> ); + } + close($fh); + @matlabOutputErrorArray = grep( /\S/, @matlabOutputErrorArray ); + @errors = grep( /^Error/, @matlabOutputErrorArray ); + @warnings = grep( !/^Error/, @matlabOutputErrorArray ); + $MatlabErrors = join( "
", @errors ); + $MatlabWarnings = join( "
", uniq(@warnings) ); + my $exit_value = $? >> 8; + + if ( $exit_value == 124 ) { + print getTimeStamp("log") + . " - pid $$ >> system @args excessive duration: killed after $matlab_timeout seconds\n"; + $matlab_error = +"Matlab elab excessive duration: killed after $matlab_timeout seconds"; + } + else { + print getTimeStamp("log") + . " - pid $$ >> system @args failed: return code $exit_value - $?\n"; + $matlab_error = "Matlab elab failed: $exit_value - $?"; + } + makeEmailMsg(); + emailSend(); + print getTimeStamp("log") . " - pid $$ >> Execution ended.\n"; + exit(1); + } } + else { + $matlab_cmd = 'matlab_' . uc $matlab_cmd . '.cmd'; + my @out_matlab = `ssh1 $matlab_ip 'cmd /c $matlab_cmd ' $tool`; + if ( index( $out_matlab[-1], "Failure" ) != -1 ) { + print getTimeStamp("log") + . " - pid $$ >> $unit - $tool MatLab calc failed.\n"; + makeEmailMsg(); + emailSend(); + print getTimeStamp("log") . " - pid $$ >> Execution ended.\n"; + exit(1); + } + } + print getTimeStamp("log") + . " - pid $$ >> $unit - $tool MatLab calc executed.\n"; } - print getTimeStamp("log") - . " - pid $$ >> $unit - $tool MatLab calc executed.\n"; return; } @@ -296,9 +305,10 @@ sub getMatlabCmd { } else { while ( my $results = $sth->fetchrow_hashref ) { - $matlab_cmd = $results->{'matcall'}; - $ftp_send = $results->{'ftp_send'}; - $unit_id = $results->{'unit_id'}; + $matlab_cmd = $results->{'matcall'}; + $ftp_send = $results->{'ftp_send'}; + $unit_id = $results->{'unit_id'}; + $tool_status = $results->{'statustools'}; } }