/[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 134 by dpavlin, Tue May 9 12:21:26 2006 UTC revision 140 by dpavlin, Wed May 10 14:08:34 2006 UTC
# Line 3  Line 3 
3  use strict;  use strict;
4  use blib;  use blib;
5    
6  use Test::More tests => 118;  use Test::More tests => 142;
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  ok($node->master( action => 'sync' ), 'sync');  #diag "not testing shutdown\n";
36    
37    my $msg;
38    
39  SKIP: {  ok($msg = $node->master( action => 'sync' ), "sync: $msg");
40    
41  skip "no $test1_node node in Hyper Estraier", 108, unless($node->name);  #diag "not testing backup\n";
42    
43  my @res = ( -1, 200 );  ok(my @users = $node->master( action => 'userlist' ), 'userlist');
44    
45  my $nodelist;  #diag "users: ", Dumper( \@users );
46  foreach my $url (qw{?action=nodelist http://localhost:1978/master?action=nodelist}) {  diag "found ", $#users + 1, " users";
47          cmp_ok(  
48                  $node->shuttle_url( $url, 'text/plain', undef, \$nodelist)  my $user = {
49          ,'==', shift @res, 'nodelist');          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    This tests create three nodes in your Hyper Estraier.
87    
88    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    If tests do fail, you can try to add
92    
93    ulimit -n 2048
94    
95    before staring estmaster, which will increase number of available nodes
96    to 96 before estmaster runs out of file descriptors.
97    
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 156  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 create+croak");
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($node = new Search::Estraier::Node(
277            url => "http://localhost:1978/node/$node_name",
278            create => 1,
279            label => $node_label,
280            croak_on_error => 0
281    ), "new create existing");
282    
283    ok($node = new Search::Estraier::Node(
284            url => "http://localhost:1978/node/$node_name",
285            create => 1,
286            label => $node_label,
287            croak_on_error => 1
288    ), "new create+croak existing");
289    
290    # cleanup
291    ok($msg = $node->master(
292            action => 'nodedel',
293            name => $node_name,
294    ), "nodedel $node_name: $msg");
295    
296    # and again, this time without node
297    ok($node = new Search::Estraier::Node(
298            url => "http://localhost:1978/node/$node_name",
299            create => 1,
300            label => $node_label,
301            croak_on_error => 0
302    ), "new create non-existing");
303    
304    cmp_ok($node->name, 'eq', $node_name, "node $node_name exists");
305    cmp_ok($node->label, 'eq', $node_label, "node label: $node_label");
306    
307    # cleanup
308    ok($msg = $node->master(
309            action => 'nodedel',
310            name => $node_name,
311    ), "nodedel $node_name: $msg");
312    
313  diag "over";  diag "over";

Legend:
Removed from v.134  
changed lines
  Added in v.140

  ViewVC Help
Powered by ViewVC 1.1.26