|
1 # Requirements: |
|
2 # You have softlimit in your path. |
|
3 # XFSZ is signal 25. |
|
4 # |
|
5 # Some features not tested here: |
|
6 # cdbmake traps 4GB overflows. |
|
7 |
|
8 |
|
9 umask 022 |
|
10 |
|
11 rm -rf rts-tmp |
|
12 mkdir rts-tmp |
|
13 cd rts-tmp |
|
14 |
|
15 |
|
16 echo '--- cdbmake handles simple example' |
|
17 echo '+3,5:one->Hello |
|
18 +3,7:two->Goodbye |
|
19 ' | cdbmake test.cdb test.tmp |
|
20 echo $? |
|
21 |
|
22 echo '--- cdbmake-12 handles simple example' |
|
23 echo ' |
|
24 one Hello |
|
25 # comment line |
|
26 two Goodbye |
|
27 ' | cdbmake-12 12.cdb 12.tmp |
|
28 echo $? |
|
29 |
|
30 echo '--- cdbmake-sv handles simple example' |
|
31 echo ' |
|
32 # Network services, Internet style |
|
33 echo 7/tcp |
|
34 echo 7/udp |
|
35 discard 9/tcp sink null |
|
36 discard 9/udp sink null |
|
37 systat 11/tcp users #Active Users |
|
38 systat 11/udp users #Active Users |
|
39 ' | cdbmake-sv sv.cdb sv.tmp |
|
40 echo $? |
|
41 |
|
42 echo '--- cdbdump handles simple examples' |
|
43 cdbdump < test.cdb |
|
44 echo $? |
|
45 cdbdump < 12.cdb |
|
46 echo $? |
|
47 cdbdump < sv.cdb |
|
48 echo $? |
|
49 |
|
50 echo '--- cdbtest handles simple examples' |
|
51 cdbtest < test.cdb |
|
52 echo $? |
|
53 cdbtest < 12.cdb |
|
54 echo $? |
|
55 cdbtest < sv.cdb |
|
56 echo $? |
|
57 |
|
58 echo '--- cdbstats handles simple examples' |
|
59 cdbstats < test.cdb |
|
60 echo $? |
|
61 cdbstats < 12.cdb |
|
62 echo $? |
|
63 cdbstats < sv.cdb |
|
64 echo $? |
|
65 |
|
66 echo '--- cdbget retrieves data successfully' |
|
67 cdbget one < test.cdb |
|
68 echo ' |
|
69 '$? |
|
70 cdbget two < test.cdb |
|
71 echo ' |
|
72 '$? |
|
73 for i in @7 echo @9 discard sink null @11 systat users |
|
74 do |
|
75 cdbget $i/tcp < sv.cdb |
|
76 echo ' |
|
77 '$? |
|
78 cdbget $i/udp < sv.cdb |
|
79 echo ' |
|
80 '$? |
|
81 done |
|
82 |
|
83 echo '--- cdbget exits 100 on nonexistent data' |
|
84 cdbget three < test.cdb |
|
85 echo $? |
|
86 cdbget '#Active' < sv.cdb |
|
87 echo $? |
|
88 |
|
89 |
|
90 echo '--- cdbmake handles repeated keys' |
|
91 echo '+3,5:one->Hello |
|
92 +3,7:one->Goodbye |
|
93 +3,7:one->Another |
|
94 ' | cdbmake rep.cdb rep.tmp |
|
95 echo $? |
|
96 cdbdump < rep.cdb |
|
97 echo $? |
|
98 |
|
99 echo '--- cdbget handles repeated keys' |
|
100 cdbget one < rep.cdb |
|
101 echo ' |
|
102 '$? |
|
103 cdbget one 0 < rep.cdb |
|
104 echo ' |
|
105 '$? |
|
106 cdbget one 1 < rep.cdb |
|
107 echo ' |
|
108 '$? |
|
109 cdbget one 2 < rep.cdb |
|
110 echo ' |
|
111 '$? |
|
112 cdbget one 3 < rep.cdb |
|
113 echo ' |
|
114 '$? |
|
115 cdbget one 4 < rep.cdb |
|
116 echo ' |
|
117 '$? |
|
118 |
|
119 echo '--- cdbmake handles long keys and data' |
|
120 echo '+320,320:ba483b3442e75cace82def4b5df25bfca887b41687537c21dc4b82cb4c36315e2f6a0661d1af2e05e686c4c595c16561d8c1b3fbee8a6b99c54b3d10d61948445298e97e971f85a600c88164d6b0b09 |
|
121 b5169a54910232db0a56938de61256721667bddc1c0a2b14f5d063ab586a87a957e87f704acb7246c5e8c25becef713a365efef79bb1f406fecee88f3261f68e239c5903e3145961eb0fbc538ff506a |
|
122 ->152e113d5deec3638ead782b93e1b9666d265feb5aebc840e79aa69e2cfc1a2ce4b3254b79fa73c338d22a75e67cfed4cd17b92c405e204a48f21c31cdcf7da46312dc80debfbdaf6dc39d74694a711 |
|
123 6d170c5fde1a81806847cf71732c7f3217a38c6234235951af7b7c1d32e62d480d7c82a63a9d94291d92767ed97dd6a6809d1eb856ce23eda20268cb53fda31c016a19fc20e80aec3bd594a3eb82a5a |
|
124 |
|
125 ' | cdbmake test.cdb test.tmp |
|
126 echo $? |
|
127 |
|
128 echo '--- cdbdump handles long keys and data' |
|
129 cdbdump < test.cdb |
|
130 echo $? |
|
131 |
|
132 echo '--- cdbtest handles long keys and data' |
|
133 cdbtest < test.cdb |
|
134 echo $? |
|
135 |
|
136 echo '--- cdbstats handles long keys and data' |
|
137 cdbstats < test.cdb |
|
138 echo $? |
|
139 |
|
140 echo '--- cdbget handles long keys and data' |
|
141 cdbget 'ba483b3442e75cace82def4b5df25bfca887b41687537c21dc4b82cb4c36315e2f6a0661d1af2e05e686c4c595c16561d8c1b3fbee8a6b99c54b3d10d61948445298e97e971f85a600c88164d6b0b09 |
|
142 b5169a54910232db0a56938de61256721667bddc1c0a2b14f5d063ab586a87a957e87f704acb7246c5e8c25becef713a365efef79bb1f406fecee88f3261f68e239c5903e3145961eb0fbc538ff506a |
|
143 ' < test.cdb |
|
144 echo ' |
|
145 '$? |
|
146 |
|
147 echo '--- cdbmake handles unwritable tmp' |
|
148 ln -s loop loop |
|
149 echo '' | cdbmake test.cdb loop |
|
150 echo $? |
|
151 |
|
152 echo '--- cdbmake handles unmovable cdb' |
|
153 echo '' | cdbmake loop/test.cdb test.tmp |
|
154 echo $? |
|
155 |
|
156 echo '--- cdbmake handles nomem' |
|
157 csh -cf 'repeat 5000 echo "+3,5:one->Hello"' \ |
|
158 | softlimit -d 50000 cdbmake test.cdb test.tmp |
|
159 echo $? |
|
160 |
|
161 echo '--- cdbmake handles full disk' |
|
162 ( |
|
163 trap '' 25 |
|
164 echo '' | softlimit -f 2047 cdbmake test.cdb test.tmp |
|
165 echo $? |
|
166 ) |
|
167 |
|
168 echo '--- cdbmake handles absurd klen' |
|
169 echo '+4294967210' | cdbmake test.cdb test.tmp |
|
170 echo $? |
|
171 |
|
172 echo '--- cdbget handles empty file' |
|
173 cdbget foo </dev/null |
|
174 echo $? |
|
175 |
|
176 |
|
177 echo '--- cdbdump and cdbmake handle random.cdb' |
|
178 cdbdump < ../random.cdb | cdbmake test.cdb test.tmp |
|
179 echo $? |
|
180 cmp ../random.cdb test.cdb |
|
181 |
|
182 echo '--- cdbtest handles random.cdb' |
|
183 cdbtest < ../random.cdb |
|
184 echo $? |
|
185 |
|
186 echo '--- cdbstats handles random.cdb' |
|
187 cdbstats < ../random.cdb |
|
188 echo $? |
|
189 |
|
190 |
|
191 echo '--- testzero works' |
|
192 testzero 5 > test.cdb |
|
193 echo $? |
|
194 cdbtest < test.cdb |
|
195 echo $? |
|
196 |
|
197 echo '--- testzero can build a database very close to 4GB' |
|
198 testzero 65507 > /dev/null |
|
199 echo $? |
|
200 |
|
201 echo '--- testzero complains if hash table passes 4GB' |
|
202 testzero 65508 > /dev/null |
|
203 echo $? |
|
204 |
|
205 echo '--- testzero complains if records pass 4GB' |
|
206 testzero 66000 > /dev/null |
|
207 echo $? |
|
208 |
|
209 |
|
210 exit 0 |