/[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 109 by dpavlin, Mon Feb 20 21:21:04 2006 UTC revision 138 by dpavlin, Wed May 10 13:34:17 2006 UTC
# Line 3  Line 3 
3  use strict;  use strict;
4  use blib;  use blib;
5    
6  use Test::More tests => 106;  use Test::More tests => 132;
7  use Test::Exception;  use Test::Exception;
8  use Data::Dumper;  use Data::Dumper;
9    
# Line 12  BEGIN { use_ok('Search::Estraier') }; Line 12  BEGIN { use_ok('Search::Estraier') };
12  my $debug = 0;  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 30  ok($node->set_auth('admin','admin'), 'se Line 30  ok($node->set_auth('admin','admin'), 'se
30    
31  cmp_ok($node->status, '==', -1, 'status');  cmp_ok($node->status, '==', -1, 'status');
32    
33  SKIP: {  # test master functionality
34    
35  skip "no $test1_node node in Hyper Estraier", 97, unless($node->name);  #diag "not testing shutdown\n";
36    
37  my @res = ( -1, 200 );  my $msg;
38    
39  my $nodelist;  ok($msg = $node->master( action => 'sync' ), "sync: $msg");
40  foreach my $url (qw{?action=nodelist http://localhost:1978/master?action=nodelist}) {  
41          cmp_ok(  #diag "not testing backup\n";
42                  $node->shuttle_url( $url, 'text/plain', undef, \$nodelist)  
43          ,'==', shift @res, 'nodelist');  ok(my @users = $node->master( action => 'userlist' ), 'userlist');
44    
45    #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    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 100  cmp_ok($nres->doc_num, '==', $max, "doc_ Line 179  cmp_ok($nres->doc_num, '==', $max, "doc_
179    
180  cmp_ok($nres->hits, '==', $data_max, "hits");  cmp_ok($nres->hits, '==', $data_max, "hits");
181    
182  for ( 6 .. 10 ) {  for my $i ( 0 .. ($nres->hits - 1) ) {
183          my $uri = 'test' . $_;          my $uri = 'test' . ($i + $data_max + 1);
184    
185            if ($i < $nres->doc_num) {
186                    ok( my $rdoc = $nres->get_doc( $i ), "get_doc $i");
187    
188                    cmp_ok( $rdoc->attr('@uri'), 'eq', $uri, "\@uri = $uri");
189                    ok( my $k = $rdoc->keywords( $id ), "rdoc keywords");
190            }
191    
192          ok( my $id = $node->uri_to_id( $uri ), "uri_to_id($uri) = $id");          ok( my $id = $node->uri_to_id( $uri ), "uri_to_id($uri) = $id");
193          ok( $node->get_doc( $id ), "get_doc $id");          ok( $node->get_doc( $id ), "get_doc $id");
194          ok( $node->get_doc_by_uri( $uri ), "get_doc_by_uri $uri");          ok( $node->get_doc_by_uri( $uri ), "get_doc_by_uri $uri");
195          cmp_ok( $node->get_doc_attr( $id, '@uri' ), 'eq', $uri, "get_doc_attr $id");          cmp_ok( $node->get_doc_attr( $id, '@uri' ), 'eq', $uri, "get_doc_attr $id");
196          cmp_ok( $node->get_doc_attr_by_uri( $uri, '@uri' ), 'eq', $uri, "get_doc_attr $id");          cmp_ok( $node->get_doc_attr_by_uri( $uri, '@uri' ), 'eq', $uri, "get_doc_attr $id");
197          ok( my $k = $node->etch_doc( $id ), "etch_doc_by_uri $uri");          ok( my $k1 = $node->etch_doc( $id ), "etch_doc_by_uri $uri");
198          ok( my $k2 = $node->etch_doc_by_uri( $uri ), "etch_doc_by_uri $uri");          ok( my $k2 = $node->etch_doc_by_uri( $uri ), "etch_doc_by_uri $uri");
199          #diag Dumper($k, $k2);          #diag Dumper($k, $k2);
200          ok( eq_hash( $k, $k2 ), "keywords");          ok( eq_hash( $k1, $k2 ), "keywords");
201  }  }
202    
203  ok(my $hints = $nres->hints, 'hints');  ok(my $hints = $nres->hints, 'hints');
# Line 122  my $v; Line 209  my $v;
209  ok($v = $node->name, "name: $v");  ok($v = $node->name, "name: $v");
210  ok($v = $node->label, "label: $v");  ok($v = $node->label, "label: $v");
211  ok($v = $node->doc_num, "doc_num: $v");  ok($v = $node->doc_num, "doc_num: $v");
212  ok($v = $node->word_num, "word_num: $v");  ok(defined($v = $node->word_num), "word_num: $v");
213  ok($v = $node->size, "size: $v");  ok($v = $node->size, "size: $v");
214    
215  ok($node->set_snippet_width( 100, 10, 10 ), "set_snippet_width");  ok($node->set_snippet_width( 100, 10, 10 ), "set_snippet_width");
# Line 143  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    
 SKIP: {  
         skip "no $test2_node in Hyper Estraier, skipping set_link", 5 unless (my $test2_label = $node2->label);  
   
         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");  
   
         ok(my $links = $node->links, 'links');  
238    
239          cmp_ok($#{$links}, '==', 0, 'one link');  # test search without results
240    ok($cond = new Search::Estraier::Condition, 'new cond');
241          like($links->[0], qr/^$link_url/, 'link correct');  ok($cond->set_phrase('this_is_phrase_which_does_not_exits'), 'cond set_phrase');
242    
243          ok($node->set_link("http://localhost:1978/node/$test2_node", $test2_label, 0), "set_link $test2_node ($test2_label) delete");  ok($nres = $node->search( $cond, 0 ), 'search');
244  }       # SKIP 2  
245    # now, test links
246  }       # SKIP 1  my $test2_label = "$test2_node label";
247    my $link_url = "http://localhost:1978/node/$test2_node";
248    ok($node->set_link( $link_url, $test2_label, 42), "set_link $test2_node ($test2_label) 42");
249    ok(my $links = $node->links, 'links');
250    cmp_ok($#{$links}, '==', 0, 'one link');
251    like($links->[0], qr/^$link_url/, 'link correct');
252    ok($node->set_link("http://localhost:1978/node/$test2_node", $test2_label, 0), "set_link $test2_node ($test2_label) delete");
253    
254    # cleanup test nodes
255    foreach my $node_name ( $test1_node , $test2_node ) {
256            ok($msg = $node->master(
257                    action => 'nodedel',
258                    name => $node_name,
259            ), "nodedel $node_name: $msg");
260    }
261    
262  diag "over";  diag "over";

Legend:
Removed from v.109  
changed lines
  Added in v.138

  ViewVC Help
Powered by ViewVC 1.1.26