Moved these tests into the right context (node --> slice)
Sapan Bhatia [Fri, 23 Jan 2009 15:46:35 +0000 (15:46 +0000)]
qaapi/qa/tests/slice/ping.pl [new file with mode: 0755]
qaapi/qa/tests/slice/synacks.pl [new file with mode: 0755]

diff --git a/qaapi/qa/tests/slice/ping.pl b/qaapi/qa/tests/slice/ping.pl
new file mode 100755 (executable)
index 0000000..bbc4b58
--- /dev/null
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+
+# Module: VNET+
+# Description: Generate ping packets and count the responses
+# Author: sapanb@cs.princeton.edu
+
+use strict;
+use threads;
+
+#please change to something local
+my $guineapig='planetlab-1.cs.princeton.edu';
+my $numiter=1000;
+
+sub run {
+       system("ping -c $numiter -i 0.1 $guineapig");
+       }
+
+
+sub open_tcpdump {
+       my $filter="icmp and src $guineapig";
+       my $cmdline="/usr/sbin/tcpdump -c $numiter $filter";
+       
+       system($cmdline);
+}
+
+sub alhandler {
+       print "[FAILED] tcpdump apparently did not intercept all SYN/ACK packets\n";
+       exit(-1);
+}
+
+print "Starting tcpdump...\n";
+my $tcpdthr=threads->create(\&open_tcpdump);
+sleep 10;
+print "Generating connections...\n";
+run;
+$SIG{ALRM}=\&alhandler;
+alarm(60);
+
+$tcpdthr->join;
+print "[SUCCESS] Test completed OK.\n";
diff --git a/qaapi/qa/tests/slice/synacks.pl b/qaapi/qa/tests/slice/synacks.pl
new file mode 100755 (executable)
index 0000000..6f7ef6a
--- /dev/null
@@ -0,0 +1,86 @@
+#!/usr/bin/perl
+
+# Module: VNET+
+# Description:         
+# Generate a ton of connections and check if we can see syn/ack packets via tcpdump.
+# Author: sapanb@cs.princeton.edu
+
+use strict;
+use IO::Socket;
+use threads;
+use threads::shared;
+
+my $guineapig='www.cs.princeton.edu';
+my $targetfile='/~sapanb/small';
+my $magic='3j4kl;1234kj341234jl1k234ljk123h4';
+my $numiter=1000;
+my $numsynacks:shared=0;
+my $numthreads=4;
+my $numpackets=$numthreads*$numiter;
+
+sub fetch {
+       my $sock = new IO::Socket::INET (
+               PeerAddr => $guineapig,
+               PeerPort => 80,
+               Proto => 'tcp'
+       );
+       return 0 unless $sock;
+       print $sock "GET $targetfile HTTP/1.0\r\n";
+       print $sock "Host: www.cs.princeton.edu\r\n";
+       print $sock "\r\n";
+
+       my $success=0;
+       while (<$sock>) {
+               if (/$magic/g) {
+                       $success=1;
+                       last;
+               }
+       }
+       close ($sock);
+       if ($success==1) {
+               $numsynacks=$numsynacks+1;
+       }
+       return $success;
+}
+
+sub mfetch {
+       foreach (1..$numiter) {
+               fetch;
+       }
+}
+
+sub launch {
+       my @tarray;
+       foreach (1..$numthreads) {
+               my $thr = threads->create(\&mfetch);
+               push @tarray,$thr;
+       }
+
+       for (@tarray) {
+               $_->join;
+       }
+}
+
+sub open_tcpdump {
+       my $filter="'tcp[tcpflags]&tcp-syn !=0 and tcp[tcpflags]&tcp-ack !=0 and src $guineapig'";
+       my $cmdline="/usr/sbin/tcpdump -c $numpackets $filter";
+       my $p;
+       
+       system($cmdline);
+}
+
+sub alhandler {
+       print "[FAILED] tcpdump apparently did not intercept all SYN/ACK packets\n";
+       exit(-1);
+}
+
+print "Starting tcpdump...\n";
+my $tcpdthr=threads->create(\&open_tcpdump);
+sleep 10;
+print "Generating connections...\n";
+launch;
+$SIG{ALRM}=\&alhandler;
+alarm(60);
+$tcpdthr->join;
+$numsynacks++;
+print "[SUCCESS] Test completed OK. $numsynacks SYN/ACK packets intercepted.\n";