IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 23146


Ignore:
Timestamp:
Mar 3, 2009, 4:03:31 PM (17 years ago)
Author:
jhoblitt
Message:

fwv

Location:
trunk/Nebulous/scripts
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Nebulous/scripts/ptest.pl

    r21545 r23146  
    55
    66use lib "./lib";
     7package main;
    78
    8 use Nebulous::Client;
     9#use Nebulous::Client;
    910use IO::Select;
    1011use IO::Socket;
     12use POSIX qw(:DEFAULT :sys_wait_h);
     13use Hook::LexWrap;
     14use Sys::Hostname;
    1115
    12 my $neb = Nebulous::Client->new(
    13 #    proxy   => 'http://localhost:80/nebulous'
    14     proxy   => 'http://alala:80/nebulous'
    15 );
     16my $print_stdout = undef;
     17
     18$| = 1;
    1619
    1720my $key = shift || 'foobar';
    1821my $kids = shift || 1;
    1922
    20 my $s = IO::Select->new();
     23$key = "/tmp/" . $key;
     24
     25#my $s = IO::Select->new();
    2126
    2227foreach my $id ( 1..$kids ) {
    23     my ($sock_parent, $sock_child) = IO::Socket->socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC);
    24     $s->add($sock_parent);
     28#    my ($sock_parent, $sock_child) = IO::Socket->socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC);
     29#    $s->add($sock_parent);
    2530
    2631    my $pid = fork;
    2732
    2833    unless ( $pid )  {
     34        # child
     35        my $sock_child = \*STDOUT;
    2936        child($sock_child, $id);
     37        shutdown($sock_child, 2);
    3038        exit 0;
    3139    }
     
    3341}
    3442
    35 while ($kids) {
    36     foreach my $child ($s->can_read(1)) {
    37         my $string = <$child>;
    38         my @events = split(/\n/, $string) if $string;
    39         print join("\n", @events), "\n" if scalar @events;
     43$SIG{CHLD} = \&REAPER;
     44
     45sub REAPER {
     46    while ((my $pid = waitpid(-1,WNOHANG)) > 0) {
     47        $kids--;
     48#        delete $children{$pid};
    4049    }
     50    $SIG{CHLD} = \&REAPER;
    4151}
    4252
    43 #while ( $kids ) {
    44 #    wait();
    45 #    $kids --;
    46 #}
    4753
    48 our $my_sock;
     54while ($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}
    4961
    5062sub child
    5163{
    52     my ($sock_child, $id) = @_;
     64    my ($sock, $id) = @_;
    5365
    54     $my_sock = $sock_child;
     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;
    5576
    5677    # child
    5778    my $fname = "${key}_$id";
    58     print $sock_child "$$ : i'm a little tea pot using key: $fname\n";
    59     my $fh = $neb->open_create( $fname );
    60     child_die("can't create file $fname") unless $fh;
    6179
    62     print $fh "fooby\n";
     80    my $neb = Nebulous::Client::Bench->new(
     81#    proxy   => 'http://localhost:80/nebulous'
     82        proxy   => 'http://alala:80/nebulous',
     83#        sock    => \*STDOUT,
     84    );
    6385
    64     close $fh;
    6586
    66     $fh = $neb->open( $fname, 'read' ) or child_die("can't open file");
    67     close $fh;
     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");
     91        close $fh;
    6892
    69     $neb->lock( $fname, 'read' );
    70     $neb->unlock( $fname, 'read' );
    71     $neb->replicate( $fname );
    72     $neb->cull( $fname );
     93        $fh = $neb->open( $fname, 'read' )
     94            or child_die("can't open file");
     95        close $fh;
    7396
    74     print $sock_child "$$ : half way\n";
     97        $neb->lock( $fname, 'read' );
     98        $neb->unlock( $fname, 'read' );
     99        $neb->replicate( $fname );
     100        $neb->cull( $fname );
     101        $neb->find( $fname );
     102        $neb->copy( $fname, $fname . "_copy" );
     103        $neb->move( $fname, $fname . "_move" );
     104        $neb->delete( $fname . "_copy" );
     105        $neb->delete( $fname . "_move" );
    75106
    76     $neb->find( $fname );
    77     $neb->copy( $fname, $fname . "_copy" );
    78     $neb->move( $fname, $fname . "_move" );
    79     $neb->delete( $fname . "_copy" );
    80     $neb->delete( $fname . "_move" );
    81 
    82     print $sock_child "$$ : all done!\n";
    83 
    84     $sock_child->flush;
    85     sleep 10;
     107#    print $sock "$$ : all done!\n";
     108    }
    86109
    87110    return 1;
     
    90113sub child_die
    91114{
    92     print $my_sock $@;
    93     shutdown($my_sock, 2);
     115    my $sock = shift;
     116    print $sock @_;
     117    shutdown($sock, 2);
    94118    exit 1;
    95119}
     120
     121package Nebulous::Client::Bench;
     122
     123use 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
     137BEGIN {
     138sub make_wrapper
     139{
     140    my $method = shift;
     141
     142eval "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
     153make_wrapper("create");
     154make_wrapper("open_create");
     155make_wrapper("replicate");
     156make_wrapper("cull");
     157make_wrapper("lock");
     158make_wrapper("unlock");
     159make_wrapper("setxattr");
     160make_wrapper("getxattr");
     161make_wrapper("listxattr");
     162make_wrapper("removexattr");
     163make_wrapper("find_objects");
     164make_wrapper("find_instances");
     165#make_wrapper("find");
     166#make_wrapper("open");
     167#make_wrapper("delete");
     168#make_wrapper("copy");
     169make_wrapper("move");
     170make_wrapper("swap");
     171make_wrapper("delete_instance");
     172make_wrapper("stat");
     173make_wrapper("mounts");
     174
     175}
     176
     1771;
Note: See TracChangeset for help on using the changeset viewer.