2 package Stem::Load::Driver ;
6 use Time::HiRes qw( gettimeofday tv_interval ) ;
14 Name this Cell was registered with.
18 'name' => 'load_addr',
20 Address to send the load messages
24 'name' => 'load_data',
30 'name' => 'data_sizes',
32 Range of data sizes to select from randomly
36 'name' => 'max_msg_cnt',
39 Maximum number of messages to send
43 'name' => 'max_duration',
46 Maximum number of seconds to run
53 my( $class ) = shift ;
55 my $self = Stem::Class::parse_args( $attr_spec, @_ ) ;
56 return $self unless ref $self ;
63 my( $self, $msg ) = @_ ;
65 $self->{'echo_cnt'} = 0 ;
67 $self->{'start_time'} = gettimeofday() ;
69 $self->{'go_from_addr'} = $msg->from() ;
71 $self->send_load_msg() ;
73 return "Load Started\n" ;
78 my( $self, $msg ) = @_ ;
80 my $time_delta = gettimeofday() - $self->{'start_time'} ;
82 if ( ++$self->{'echo_cnt'} >= $self->{'max_msg_cnt'} ||
83 $time_delta > $self->{'max_duration'} ) {
85 my $msgs_per_second = $self->{'echo_cnt'} / $time_delta ;
87 my $done_msg = Stem::Msg->new(
88 'to' => $self->{'go_from_addr'},
89 'from' => $self->{'reg_name'},
92 sent $self->{'echo_cnt'} messages in $time_delta seconds
93 $msgs_per_second messages per second
97 $done_msg->dispatch() ;
102 $self->send_load_msg() ;
112 $self->{'echo_msg'} ||= Stem::Msg->new(
113 'to' => $self->{'load_addr'},
114 'from' => $self->{'reg_name'},
116 'data' => \'echo me',
119 $self->{'echo_msg'}->dispatch() ;