Prefix ZOOM_ instead of Z3950_. Documentation updates.
[yaz-moved-to-github.git] / zoom / zoomtst7.c
1 /*
2  * $Id: zoomtst7.c,v 1.7 2001-11-18 21:14:23 adam Exp $
3  *
4  * API test..
5  */
6
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <assert.h>
10
11 #include <yaz/xmalloc.h>
12 #include <yaz/nmem.h>
13
14 #include <yaz/zoom.h>
15
16 int main(int argc, char **argv)
17 {
18     int i, j, block;
19     ZOOM_connection z;
20     ZOOM_resultset r[10];  /* and result sets .. */
21     ZOOM_options o;
22
23     nmem_init ();
24     o = ZOOM_options_create ();
25
26     z = ZOOM_connection_new ("localhost", 9999);
27     if (ZOOM_connection_error (z, 0, 0))
28     {
29         printf ("error - couldn't connect?\n");
30         exit (1);
31     }
32         
33     ZOOM_connection_destroy (z);
34
35     for (block = 0; block < 3; block++)
36     {
37         switch (block)
38         {
39         case 0:
40             printf ("blocking - not calling ZOOM_events\n");
41             break;
42         case 1:
43             printf ("blocking - calling ZOOM_events\n");
44             break;
45         case 2:
46             printf ("non-blocking - calling ZOOM_events\n");
47             break;
48         }
49         if (block > 1)
50             ZOOM_options_set (o, "async", "1");
51         for (i = 0; i<10; i++)
52         {
53             char host[40];
54             printf ("session %2d", i);
55             sprintf (host, "localhost:9999/%d", i);
56             z = ZOOM_connection_create (o);
57             ZOOM_connection_connect (z, host, 0);
58             
59             for (j = 0; j < 10; j++)
60             {
61                 ZOOM_record recs[2];
62                 char query[40];
63                 ZOOM_query s = ZOOM_query_create ();
64                 
65                 sprintf (query, "i%dr%d", i, j);
66                 
67                 if (ZOOM_query_prefix (s, query))
68                 {
69                     printf ("bad PQF: %s\n", query);
70                     exit (2);
71                 }
72                 ZOOM_options_set (o, "start", "0");
73                 ZOOM_options_set (o, "count", "0");
74                 
75                 r[j] = ZOOM_connection_search (z, s); /* non-piggy */
76                 
77                 ZOOM_resultset_records (r[j], recs, 0, 2);  /* first two */
78                 
79                 ZOOM_resultset_records (r[j], recs, 1, 2);  /* third */
80
81                 ZOOM_resultset_records (r[j], recs, 0, 0);  /* ignored */
82
83                 if (ZOOM_resultset_size (r[j]) > 2)
84                 {
85                     if (!recs[0])
86                     {
87                         fprintf (stderr, "\nrecord missing\n");
88                         exit (1);
89                     }
90                 }
91                 
92                 ZOOM_query_destroy (s);
93
94                 putchar ('.');
95                 if (block > 0)
96                     while (ZOOM_event (1, &z))
97                         ;
98             }
99             for (j = 0; j<i; j++)
100                 ZOOM_resultset_destroy (r[j]);
101             ZOOM_connection_destroy (z);
102             for (; j < 10; j++)
103                 ZOOM_resultset_destroy (r[j]);
104             printf ("10 searches, 20 presents done\n");
105         }
106         
107         for (i = 0; i<1; i++)
108         {
109             ZOOM_query q = ZOOM_query_create ();
110             char host[40];
111
112             printf ("session %2d", i+10);
113             sprintf (host, "localhost:9999/%d", i);
114             z = ZOOM_connection_create (o);
115             ZOOM_connection_connect (z, host, 0);
116             
117             for (j = 0; j < 10; j++)
118             {
119                 char query[40];
120                 
121                 sprintf (query, "i%dr%d", i, j);
122                 
123                 ZOOM_options_set (o, "count", "0");
124                 
125                 r[j] = ZOOM_connection_search_pqf (z, query);
126
127                 putchar ('.');
128                 if (block > 0)
129                     while (ZOOM_event (1, &z))
130                         ;
131             }
132             ZOOM_connection_destroy (z);
133             
134             for (j = 0; j < 10; j++)
135             {
136                 ZOOM_resultset_records (r[j], 0, 0, 1);
137                 if (block > 0)
138                     while (ZOOM_event (1, &z))
139                         ;
140             }
141             for (j = 0; j < 10; j++)
142                 ZOOM_resultset_destroy (r[j]);
143             ZOOM_query_destroy (q);
144             printf ("10 searches, 10 ignored presents done\n");
145         }
146     }
147     ZOOM_options_destroy (o);
148     xmalloc_trav("");
149     nmem_exit();
150     xmalloc_trav("");
151     exit (0);
152 }
153