Changeset 13216

Show
Ignore:
Timestamp:
06/04/08 17:11:03 (5 years ago)
Author:
daisuke
Message:

fix config handling

Location:
lang/perl/XMPP-Bomber/trunk
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/XMPP-Bomber/trunk/eg/simple.yaml

    r13191 r13216  
    1 hostname: 192.168.0.5 
    2 domain: endeworks.jp 
    3 content_provider: 
    4     module: Gibberish 
     1clients: 
     2  - module: Flooder 
    53    args: 
    6         min_length: 512 
    7         max_length: 4096 
    8 sender_provider: 
    9     module: Static 
    10     args: 
    11         users: 
    12             - username: daisuke 
    13               password: hoge 
    14               domain: endeworks.jp 
    15 receiver_provider: 
    16     module: OpenFire::Random 
    17     args: 
     4      timeout: 3600 
     5      server: 
     6        hostname: 192.168.0.5 
     7        port: 5222 
    188        domain: endeworks.jp 
    19         count: 10 
    20         connect_info: 
    21             - dbi:mysql:dbname=openfire 
    22             - root 
    23             - 
    24             - RaiseError: 1 
    25               AutoCommit: 1 
     9      accounts: 
     10        - username: daisuke 
     11          password: hoge 
     12          domain: endeworks.jp 
     13      recipients: [] 
     14      content_provider: 
     15        module: Gibberish 
     16        args: 
     17          min_length: 512 
     18          max_length: 4096 
     19      recipient_chooser: 
     20        module: Static 
     21        args: 
     22          static_recipient: 
     23            username: daisuke 
     24            password: hoge 
     25            domain: endeworks.jp 
     26             
  • lang/perl/XMPP-Bomber/trunk/lib/XMPP/Bomber.pm

    r13199 r13216  
    55use XMPP::Bomber::Types; 
    66 
    7 has 'hostname' => ( 
     7has 'clients' => ( 
    88    is => 'rw', 
    9     isa => 'Str', 
    10     required => 1, 
    11 ); 
    12  
    13 has 'port' => ( 
    14     is => 'rw', 
    15     isa => 'Int', 
    16     required => 1, 
    17     default => 5222, 
    18 ); 
    19  
    20 has 'domain' => ( 
    21     is => 'rw', 
    22     isa => 'Str', 
    23     required => 1, 
    24 ); 
    25  
    26 has 'receiver_count' => ( 
    27     is => 'rw', 
    28     isa => 'Int' 
    29 ); 
    30  
    31 has 'senders' => ( 
    32     is => 'rw', 
    33     isa => 'ArrayRef[XMPP::Bomber::Sender]', 
    34     default => sub { [] }, 
    35 ); 
    36  
    37 has 'receivers' => ( 
    38     is => 'rw', 
    39     isa => 'ArrayRef[XMPP::Bomber::Recever]', 
    40     default => sub { [] }, 
    41 ); 
    42  
    43 has 'sender_provider' => ( 
    44     is => 'rw', 
    45     does => 'XMPP::Bomber::Role::UserProvider', 
    46     coerce => 1, 
    47     required => 1, 
    48 ); 
    49  
    50 has 'receiver_provider' => ( 
    51     is => 'rw', 
    52     does => 'XMPP::Bomber::Role::UserProvider', 
    53     coerce => 1, 
    54     required => 1, 
    55 ); 
    56  
    57 has 'content_provider' => ( 
    58     is => 'rw', 
    59     does => 'XMPP::Bomber::Role::ContentProvider', 
     9    isa => 'ClientList', 
     10    auto_deref => 1, 
    6011    coerce => 1, 
    6112    required => 1, 
     
    8334    my ($self) = @_; 
    8435 
    85     $self->start_receivers(); 
    86     $self->start_senders(); 
    87     $self->condvar->wait; 
    88     $self->stop_senders(); 
    89     $self->stop_receivers(); 
     36    $self->run_clients; 
     37 
     38    wait(); 
     39} 
     40 
     41sub run_clients 
     42{ 
     43    my $self = shift; 
     44 
     45    foreach my $client ($self->clients) { 
     46        my $pid = fork(); 
     47        if (! defined $pid) { 
     48            die "Failed to fork!"; 
     49        } 
     50 
     51        if (! $pid ) { 
     52            eval { 
     53                $client->run; 
     54            }; 
     55            exit $@ ? 1 : 0; 
     56        } 
     57    } 
    9058} 
    9159 
  • lang/perl/XMPP-Bomber/trunk/lib/XMPP/Bomber/RecipientChooser/Static.pm

    r13205 r13216  
    99    is => 'rw', 
    1010    isa => 'XMPP::Bomber::Account', 
     11    coerce => 1, 
    1112    required => 1, 
    1213); 
  • lang/perl/XMPP-Bomber/trunk/lib/XMPP/Bomber/Types.pm

    r13211 r13216  
    66use XMPP::Bomber::Role::ContentProvider; 
    77use XMPP::Bomber::Role::Client; 
     8use XMPP::Bomber::Role::RecipientChooser; 
    89use XMPP::Bomber::Role::UserProvider; 
    910 
     
    5253; 
    5354 
     55coerce 'XMPP::Bomber::Role::RecipientChooser' 
     56    => from 'HashRef'  
     57        => via { 
     58            __auto_object_from_hash($_, "XMPP::Bomber::RecipientChooser"); 
     59        } 
     60; 
     61 
    5462coerce 'XMPP::Bomber::Server' 
    5563    => from 'HashRef' 
    5664        => via {  
    5765            __object_from_hash($_, "XMPP::Bomber::Server"); 
     66        } 
     67; 
     68             
     69 
     70coerce 'XMPP::Bomber::Account' 
     71    => from 'HashRef' 
     72        => via {  
     73            __object_from_hash($_, "XMPP::Bomber::Account"); 
    5874        } 
    5975; 
     
    7591    my ($h, $prefix) = @_; 
    7692    my $module = __resolve_module_name($h->{module}, $prefix); 
    77     __object_from_hash($h, $module); 
     93    __object_from_hash($h->{args}, $module); 
    7894} 
    7995 
    8096sub __object_from_hash { 
    8197    my ($h, $module) = @_; 
    82     $module->new( %{$h->{args}} ); 
     98    $module->new( %$h ); 
    8399} 
    84100