ASNMTAP

 view release on metacpan or  search on metacpan

plugins/jUnit/check_jUnit.pl  view on Meta::CPAN

my $jUnitUsername       = 'junitmanager';
my $jUnitPassword       = 'tdvmim';
my $jUnitRequest        = 'junitserver signal SENT_OK';
my $jUnitUkey           = $uniqueKey;
my $jUnitType           = ($onDemand) ? '0' : '1';
my $jUnitSvparam        = (defined $svParam) ? $svParam : '';
my $jUnitMaxtime        = (defined $maxtime) ? $maxtime : 30;

my ($testcaseTimewait, $testcaseServer, $testcaseWlsusername, $testcaseWlspassword, $testcaseAppname, $testcaseEejbname, $testcaseVersion, $testcaseParameters, $testcaseTestclass);

my $resultOutOfDate     = $interval;

my $xmlCleanUpSpaces    = 1;
my $xmlCleanUpLineFeeds = 1;

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# $testcaseServer     : <protocol>://<servername>:<port number>
# $testcaseServer     : - missing protocol  => <error message="javax.naming.ConfigurationException [Root exception is java.net.MalformedURLException: no protocol
# $testcaseServer     : - wrong protocol    => <error message="javax.naming.CommunicationException [Root exception is java.net.UnknownHostException: Unknown protocol: '<protocol>']
# $testcaseServer     : - wrong servername  => <error message="javax.naming.CommunicationException [Root exception is java.net.ConnectException: <protocol>://<servername>:<port number>: Destination unreachable; nested exception is:
# $testcaseServer     : - wrong port number => <error message="javax.naming.CommunicationException [Root exception is java.net.ConnectException: <protocol>://<servername>:<port number>: Destination unreachable; nested exception is:

# $testcaseWlsusername: - wrong username => <error message="javax.naming.AuthenticationException [Root exception is java.lang.SecurityException: User: username00, failed to be authenticated.]" type="java.util.MissingResourceException">
# $testcaseWlspassword: - wrong password => <error message="javax.naming.AuthenticationException [Root exception is java.lang.SecurityException: User: username00, failed to be authenticated.]" type="java.util.MissingResourceException">

# $testcaseAppname    : - don't exist => be.citap.common.systemservices.junitserver.core.exception.TestCaseFinderException: no file found in application directory
# $testcaseAppname    : - wrong name  => be.citap.common.systemservices.junitserver.core.exception.TestCaseFinderException: no file found in application directory

# $testcaseEejbname   : - don't exist => <error message="javax.naming.CommunicationException [Root exception is java.net.ConnectException: <protocol>://<servername>:<port number>: Destination unreachable; nested exception is:
# $testcaseEejbname   : - wrong name  => <error message="javax.naming.CommunicationException [Root exception is java.net.ConnectException: <protocol>://<servername>:<port number>: Destination unreachable; nested exception is:

# $testcaseVersion    : = '';

# $testcaseParameters : - 'null'          => <error message="javax.naming.CommunicationException [Root exception is java.net.ConnectException: <protocol>://<servername>:<port number>: Destination unreachable; nested exception is:
# $testcaseParameters : - don(t exist     => <error message="javax.naming.CommunicationException [Root exception is java.net.ConnectException: <protocol>://<servername>:<port number>: Destination unreachable; nested exception is:
# $testcaseParameters : - wrong parameter => <error message="javax.naming.CommunicationException [Root exception is java.net.ConnectException: <protocol>://<servername>:<port number>: Destination unreachable; nested exception is:
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

my ($rv, $dbh, $sth, $sql, $xml, $stateXML, $numberRecordsSameUkey, $returnCode);

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Evaluate previous test

