Changeset 23536 for branches/neb_distrib_20081210/Nebulous/scripts/ptest.pl
- Timestamp:
- Mar 25, 2009, 3:37:05 PM (17 years ago)
- Location:
- branches/neb_distrib_20081210/Nebulous
- Files:
-
- 2 edited
-
. (modified) (2 props)
-
scripts/ptest.pl (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/neb_distrib_20081210/Nebulous
-
Property svn:ignore
set to
Build
META.yml
Makefile
Makefile.PL
_build
blib
-
Property svn:mergeinfo
set to
/trunk/Nebulous merged eligible
-
Property svn:ignore
set to
-
branches/neb_distrib_20081210/Nebulous/scripts/ptest.pl
r13053 r23536 5 5 6 6 use lib "./lib"; 7 package main; 7 8 8 use Nebulous::Client; 9 #use Nebulous::Client; 10 use IO::Select; 11 use IO::Socket; 12 use POSIX qw(:DEFAULT :sys_wait_h); 13 use Hook::LexWrap; 14 use Sys::Hostname; 9 15 10 my $ neb = Nebulous::Client->new(11 proxy => 'http://localhost:80/nebulous' 12 );16 my $print_stdout = undef; 17 18 $| = 1; 13 19 14 20 my $key = shift || 'foobar'; 15 21 my $kids = shift || 1; 16 22 23 $key = "/tmp/" . $key; 24 25 #my $s = IO::Select->new(); 26 17 27 foreach my $id ( 1..$kids ) { 28 # my ($sock_parent, $sock_child) = IO::Socket->socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC); 29 # $s->add($sock_parent); 30 18 31 my $pid = fork; 19 32 20 33 unless ( $pid ) { 21 my $fname = "${key}_$id"; 22 my $fh = $neb->open_create( $fname ); 23 die "can't create file $fname" unless $fh; 34 # child 35 my $sock_child = \*STDOUT; 36 child($sock_child, $id); 37 shutdown($sock_child, 2); 38 exit 0; 39 } 40 # parent 41 } 24 42 25 print $fh "fooby\n";43 $SIG{CHLD} = \&REAPER; 26 44 45 sub REAPER { 46 while ((my $pid = waitpid(-1,WNOHANG)) > 0) { 47 $kids--; 48 # delete $children{$pid}; 49 } 50 $SIG{CHLD} = \&REAPER; 51 } 52 53 54 while ($kids) { 55 # foreach my $child ($s->can_read(0)) { 56 # my $string = do { local $/; <$child>}; 57 # my @events = split(/\n/, $string) if $string; 58 # print join("\n", @events), "\n" if scalar @events; 59 # } 60 } 61 62 sub child 63 { 64 my ($sock, $id) = @_; 65 66 unless ($print_stdout) { 67 my $filename = hostname() . "." . $$ . ".txt"; 68 open my $fh, ">$filename" or die "can't open $filename: $!"; 69 70 open STDOUT, ">&", $fh or die "can't reopen STDOUT: $!"; 71 autoflush STDOUT 1; 72 } 73 74 # select $sock; 75 # $| = 1; 76 77 # child 78 my $fname = "${key}_$id"; 79 80 my $neb = Nebulous::Client::Bench->new( 81 # proxy => 'http://localhost:80/nebulous' 82 proxy => 'http://alala:80/nebulous', 83 # sock => \*STDOUT, 84 ); 85 86 87 while (1) { 88 # print $sock "$$ : i'm a little tea pot using key: $fname\n"; 89 my $fh = $neb->open_create( $fname ) 90 or child_die($sock, "can't create file $fname"); 27 91 close $fh; 28 92 29 $fh = $neb->open( $fname, 'read' ) or die "can't open file"; 93 $fh = $neb->open( $fname, 'read' ) 94 or child_die("can't open file"); 30 95 close $fh; 31 96 … … 40 105 $neb->delete( $fname . "_move" ); 41 106 42 exit 0;107 # print $sock "$$ : all done!\n"; 43 108 } 109 110 return 1; 44 111 } 45 112 46 while ( $kids ) { 47 wait(); 48 $kids --; 113 sub child_die 114 { 115 my $sock = shift; 116 print $sock @_; 117 shutdown($sock, 2); 118 exit 1; 49 119 } 120 121 package Nebulous::Client::Bench; 122 123 use base qw( Nebulous::Client ); 124 125 #sub new 126 #{ 127 # my $class = shift; 128 # my %p = @_; 129 # 130 # my $sock = delete $p{sock}; 131 # my $self = $class->SUPER::new(%p); 132 # $self->{sock} = $sock; 133 # 134 # return $self; 135 #} 136 137 BEGIN { 138 sub make_wrapper 139 { 140 my $method = shift; 141 142 eval "sub $method {" 143 .' my $self = shift;' 144 .' my $smark = Time::HiRes::time();' 145 .' my $ret = $self->SUPER::' . "$method" .'(@_);' 146 .' my $emark = Time::HiRes::time();' 147 .' printf "%-17s %-17s %s\n", $emark, " ' . "$method" . ' ", ($emark - $smark), "\n";' 148 .' return $ret;' 149 .'}'; 150 151 } 152 153 make_wrapper("create"); 154 make_wrapper("open_create"); 155 make_wrapper("replicate"); 156 make_wrapper("cull"); 157 make_wrapper("lock"); 158 make_wrapper("unlock"); 159 make_wrapper("setxattr"); 160 make_wrapper("getxattr"); 161 make_wrapper("listxattr"); 162 make_wrapper("removexattr"); 163 make_wrapper("find_objects"); 164 make_wrapper("find_instances"); 165 #make_wrapper("find"); 166 #make_wrapper("open"); 167 #make_wrapper("delete"); 168 #make_wrapper("copy"); 169 make_wrapper("move"); 170 make_wrapper("swap"); 171 make_wrapper("delete_instance"); 172 make_wrapper("stat"); 173 make_wrapper("mounts"); 174 175 } 176 177 1;
Note:
See TracChangeset
for help on using the changeset viewer.
