Bump copyright year
[idzebra-moved-to-github.git] / test / api / test_trunc.c
1 /* This file is part of the Zebra server.
2    Copyright (C) 2004-2013 Index Data
3
4 Zebra is free software; you can redistribute it and/or modify it under
5 the terms of the GNU General Public License as published by the Free
6 Software Foundation; either version 2, or (at your option) any later
7 version.
8
9 Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17
18 */
19
20 /* Insert a number of randomly generated words and truncate */
21
22 #if HAVE_CONFIG_H
23 #include <config.h>
24 #endif
25 #include "testlib.h"
26
27 static void tst(int argc, char **argv)
28 {
29     int i;
30     ZebraService zs = tl_start_up("test_trunc.cfg", argc, argv);
31     ZebraHandle zh = zebra_open(zs, 0);
32
33     srand(17);
34
35     YAZ_CHECK(zebra_select_database(zh, "Default") == ZEBRA_OK);
36     zebra_init(zh);
37     zebra_close(zh);
38
39     for (i = 0; i<10; i++)
40     {
41         int l;
42
43         zh = zebra_open (zs, 0);
44         YAZ_CHECK(zh);
45
46         YAZ_CHECK(zebra_select_database(zh, "Default") == ZEBRA_OK);
47
48         YAZ_CHECK(zebra_begin_trans (zh, 1) == ZEBRA_OK);
49
50         for (l = 0; l<100; l++)
51         {
52             char rec_buf[5120];
53             int j;
54             *rec_buf = '\0';
55             strcat(rec_buf, "<gils><title>");
56             if (i == 0)
57             {
58                 sprintf(rec_buf + strlen(rec_buf), "aaa");
59             }
60             else
61             {
62                 j = (rand() & 15) + 1;
63                 while (--j >= 0)
64                 {
65                     int c = 65 + (rand() & 15);
66                     sprintf(rec_buf + strlen(rec_buf), "%c", c);
67                 }
68             }
69             strcat(rec_buf, "</title><Control-Identifier>");
70             j = rand() & 31;
71             sprintf(rec_buf + strlen(rec_buf), "%d", j);
72             strcat(rec_buf, "</Control-Identifier></gils>");
73             zebra_add_record (zh, rec_buf, strlen(rec_buf));
74         }
75         YAZ_CHECK(zebra_end_trans(zh) == ZEBRA_OK);
76         zebra_close(zh);
77     }
78     zh = zebra_open(zs, 0);
79     YAZ_CHECK(zh);
80
81     YAZ_CHECK(zebra_select_database(zh, "Default") == ZEBRA_OK);
82
83     zebra_set_resource(zh, "trunclimit", "2");
84
85     /* check massive truncation: bug #281 */
86     YAZ_CHECK(tl_query(zh, "@attr 1=4 @attr 2=1 z", -1));
87
88     YAZ_CHECK(tl_close_down(zh, zs));
89 }
90
91 TL_MAIN
92 /*
93  * Local variables:
94  * c-basic-offset: 4
95  * c-file-style: "Stroustrup"
96  * indent-tabs-mode: nil
97  * End:
98  * vim: shiftwidth=4 tabstop=8 expandtab
99  */
100