$rv  = 1;
$dbh = DBI->connect("DBI:mysql:$jUnitServerDbC:$jUnitServerName:$jUnitServerPort", "$jUnitServerUser", "$jUnitServerPass") or $rv = errorTrapDBI (\$objectPlugins, "Sorry, cannot connect to the database: $jUnitServerDbC:$jUnitServerName:$jUnitServerPo...

if ($dbh and $rv) {
  $sql = "select count(UKEY) from $jUnitServerTablBS, $jUnitServerTablS where UKEY = '$jUnitUkey' and $jUnitServerTablBS.SERV_ID = $jUnitServerTablS.SERV_ID and ACTIVATED = '1' and STATUS = 'ASNMTAP'";
  $sth = $dbh->prepare($sql) or $rv = errorTrapDBI (\$objectPlugins, "dbh->prepare: $sql");
  $rv  = $sth->execute() or $rv = errorTrapDBI (\$objectPlugins, "sth->execute: $sql") if $rv;
  $numberRecordsSameUkey = ($rv) ? $sth->fetchrow_array() : 0;
  $sth->finish() or $rv = errorTrapDBI (\$objectPlugins, "sth->finish");
  print "$sql < $numberRecordsSameUkey >\n" if ( $debug );
  $dbh->disconnect() or $rv = errorTrapDBI (\$objectPlugins, "Sorry, $jUnitServerDbC:$jUnitServerName:$jUnitServerPort was unable to disconnect."); 
}

$dbh = DBI->connect("DBI:mysql:$jUnitServerDbDR:$jUnitServerName:$jUnitServerPort", "$jUnitServerUser", "$jUnitServerPass") or $rv = errorTrapDBI (\$objectPlugins, "Sorry, cannot connect to the database: $jUnitServerDbDR:$jUnitServerName:$jUnitServer...

if ($dbh and $rv) {
  my $jUnitSvparamSql = ($jUnitSvparam eq '') ? '' : " and SVPARAM = '$jUnitSvparam'";
  $sql = "select RESULT_ID, SERV_ID, UKEY, TESTTYPE, SVPARAM, STATUS, ERROR_CODE, EXCEPTION, INPUT_XML, OUTPUT_XML, STARTED_DT, ENDED_DT, REQUESTED_DT, FINISHED_DT, TIMESLOT from $jUnitServerTablDR where UKEY = '$jUnitUkey'". $jUnitSvparamSql ." orde...
  print "$sql\n" if ( $debug );
  $sth = $dbh->prepare($sql) or $rv = errorTrapDBI (\$objectPlugins, "dbh->prepare: $sql");
  $rv  = $sth->execute() or $rv = errorTrapDBI (\$objectPlugins, "sth->execute: $sql") if $rv;

  if ( $rv ) {
    my $currentTimeslot = timelocal (0, (localtime)[1,2,3,4,5]);

    my $httpdumpMessage;
    my ($RESULT_ID, $SERV_ID, $UKEY, $TESTTYPE, $SVPARAM, $STATUS, $ERROR_CODE, $EXCEPTION, $INPUT_XML, $OUTPUT_XML, $STARTED_DT, $ENDED_DT, $REQUESTED_DT, $FINISHED_DT, $TIMESLOT);
    my ($recordCount, $performanceDataTests, $performanceDataFailures, $performanceDataErrors, $performanceDataTime);
    $recordCount = $performanceDataTests = $performanceDataFailures = $performanceDataErrors = $performanceDataTime = 0;
    my $alertError = '+';

    while ( my $ref = $sth->fetchrow_hashref() ) {
      $recordCount++;
      $RESULT_ID    = (defined $ref->{RESULT_ID})    ? $ref->{RESULT_ID}    : '';
      $SERV_ID      = (defined $ref->{SERV_ID})      ? $ref->{SERV_ID}      : '';
      $UKEY         = (defined $ref->{UKEY})         ? $ref->{UKEY}         : '';
      $TESTTYPE     = (defined $ref->{TESTTYPE})     ? $ref->{TESTTYPE}     : '';
      $SVPARAM      = (defined $ref->{SVPARAM})      ? $ref->{SVPARAM}      : '';
      $STATUS       = (defined $ref->{STATUS})       ? $ref->{STATUS}       : '';
      $ERROR_CODE   = (defined $ref->{ERROR_CODE})   ? $ref->{ERROR_CODE}   : '';
      $EXCEPTION    = (defined $ref->{EXCEPTION})    ? $ref->{EXCEPTION}    : '';
      $INPUT_XML    = (defined $ref->{INPUT_XML})    ? $ref->{INPUT_XML}    : '';
      $OUTPUT_XML   = (defined $ref->{OUTPUT_XML})   ? $ref->{OUTPUT_XML}   : '';
      $STARTED_DT   = (defined $ref->{STARTED_DT})   ? $ref->{STARTED_DT}   : '';
      $ENDED_DT     = (defined $ref->{ENDED_DT})     ? $ref->{ENDED_DT}     : '';
      $REQUESTED_DT = (defined $ref->{REQUESTED_DT}) ? $ref->{REQUESTED_DT} : '';
      $FINISHED_DT  = (defined $ref->{FINISHED_DT})  ? $ref->{FINISHED_DT}  : '';
      $TIMESLOT     = (defined $ref->{TIMESLOT})     ? $ref->{TIMESLOT}     : '';
      print "$RESULT_ID\n$SERV_ID\n$UKEY\n$TESTTYPE\n$SVPARAM\n$STATUS\n$ERROR_CODE\n$EXCEPTION\n$INPUT_XML\n$OUTPUT_XML\n$STARTED_DT\n$ENDED_DT\n$REQUESTED_DT\n$FINISHED_DT\n$TIMESLOT\n" if ( $debug );
      print "$STATUS\n$ERROR_CODE\n" if ($debug == 2);

      if ( $currentTimeslot - $TIMESLOT > $resultOutOfDate ) {
        my $alert = "Result into database is out of date";
        $alert = "Run ondemand test again PLEASE, $alert" if ( $SVPARAM =~ /ONDEMAND/ );
        $objectPlugins->pluginValues ( { stateValue => $ERRORS{WARNING}, alert => $alert }, $TYPE{APPEND} );
      } elsif ($STATUS eq 'OK') {
        ($returnCode, $xml) = extract_XML ( asnmtapInherited => \$objectPlugins, resultXML => $OUTPUT_XML, headerXML => HEADER, footerXML => FOOTER, validateDTD => 0 );

        unless ($returnCode) {
          my (undef, $testresultSuffix) = split ( /\@/, $xml->{name} );
          my $testresultName = (defined $testresultSuffix) ? '_' .$testresultSuffix : '';

          if ( $debug ) {
            print "xml->{version}<->\n",      $xml->{version},      "\n";
            print "xml->{name}<->\n",         $xml->{name},         "\n";
            print "xml->{server}<->\n",       $xml->{server},       "\n";
            print "xml->{Test_success}<->\n", $xml->{Test_success}, "\n";

            if ( defined $xml->{testClass}->{name} ) {
              print "xml->{testClass}->{name}<->\n",     $xml->{testClass}->{name},     "\n";
              print "xml->{testClass}->{package}<->\n",  $xml->{testClass}->{package},  "\n";
              print "xml->{testClass}->{tests}<->\n",    $xml->{testClass}->{tests},    "\n";
              print "xml->{testClass}->{failures}<->\n", $xml->{testClass}->{failures}, "\n";
              print "xml->{testClass}->{errors}<->\n",   $xml->{testClass}->{errors},   "\n";
              print "xml->{testClass}->{time}<->\n",     $xml->{testClass}->{time},     "\n";

              if (defined $xml->{testClass}->{testcase}->{name}) {
                print "xml->{testClass}->{testcase}->{name}<->\n", $xml->{testClass}->{testcase}->{name}, "\n";
                print "xml->{testClass}->{testcase}->{time}<->\n", $xml->{testClass}->{testcase}->{time}, "\n";
              } else {
                foreach my $testcase_name (keys %{$xml->{testClass}->{testcase}}) {
                  print "xml->{testClass}->{testcase}->{$testcase_name}->{time}<->\n", $xml->{testClass}->{testcase}->{$testcase_name}->{time}, "\n";
                }
              }
            }
          }
		  
          if ( defined $xml->{Test_success} and $xml->{Test_success} =~ /^True$/i ) {
            if ( defined $xml->{testClass}->{name} ) {
              $performanceDataTests    += $xml->{testClass}->{tests};
              $performanceDataFailures += $xml->{testClass}->{failures};
              $performanceDataErrors   += $xml->{testClass}->{errors};
              $performanceDataTime     += $xml->{testClass}->{time};

              if (defined $xml->{testClass}->{testcase}->{name}) {
                $objectPlugins->appendPerformanceData ( "'" .$xml->{testClass}->{testcase}->{name}.$testresultName. "'=". $xml->{testClass}->{testcase}->{time} .'s;;;;' );
              } else {
                foreach my $testcase_name (keys %{$xml->{testClass}->{testcase}}) {
                  print "xml->{testClass}->{testcase}->{$testcase_name}->{time}<->\n", $xml->{testClass}->{testcase}->{$testcase_name}->{time}, "\n" if ($debug == 2);
                  $objectPlugins->appendPerformanceData ( "'".$testcase_name.$testresultName."'=". $xml->{testClass}->{testcase}->{$testcase_name}->{time} .'s;;;;' );
                }
              }
            }
          } else {
            $objectPlugins->pluginValue ( stateValue => $ERRORS{UNKNOWN} );
          }
        }
      } elsif ($STATUS =~ /(NOTOK|TIMEOUT)/) {
        if ($EXCEPTION eq '') {
          print "EXCEPTION ...\n" if ( $debug );
        } elsif ( $EXCEPTION =~ m/^$XMLHEADER/i ) {
          ($returnCode, $xml) = extract_XML ( asnmtapInherited => \$objectPlugins, resultXML => $EXCEPTION, headerXML => HEADER, footerXML => FOOTER, validateDTD => 0 );

          unless ($returnCode) {
            my (undef, $testresultSuffix) = split ( /\@/, $xml->{name} );
            my $testresultName = (defined $testresultSuffix) ? '_' .$testresultSuffix : '';

plugins/jUnit/check_jUnit.pl  view on Meta::CPAN

              if (defined $xml->{testClass}->{testcase}->{name}) {
                my ($status, $type, $message, $content);

                if (defined $xml->{testClass}->{testcase}->{error}) {
                  $status  = 'ERROR';
                  $type    = $xml->{testClass}->{testcase}->{error}->{type};
                  $message = $xml->{testClass}->{testcase}->{error}->{message};
                  $content = $xml->{testClass}->{testcase}->{error}->{content};
                } elsif (defined $xml->{testClass}->{testcase}->{failure}) {
                  $status  = 'FAILURE';
                  $type    = $xml->{testClass}->{testcase}->{failure}->{type};
                  $message = $xml->{testClass}->{testcase}->{failure}->{message};
                } else {
                  $status  = 'OK';
                  $type    = $message = '';
                }

                $httpdumpMessage .= "<TR style=\"background:#eeeee0; font: normal 68% bold verdana,arial,helvetica; color:red;\"><TD>$xml->{testClass}->{testcase}->{name}</TD><TD>$status</TD><TD>$type</TD><TD>$xml->{testClass}->{testcase}->{time}</TD...

                if ($status ne 'OK') {
                  $httpdumpMessage .= "<TR style=\"background:#eeeee0; font: normal 68% bold verdana,arial,helvetica; color:red;\"><TD></TD><TD colspan=\"3\"><PRE>$message</PRE></TD></TR>\n";
                  $httpdumpMessage .= "<TR style=\"background:#eeeee0; font: normal 68% bold verdana,arial,helvetica; color:red;\"><TD></TD><TD colspan=\"3\"><PRE>$content</PRE></TD></TR>\n" if (defined $content);
                }
              } else {
                foreach my $testcase_name (keys %{$xml->{testClass}->{testcase}}) {
                  my ($status, $type, $message, $content);

                  if (defined $xml->{testClass}->{testcase}->{$testcase_name}->{error}) {
                    $status  = 'ERROR';
                    $type    = $xml->{testClass}->{testcase}->{$testcase_name}->{error}->{type};
                    $message = $xml->{testClass}->{testcase}->{$testcase_name}->{error}->{message};
                    $content = $xml->{testClass}->{testcase}->{$testcase_name}->{error}->{content};
                  } elsif (defined $xml->{testClass}->{testcase}->{$testcase_name}->{failure}) {
                    $status  = 'FAILURE';
                    $type    = $xml->{testClass}->{testcase}->{$testcase_name}->{failure}->{type};
                    $message = $xml->{testClass}->{testcase}->{$testcase_name}->{failure}->{message};
                  } else {
                    $status  = 'OK';
                    $type    = $message = '';
                  }

                  $httpdumpMessage .= "<TR style=\"background:#eeeee0; font: normal 68% bold verdana,arial,helvetica; color:red;\"><TD>$testcase_name</TD><TD>$status</TD><TD>$type</TD><TD>$xml->{testClass}->{testcase}->{$testcase_name}->{time}</TD></...

                  if ($status ne 'OK') {
                    $httpdumpMessage .= "<TR style=\"background:#eeeee0; font: normal 68% bold verdana,arial,helvetica; color:red;\"><TD></TD><TD colspan=\"3\"><PRE>$message</PRE></TD></TR>\n";
                    $httpdumpMessage .= "<TR style=\"background:#eeeee0; font: normal 68% bold verdana,arial,helvetica; color:red;\"><TD></TD><TD colspan=\"3\"><PRE>$content</PRE></TD></TR>\n" if (defined $content);
                  }
                }
              }

              $httpdumpMessage .= "</TABLE>\n";
            }

            $alertError .= (defined $testresultSuffix) ? $testresultSuffix : $xml->{name};
            $alertError .= '+';
          }
        } else {
          print "$EXCEPTION\n" if ($debug == 2);
        }

        print "$INPUT_XML\n" if ($debug == 2);
      } elsif ($STATUS eq 'LAUNCH_FAILED') {
        $objectPlugins->pluginValues ( { stateValue => $ERRORS{CRITICAL}, alert => $EXCEPTION }, $TYPE{APPEND} );
      } elsif ($STATUS eq 'XML_WRONG_FORMAT') {
        $objectPlugins->pluginValues ( { stateValue => $ERRORS{CRITICAL}, alert => 'Under construction: '. $STATUS }, $TYPE{APPEND} );
      } else {
        $objectPlugins->pluginValues ( { stateValue => $ERRORS{CRITICAL}, alert => "Undefined error: '$STATUS'" }, $TYPE{APPEND} );
      }

      my $sqlMOVE = 'REPLACE INTO `' .$jUnitServerTablDRA. '` SELECT * FROM `' .$jUnitServerTablDR. '` WHERE RESULT_ID = "' .$RESULT_ID. '"';
      $dbh->do( $sqlMOVE ) or $rv = errorTrapDBI (\$objectPlugins, "Cannot dbh->do: $sqlMOVE");

      if ( $rv ) {
        $sqlMOVE = 'DELETE FROM `' .$jUnitServerTablDR. '` WHERE RESULT_ID = "' .$RESULT_ID. '"';
        $dbh->do( $sqlMOVE ) or $rv = errorTrapDBI (\$objectPlugins, "Cannot dbh->do: $sqlMOVE");
      }
    }

    $httpdumpMessage .= "</BODY>\n</HTML>" if (defined $httpdumpMessage);

    $objectPlugins->appendPerformanceData ( 'tests='. $performanceDataTests .';;;;' );
    $objectPlugins->appendPerformanceData ( 'failures='. $performanceDataFailures .';1;;0;'. $performanceDataTests );
    $objectPlugins->appendPerformanceData ( 'errors='. $performanceDataErrors .';;1;0;'. $performanceDataTests );
    $objectPlugins->appendPerformanceData ( 'time='. $performanceDataTime .'s;;;;' );

    if ( $recordCount ) {
      if ( $numberRecordsSameUkey != $recordCount ) {
        $objectPlugins->pluginValues ( { stateValue => $ERRORS{CRITICAL}, alert => "Only $recordCount from the wanted $numberRecordsSameUkey results into the table $jUnitServerTablDR from database $jUnitServerDbDR" }, $TYPE{APPEND} );
      }

      if ($alertError eq '+') {
        $objectPlugins->pluginValues ( { alert => 'All test succeed' }, $TYPE{APPEND} );
      } else {
        $objectPlugins->pluginValues ( { alert => $alertError }, $TYPE{APPEND} );
      }

      if (defined $httpdumpMessage) {
        print "$httpdumpMessage\n" if ($debug == 4);
        $objectPlugins->write_debugfile ( \$httpdumpMessage, 0 );
      }
    } else {
      $objectPlugins->pluginValues ( { stateValue => $ERRORS{UNKNOWN}, alert => "No results into the table $jUnitServerTablDR from database $jUnitServerDbDR" }, $TYPE{APPEND} );
    }

    $sth->finish() or $rv = errorTrapDBI (\$objectPlugins, "sth->finish: $sql");
  }

  $dbh->disconnect() or $rv = errorTrapDBI (\$objectPlugins, "Sorry, $jUnitServerDbDR:$jUnitServerName:$jUnitServerPort was unable to disconnect."); 
}

# Launch new test - - - - - - - - - - - - - - - - - - - - - - - - - - - -
my ($_ACTIVATED, $_STATUS);

$rv  = 1;
$dbh = DBI->connect("DBI:mysql:$jUnitServerDbC:$jUnitServerName:$jUnitServerPort", "$jUnitServerUser", "$jUnitServerPass") or $rv = errorTrapDBI (\$objectPlugins, "Sorry, cannot connect to the database: $jUnitServerDbC:$jUnitServerName:$jUnitServerPo...

if ($dbh and $rv) {
  $sql = "select ACTIVATED, STATUS, NAME, WLSUSERNAME, WLSPASSWORD, APPNAME, EJBNAME, VERSION, PARAMETERS, TESTCLASS, TIMEWAIT, MAXTIME from $jUnitServerTablBS, $jUnitServerTablS where UKEY = '$jUnitUkey' and $jUnitServerTablBS.SERV_ID = $jUnitServer...
  print "$sql\n" if ( $debug );

  $sth = $dbh->prepare($sql) or $rv = errorTrapDBI (\$objectPlugins, "dbh->prepare: $sql");



( run in 1.097 second using v1.01-cache-2.11-cpan-39bf76dae61 )