]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
test script for s3 tests
authortamil <tamil@tamil-VirtualBox.(none)>
Fri, 2 Nov 2012 18:32:43 +0000 (11:32 -0700)
committerSam Lang <sam.lang@inktank.com>
Sun, 4 Nov 2012 22:59:27 +0000 (16:59 -0600)
Signed-off-by: tamil <tamil.muthamizhan@inktank.com>
qa/qa_scripts/load-bucket-1000-obj.pl [new file with mode: 0755]

diff --git a/qa/qa_scripts/load-bucket-1000-obj.pl b/qa/qa_scripts/load-bucket-1000-obj.pl
new file mode 100755 (executable)
index 0000000..c75094f
--- /dev/null
@@ -0,0 +1,170 @@
+#!/usr/bin/perl
+use Amazon::S3;
+use Data::Dumper;
+use strict;
+use IO::File;
+use Getopt::Long;
+use Digest::MD5;
+use S3Lib qw(get_hostname get_user_info $rgw_user delete_user _write_log_entry _exit_result);
+
+my $exit_status=0;
+my $tc;
+my $mytestfilename;
+my $logmsg;
+my $kruft;
+my $counter;
+my $fillfile;
+my $maxcount=1000;
+my $sec;
+my $min;
+my $hour;
+my $mon;
+my $year;
+my $mday;
+my $wday;
+my $yday;
+my $isdst;
+my $s3;
+my $domain = "front.sepia.ceph.com";
+my $host = get_hostname();
+chomp($host);
+my $hostname = "$host.$domain";
+
+
+sub _exit_result {
+ open (TCOMP, '>>test_completed.txt');
+        close (TCOMP);
+ exit($exit_status);
+}
+
+sub _write_log_entry {
+        open(TC,'>>log.txt');
+        print TC "[Log] $logmsg\n";
+        close(TC);
+}
+
+
+sub get_timestamp {
+   ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
+   if ($mon < 10) { $mon = "0$mon"; }
+   if ($hour < 10) { $hour = "0$hour"; }
+   if ($min < 10) { $min = "0$min"; }
+   if ($sec < 10) { $sec = "0$sec"; }
+   $year=$year+1900;
+
+   return $year . '_' . $mon . '_' . $mday . '__' . $hour . '_' . $min . '_' . $sec
+}
+
+#
+# one time write to log with ceph version
+#
+open (TC,'>>log.txt');
+print TC "[Log] ";
+system ("ceph -v >> log.txt");
+
+#**************************************************************************
+# Modify access keys to suit the target account
+
+my ($access_key, $secret_key) = get_user_info();
+if ( ($access_key) && ($secret_key) ) {
+
+# Make S3 connection
+# modify the host name if this test is run outside of QA.
+
+  $s3 = Amazon::S3->new(
+      {   aws_access_key_id     => $access_key,
+          aws_secret_access_key => $secret_key,
+          host                  => $hostname,
+          secure                => 0,
+          retry                 => 1,
+      }
+  );
+
+}
+#**************************************************************************
+ # List the existing buckets
+  my $response = $s3->buckets;
+  foreach my $bucket ( @{ $response->{buckets} } ) {
+      print "You have a bucket: " . $bucket->bucket . "\n";
+  }
+
+  # create a new bucket (the test bucket)
+    my $bucketname =  'kftestbucket' . get_timestamp();
+  print "Attempting to create bucket = $bucketname\n";
+
+  my $bucket = $s3->add_bucket( { bucket => $bucketname } )
+      or die $s3->err . $s3->errstr;
+  print "Bucket Created: $bucketname\n";
+  $logmsg =  "Bucket Created: $bucketname (add_bucket)";
+  _write_log_entry();
+
+
+  # create files  in the bucket
+
+print "Generating files....\n";
+for($counter = 1; $counter <= $maxcount; $counter++){
+  $fillfile = 'bogus'.$counter;
+  $bucket->add_key( $fillfile, 'this is file #$counter' )
+      or die $s3->err . ": " . $s3->errstr;
+  if ($counter%10 == 0){print "Created $counter files...\n"}
+}
+
+  $logmsg =  "$maxcount files created in bucket $bucketname (add_key)";
+  _write_log_entry();
+
+
+  # list files in the bucket and count them - must be = max count
+  print "Verifying correct number of files created....\n";
+  $counter=0;
+  $response = $bucket->list_all
+      or die $s3->err . ": " . $s3->errstr;
+  foreach my $key ( @{ $response->{keys} } ) {
+      my $key_name = $key->{key};
+      my $key_size = $key->{size};
+#      print "Bucket contains key '$key_name' of size $key_size\n";
+      $counter = $counter + 1;
+  }
+   $logmsg =  "list_all method successful";
+  _write_log_entry();
+  if ($counter==$maxcount) {
+     $logmsg = "File count verified = $maxcount - Pass";
+     _write_log_entry();
+  }
+  else {
+     $logmsg = "[Log] File count fail $counter vs $maxcount";
+     _write_log_entry();
+     $exit_status=3;
+  }
+
+
+  # delete files in the bucket
+  print "Deleting $maxcount files...\n";
+  $response = $bucket->list_all
+      or die $s3->err . ": " . $s3->errstr;
+  foreach my $key ( @{ $response->{keys} } ) {
+
+      my $key_name = $key->{key};
+      $bucket->delete_key($key_name) or die $s3->err . ": " . $s3->errstr;
+  }
+   $logmsg =  "$maxcount files deleted (delete_key)";
+  _write_log_entry();
+
+
+  # and finally delete the bucket
+  $bucket->delete_bucket or die $s3->err . ": " . $s3->errstr;
+   $logmsg =  "Test bucket deleted (delete_bucket)";
+  _write_log_entry();
+
+delete_user();
+
+if ($exit_status == 0){
+        open(TC,'>>log.txt');
+        print TC "[Success]\n";
+        close(TC);
+        _exit_result();
+} else {
+        open(TC,'>>log.txt');
+        print TC "[Failure]\n";
+        close(TC);
+        _exit_result();
+}