|   | 1 |  | 
          
          
            |   | 2 | == Perl Script to Dump Database == | 
          
          
            |   | 3 |  | 
          
          
            |   | 4 | Here we provide a script to dump desirable information from the database. | 
          
          
            |   | 5 |  | 
          
          
            |   | 6 | The script did: | 
          
          
            |   | 7 |  * dump the sender-side table and receiver-side table from one or more OML database | 
          
          
            |   | 8 |  * count how many records are in each table | 
          
          
            |   | 9 |  * put those number pairs in a file | 
          
          
            |   | 10 |  | 
          
          
            |   | 11 | The comparison of those two numbers could give an indication of the packet loss of OTG/OTR application | 
          
          
            |   | 12 |  | 
          
          
            |   | 13 | The program take database names as input arguments and save the result in "tempres" file  | 
          
          
            |   | 14 |  | 
          
          
            |   | 15 | {{{ | 
          
          
            |   | 16 |  | 
          
          
            |   | 17 | #!/usr/bin/perl | 
          
          
            |   | 18 |  | 
          
          
            |   | 19 | # this script read one or more databases and extract how many packets are sent and received respectively. | 
          
          
            |   | 20 | # | 
          
          
            |   | 21 |  | 
          
          
            |   | 22 | use Mysql; | 
          
          
            |   | 23 |  | 
          
          
            |   | 24 | $hostname = 'idb1.orbit-lab.org'; | 
          
          
            |   | 25 | $user     = 'orbit'; | 
          
          
            |   | 26 | $database = 'none'; | 
          
          
            |   | 27 | $password = 'orbit'; | 
          
          
            |   | 28 | $resultfile ='tempres'; | 
          
          
            |   | 29 |  | 
          
          
            |   | 30 |  | 
          
          
            |   | 31 | $table1 = "temp/tx_table"; | 
          
          
            |   | 32 | $table2 = "temp/rx_table"; | 
          
          
            |   | 33 |  | 
          
          
            |   | 34 | $driver   = 'mysql'; | 
          
          
            |   | 35 |  | 
          
          
            |   | 36 | my $noiselevel = 18; | 
          
          
            |   | 37 | my $now = localtime time; | 
          
          
            |   | 38 | open(res, ">>$resultfile") | 
          
          
            |   | 39 |                 || die "Can't open result file: $!\n"; | 
          
          
            |   | 40 | print res "$now test with noise level set in $noiselevel dbm \n"; | 
          
          
            |   | 41 | close res; | 
          
          
            |   | 42 |  | 
          
          
            |   | 43 | foreach(@ARGV) | 
          
          
            |   | 44 | { | 
          
          
            |   | 45 |    dumpDB($_,$table1,$table2); | 
          
          
            |   | 46 |    system("awk 'BEGIN {cnt=0} {cnt =cnt+1} END {printf(\"%d \", cnt) >> \"$resultfile\" }' $table2"); | 
          
          
            |   | 47 |    system("awk 'BEGIN {cnt=0} {cnt =cnt+1} END {printf(\"%d \\n\", cnt) >> \"$resultfile\" }' $table1"); | 
          
          
            |   | 48 | } | 
          
          
            |   | 49 |  | 
          
          
            |   | 50 | print "Done. check tempres file! \n"; | 
          
          
            |   | 51 |  | 
          
          
            |   | 52 | #we need a subfunction to read 1 database 2 table and dump to two files | 
          
          
            |   | 53 | sub dumpDB | 
          
          
            |   | 54 | { | 
          
          
            |   | 55 |   my ($dbname,$f1, $f2) = @_; | 
          
          
            |   | 56 |   open (OUTFILE1, "> $f1"); | 
          
          
            |   | 57 |   open (OUTFILE2, "> $f2"); | 
          
          
            |   | 58 |  my $dbh = Mysql->connect($hostname, $dbname, $user, $password); | 
          
          
            |   | 59 |  my $sql_query1="SELECT sequence_no, pkt_seqno, pkt_size_sample_sum, tx_timestamp from sender_otg_senderport"; | 
          
          
            |   | 60 |  my $sql_query2="SELECT sequence_no, pkt_seqno, rcvd_pkt_size_sample_sum, xmitrate, rx_timestamp from receiver_otr_receiverport"; | 
          
          
            |   | 61 |   my $sth1 = $dbh->query($sql_query1); | 
          
          
            |   | 62 |   while(my @record1 = $sth1->FetchRow) { | 
          
          
            |   | 63 |       print OUTFILE1 "@record1 \n"; | 
          
          
            |   | 64 |   } | 
          
          
            |   | 65 |  | 
          
          
            |   | 66 |   my $sth2 = $dbh->query($sql_query2); | 
          
          
            |   | 67 |   while(my @record2 = $sth2->FetchRow) { | 
          
          
            |   | 68 |     print OUTFILE2 "@record2 \n"; | 
          
          
            |   | 69 |    } | 
          
          
            |   | 70 |   close OUTFILE1; | 
          
          
            |   | 71 |   close OUTFILE2; | 
          
          
            |   | 72 | } | 
          
          
            |   | 73 |                                      | 
          
          
            |   | 74 |  | 
          
          
            |   | 75 |  | 
          
          
            |   | 76 |  | 
          
          
            |   | 77 | }}} |