/[Search-Estraier]/trunk/t/5_Node.t
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/t/5_Node.t

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 135 by dpavlin, Tue May 9 12:42:39 2006 UTC revision 139 by dpavlin, Wed May 10 13:45:08 2006 UTC
# Line 3  Line 3 
3  use strict;  use strict;
4  use blib;  use blib;
5    
6  use Test::More tests => 120;  use Test::More tests => 136;
7  use Test::Exception;  use Test::Exception;
8  use Data::Dumper;  use Data::Dumper;
9    
10  BEGIN { use_ok('Search::Estraier') };  BEGIN { use_ok('Search::Estraier') };
11    
12  my $debug = 1;  my $debug = 0;
13    
14  # name of node for test  # name of node for test
15  my $test1_node = 'test1';  my $test1_node = '_test1_' . $$;
16  my $test2_node = 'test2';  my $test2_node = '_test2_' . $$;
17    
18  ok(my $node = new Search::Estraier::Node( debug => $debug ), 'new');  ok(my $node = new Search::Estraier::Node( debug => $debug ), 'new');
19  isa_ok($node, 'Search::Estraier::Node');  isa_ok($node, 'Search::Estraier::Node');
# Line 32  cmp_ok($node->status, '==', -1, 'status' Line 32  cmp_ok($node->status, '==', -1, 'status'
32    
33  # test master functionality  # test master functionality
34    
35  diag "not testing shutdown\n";  #diag "not testing shutdown\n";
36    
37  ok(my $foo = $node->master( action => 'sync' ), 'sync');  my $msg;
38    
39  diag "not testing backup\n";  ok($msg = $node->master( action => 'sync' ), "sync: $msg");
40    
41    #diag "not testing backup\n";
42    
43  ok(my @users = $node->master( action => 'userlist' ), 'userlist');  ok(my @users = $node->master( action => 'userlist' ), 'userlist');
44    
45  diag "users: ", Dumper( \@users );  #diag "users: ", Dumper( \@users );
46    diag "found ", $#users + 1, " users";
47    
48    my $user = {
49            name => '_test_' . $$,
50            flags => 'b',
51            fname => 'Search::Estraier',
52            misc => 'test user',
53    };
54    
55    ok($msg = $node->master(
56            action => 'useradd',
57            %{ $user },
58            passwd => 'test1234',
59    ), "useradd: $msg");
60    
61    ok(my @users2 = $node->master( action => 'userlist' ), 'userlist');
62    cmp_ok($#users2, '==', $#users + 1, 'added user');
63    
64    while (my $row = shift @users2) {
65            next unless ($row->{name} eq $user);
66            map {
67                    cmp_ok($user->{$_}, 'eq', $row->{$_}, "$_");
68            } keys %{ $user };
69    }
70    
71    ok($msg = $node->master(
72            action => 'userdel',
73            name => $user->{name},
74    ), "userdel: $msg");
75    
76    ok(@users2 = $node->master( action => 'userlist' ), 'userlist');
77    cmp_ok($#users2, '==', $#users, 'removed user');
78    
79    ok(my @nodes = $node->master( action => 'nodelist' ), 'nodelist' );
80    #diag "nodelist: ", Dumper( \@nodes );
81    diag "found ", $#nodes + 1, " nodes";
82    
83    if ($#nodes > 42) {
84            diag <<'_END_OF_WARNING_';
85    
86  SKIP: {  This tests create three nodes in your Hyper Estraier.
87    
88  skip "no $test1_node node in Hyper Estraier", 110, unless($node->name);  Since you have more than 43 modes, and Hyper Estraier needs more than
89    1024 file descriptors for more than 46 nodes, expect tests to fail.
90    
91  my @res = ( -1, 200 );  If tests do fail, you can try to add
92    
93  my $nodelist;  ulimit -n 2048
94  foreach my $url (qw{?action=nodelist http://localhost:1978/master?action=nodelist}) {  
95          cmp_ok(  before staring estmaster, which will increase number of available nodes
96                  $node->shuttle_url( $url, 'text/plain', undef, \$nodelist)  to 96 before estmaster runs out of file descriptors.
97          ,'==', shift @res, 'nodelist');  
98    _END_OF_WARNING_
99    }
100    
101    my $temp_node = "_test_temp_$$";
102    
103    foreach my $node_name ( $test1_node , $test2_node, $temp_node ) {
104            ok($msg = $node->master(
105                    action => 'nodeadd',
106                    name => $node_name,
107                    label => "$node_name label",
108            ), "nodeadd $node_name: $msg");
109  }  }
110    
111    ok($msg = $node->master(
112            action => 'nodeclr',
113            name => $temp_node,
114    ), "nodeclr $temp_node: $msg");
115    
116    ok($msg = $node->master(
117            action => 'nodedel',
118            name => $temp_node,
119    ), "nodedel $temp_node: $msg");
120    
121    #diag "not testing logrtt\n";
122    
123    # test document creation
124    
125  my $draft = <<'_END_OF_DRAFT_';  my $draft = <<'_END_OF_DRAFT_';
126  @uri=data001  @uri=data001
127  @title=Material Girl  @title=Material Girl
# Line 163  ok($node = new Search::Estraier::Node( u Line 230  ok($node = new Search::Estraier::Node( u
230    
231  ok(! $node->uri_to_id('foobar'), 'uri_to_id without croak');  ok(! $node->uri_to_id('foobar'), 'uri_to_id without croak');
232    
 # test users  
233    
234    # test users
235  ok(! $node->admins, 'no admins');  ok(! $node->admins, 'no admins');
236  ok(! $node->guests, 'no guests');  ok(! $node->guests, 'no guests');
237    
 # test search without results  
238    
239    # test search without results
240  ok($cond = new Search::Estraier::Condition, 'new cond');  ok($cond = new Search::Estraier::Condition, 'new cond');
241  ok($cond->set_phrase('this_is_phrase_which_does_not_exits'), 'cond set_phrase');  ok($cond->set_phrase('this_is_phrase_which_does_not_exits'), 'cond set_phrase');
242    
243  ok($nres = $node->search( $cond, 0 ), 'search');  ok($nres = $node->search( $cond, 0 ), 'search');
244    
245  SKIP: {  # now, test links
246          skip "no $test2_node in Hyper Estraier, skipping set_link", 5 unless (my $test2_label = $node2->label);  my $test2_label = "$test2_node label";
247    my $link_url = "http://localhost:1978/node/$test2_node";
248          my $link_url = "http://localhost:1978/node/$test2_node";  ok($node->set_link( $link_url, $test2_label, 42), "set_link $test2_node ($test2_label) 42");
249    ok(my $links = $node->links, 'links');
250          ok($node->set_link( $link_url, $test2_label, 42), "set_link $test2_node ($test2_label) 42");  cmp_ok($#{$links}, '==', 0, 'one link');
251    like($links->[0], qr/^$link_url/, 'link correct');
252          ok(my $links = $node->links, 'links');  ok($node->set_link("http://localhost:1978/node/$test2_node", $test2_label, 0), "set_link $test2_node ($test2_label) delete");
253    
254          cmp_ok($#{$links}, '==', 0, 'one link');  # cleanup test nodes
255    foreach my $node_name ( $test1_node , $test2_node ) {
256          like($links->[0], qr/^$link_url/, 'link correct');          ok($msg = $node->master(
257                    action => 'nodedel',
258          ok($node->set_link("http://localhost:1978/node/$test2_node", $test2_label, 0), "set_link $test2_node ($test2_label) delete");                  name => $node_name,
259  }       # SKIP 2          ), "nodedel $node_name: $msg");
260    }
261    
262  }       # SKIP 1  # test create
263    my $node_name = '_test_create_' . $$;
264    my $node_label = "test $$ label";
265    
266    ok($node = new Search::Estraier::Node(
267            url => "http://localhost:1978/node/$node_name",
268            create => 1,
269            label => $node_label,
270            croak_on_error => 1
271    ), "new non-existant with create");
272    
273    cmp_ok($node->name, 'eq', $node_name, "node $node_name exists");
274    cmp_ok($node->label, 'eq', $node_label, "node label: $node_label");
275    
276    ok($msg = $node->master(
277            action => 'nodedel',
278            name => $node_name,
279    ), "nodedel $node_name: $msg");
280    
281  diag "over";  diag "over";

Legend:
Removed from v.135  
changed lines
  Added in v.139

  ViewVC Help
Powered by ViewVC 1.1.26