Welcome To Our Shell

Mister Spy & Souheyl Bypass Shell

Current Path : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/DivBasicF/

Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
Upload File :
Current File : /var/www/web-klick.de/dsh/50_dev2017/1300__perllib/DivBasicF/JMeterReport.pm

package DivBasicF::JMeterReport;

use Graphics::GnuplotIF;
use strict;
use Net::SSH;
use Net::SCP;


#
#
#  Installation:
#
#  Gnuplot installieren.
#  ps2pdf  installieren
#
#  Perl-Module installieren:
#
#  cpan -i Graphics::GnuplotIF
#  cpan -i Net::SSH
#  cpan -i Net::SCP
#
#
#
#
#   Anwendung:
#
#   Konstruktor: 
#   Erster Parameter:   Host, auf dem der JMeter-Test ausgefuehrt wird
#   Zweiter Parameter:  Pfad zum Verzeichnis auf dem Host,
#                       auf dem die Testfiles abgelegt werden
#
#
#   run_test:
#
#   Erster Parameter:  jmx-Template
#   Zweiter Parameter: Anzahl der Requests  (Platzhalter im jmx-Template: ---ANZAHL---)
#   Dritter Parameter: Zeitintervall, in dem die Requests gleichmaessig
#                      abgesandt werden   (Platzhalter im jmx-Template: ---RAMPTIME---)
#
#   Es koennen mehrere  run_test- Kommandos hintereinander ausgefuehrt
#   werden, das Gesamtergebnis wird in der Sammel-Datei  gesamt.csv  abgespeichert. 
#
#   Bei neuen Tests muss daher dieses Filöe zunaechst geloescht werden.
#
#
#   mkreport:
#
#   Erster Parameter: Obergrenze fuer gueltige Messwerte. Alle Werte oberhalb
#   werden aus der Messreihe gestrichen (Ausreisser).
#
#   Weitere Parameter: Files, die als Grafik repraesentiert werden sollen.
#   Z.B. das in gesamt.csv liegende File. 
#
#



#******************************************************************

sub new {

   my $class = shift;
   my $self  = {};
   $self->{'HOST'} = shift;
   $self->{'DIR'}  = shift;
#   unlink("gesamt.csv");
   bless($self,$class);
   return($self);

}

#******************************************************************

sub mkreport {

   my $self   = shift;
   my $threshold = shift;  #  Grenze, ab der Messwerete ignoriert werden
   my @files  = @_;        #  threshold = 3000: alle Werte groesser 3000 werden gestrichen 
                           #  threshold = 0: keine Obergrenze 

   my $text; my $ee; my $dd; my $o; my $o1; my $startpoint;
   my $zaehler; my $zeile; my $density; my $werte; my $max;
   my $max1; my $zeit; my $file; my $faktor;

   my $plot = Graphics::GnuplotIF->new();

   my $of = "out.ps";
   if ($files[0] =~ /^(.*)\.(.*)$/) {
      $of = $1 . ".ps";
   }         
   $plot->gnuplot_hardcopy($of,'postscript');
#   $plot->gnuplot_cmd( ' set terminal  postscript','set output " > dd.ps"');


   foreach $file (@files) {
   
      open(FFILE,"<".$file);
      my $text   = join("",<FFILE>);
      close(FFILE);

      $ee      = {};
      $dd      = {};

      $startpoint = 0;
      $zaehler = 0;
   
      foreach $zeile (split(/\n/,$text)) {
         if ($zeile =~ /^(.*?)httpSample( +)t\=\"(\d+)\"(.*?)ts\=\"(\d+)\"/ ) {
            if (!($startpoint)) { $startpoint = $5; } 
            $o  = $5-$startpoint;
            $o1 = $3;
            if ($density < 0) {
               $ee->{$o} = 0;
               $dd->{$o} = 0;
               $density = (-1) * $density;
            } else {
               if ($threshold and $threshold > $o1) {
                  $ee->{$o} = $o1;
                  $dd->{$o} = $density;
               }
            }
print "PREPARATION $zaehler\n";
            $zaehler = $zaehler + 1;
         }
         elsif ($zeile =~ /ANZAHL\: +(\d+) +RAMPTIME\: +(\d+)/) {
            $density = (-1) * $1/$2;
         }
         elsif ($zeile =~ /END/) {
            $density = 0;
            $dd->{$o} = 0;
            $ee->{$o} = 0;
         }
      }
   
   
      $zeit = [ sort {$a <=> $b} keys %$ee ];
      $werte = [];
      $max   = 0;
      $max1  = 0;
      $density = [];
      $zaehler = -1;
      foreach $o (@$zeit) {
         $zaehler = $zaehler + 1;
print "EVALUATION $zaehler\n";
         push(@$werte,$ee->{$o});
         push(@$density,$dd->{$o});
         if ($ee->{$o} > $max)  { $max  = $ee->{$o}; }
         if ($dd->{$o} > $max1) { $max1 = $dd->{$o}; }
      }
   

      $faktor = $max/$max1;
      foreach $o (@$density) {
         $o = $o * $faktor;
      }
   

      $plot->gnuplot_plot_xy($zeit,$werte,$density);
      
   }   
      
#   $plot->gnuplot_restore_terminal();
   system("ps2pdf $of");

  
}

#**********************************************************

sub run_test {

   my $self = shift;
   my $test = shift;
   my $anzahl   = shift;
   my $ramptime = shift;
   
   $test =~ s/---ANZAHL---/$anzahl/;
   $test =~ s/---RAMPTIME---/$ramptime/;

   Net::SSH::ssh($self->{'HOST'},"rm tmp.jmx; rm tmp_results.csv");
   unlink("tmp.jmx");
   unlink("tmp_results.csv");

   open(FFILE,">tmp.jmx");
   print FFILE $test;
   close(FFILE);


   Net::SCP::scp("tmp.jmx",$self->{'HOST'} . ":" . $self->{'DIR'});
   Net::SSH::ssh($self->{'HOST'},"jmeter/bin/jmeter -t tmp.jmx -n");
   Net::SCP::scp($self->{'HOST'} . ":" . $self->{'DIR'} . "tmp_results.csv",".");

   open(FFILE,"<tmp_results.csv");   
   my $erg = join("",<FFILE>);
   close(FFILE);
   
   open(FFILE,">>gesamt.csv");
   print FFILE "---------------------------------------------------\n";
   print FFILE "ANZAHL:   $anzahl    RAMPTIME: $ramptime\n";
   print FFILE "---------------------------------------------------\n";
   print FFILE $erg;
   print FFILE "---------------------------------------------------\n";
   print FFILE "END\n";
   print FFILE "---------------------------------------------------\n\n\n";
   close(FFILE);

   return($erg);   

}


1;


bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped)
Email: contact@elmoujehidin.net bypass 1.0, Devloped By El Moujahidin (the source has been moved and devloped) Email: contact@elmoujehidin.net