]> Cypherpunks.ru repositories - nncp.git/blob - t/nncp-rm.t
Refactored and tested nncp-rm
[nncp.git] / t / nncp-rm.t
1 #!/bin/sh
2
3 testname=`basename "$0"`
4 test_description="nncp-rm's behaviour"
5 . $SHARNESS_TEST_SRCDIR/sharness.sh
6
7 rand32() {
8     perl <<EOF
9 open(\$rnd, "<", "/dev/urandom") or die \$!;
10 read(\$rnd, \$data, 32) or die \$!;
11 use MIME::Base32;
12 print MIME::Base32::encode \$data;
13 print "\n";
14 EOF
15 }
16
17 randpkts() {
18     for i in $(seq $(jot -r 1 10 20)) ; do rand32 ; done
19 }
20
21 PKTS=""
22 pkts_remove() {
23     perl <<EOF
24 map { \$all{\$_} = 1 } qw($PKTS);
25 map { delete \$all{\$_} } qw($@);
26 print join " ", keys %all;
27 EOF
28 }
29
30 assert_is_deleted() {
31     for pkt in $@ ; do
32         if [ -e $pkt ] ; then
33             echo unexpectedly existing: $pkt >&2
34             return 1
35         fi
36     done
37     local pkts=""
38     for pkt in `pkts_remove $@` ; do
39         if ! [ -e $pkt ] ; then
40             echo unexpectedly removed: $pkt >&2
41             return 1
42         fi
43         pkts="$pkts $pkt"
44     done
45     PKTS="$pkts"
46 }
47
48 now=`date +%s`
49 nncp-cfgnew > cfg
50 nncp-cfgdir -cfg cfg -dump cfgdir
51 echo "$PWD/spool" > cfgdir/spool
52 echo "$PWD/log" > cfgdir/log
53 neigh=`rand32`
54 mkdir -p cfgdir/neigh/neigh
55 for w in id exchpub signpub ; do echo $neigh > cfgdir/neigh/neigh/$w ; done
56 mkdir -p spool/tmp spool/$neigh/rx/hdr spool/$neigh/rx/seen spool/$neigh/tx/hdr
57 date_old=$(date -j -f %s +%FT%T $(( $now - (3600 * 24 * 7) )))
58
59 pkts_old_rx=""
60 pkts_old_rx_hdr=""
61 for pkt in `randpkts` ; do
62     touch -d $date_old spool/$neigh/rx/$pkt spool/$neigh/rx/hdr/$pkt
63     pkts_old_rx="$pkts_old_rx spool/$neigh/rx/$pkt"
64     pkts_old_rx_hdr="$pkts_old_rx_hdr spool/$neigh/rx/hdr/$pkt"
65 done
66
67 pkts_old_tx=""
68 pkts_old_tx_hdr=""
69 for pkt in `randpkts` ; do
70     touch -d $date_old spool/$neigh/tx/$pkt spool/$neigh/tx/hdr/$pkt
71     pkts_old_tx="$pkts_old_tx spool/$neigh/tx/$pkt"
72     pkts_old_tx_hdr="$pkts_old_tx_hdr spool/$neigh/tx/hdr/$pkt"
73 done
74
75 pkts_old_part=""
76 for pkt in `randpkts` ; do
77     touch -d $date_old spool/$neigh/rx/$pkt.part
78     pkts_old_part="$pkts_old_part spool/$neigh/rx/$pkt.part"
79 done
80
81 pkts_old_nock=""
82 for pkt in `randpkts` ; do
83     touch -d $date_old spool/$neigh/rx/$pkt.nock
84     pkts_old_nock="$pkts_old_nock spool/$neigh/rx/$pkt.nock"
85 done
86
87 pkts_old_seen=""
88 for pkt in `randpkts` ; do
89     touch -d $date_old spool/$neigh/rx/seen/$pkt
90     pkts_old_seen="$pkts_old_seen spool/$neigh/rx/seen/$pkt"
91 done
92
93 pkts_new_rx=""
94 pkts_new_rx_hdr=""
95 for pkt in `randpkts` ; do
96     touch spool/$neigh/rx/$pkt spool/$neigh/rx/hdr/$pkt
97     pkts_new_rx="$pkts_new_rx spool/$neigh/rx/$pkt"
98     pkts_new_rx_hdr="$pkts_new_rx_hdr spool/$neigh/rx/hdr/$pkt"
99 done
100
101 pkts_new_tx=""
102 pkts_new_tx_hdr=""
103 for pkt in `randpkts` ; do
104     touch spool/$neigh/tx/$pkt spool/$neigh/tx/hdr/$pkt
105     pkts_new_tx="$pkts_new_tx spool/$neigh/tx/$pkt"
106     pkts_new_tx_hdr="$pkts_new_tx_hdr spool/$neigh/tx/hdr/$pkt"
107 done
108
109 pkts_new_part=""
110 for pkt in `randpkts` ; do
111     touch spool/$neigh/rx/$pkt.part
112     pkts_new_part="$pkts_new_part spool/$neigh/rx/$pkt.part"
113 done
114
115 pkts_new_nock=""
116 for pkt in `randpkts` ; do
117     touch spool/$neigh/rx/$pkt.nock
118     pkts_new_nock="$pkts_new_nock spool/$neigh/rx/$pkt.nock"
119 done
120
121 pkts_new_seen=""
122 for pkt in `randpkts` ; do
123     touch spool/$neigh/rx/seen/$pkt
124     pkts_new_seen="$pkts_new_seen spool/$neigh/rx/seen/$pkt"
125 done
126
127 pkts_tmp_old=""
128 for pkt in `randpkts` ; do
129     touch -d $date_old spool/tmp/$pkt
130     pkts_tmp_old="$pkts_tmp_old spool/tmp/$pkt"
131 done
132
133 pkts_tmp_new=""
134 for pkt in `randpkts` ; do
135     touch spool/tmp/$pkt
136     pkts_tmp_new="$pkts_tmp_new spool/tmp/$pkt"
137 done
138
139 pkts_hdr_excess_old_rx=""
140 for pkt in `randpkts` ; do
141     touch -d $date_old spool/$neigh/rx/hdr/$pkt
142     pkts_hdr_excess_old_rx="$pkts_hdr_excess_old_rx spool/$neigh/rx/hdr/$pkt"
143 done
144
145 pkts_hdr_excess_old_tx=""
146 for pkt in `randpkts` ; do
147     touch -d $date_old spool/$neigh/tx/hdr/$pkt
148     pkts_hdr_excess_old_tx="$pkts_hdr_excess_old_tx spool/$neigh/tx/hdr/$pkt"
149 done
150
151 pkts_hdr_excess_new_rx=""
152 for pkt in `randpkts` ; do
153     touch spool/$neigh/rx/hdr/$pkt
154     pkts_hdr_excess_new_rx="$pkts_hdr_excess_new_rx spool/$neigh/rx/hdr/$pkt"
155 done
156
157 pkts_hdr_excess_new_tx=""
158 for pkt in `randpkts` ; do
159     touch spool/$neigh/tx/hdr/$pkt
160     pkts_hdr_excess_new_tx="$pkts_hdr_excess_new_tx spool/$neigh/tx/hdr/$pkt"
161 done
162
163 pkts_area_old=""
164 pkts_area_new=""
165 for area in `randpkts` ; do
166     mkdir -p spool/$neigh/area/$area
167     for pkt in `randpkts` ; do
168         touch -d $date_old spool/$neigh/area/$area/$pkt
169         pkts_area_old="$pkts_area_old spool/$neigh/area/$area/$pkt"
170     done
171     for pkt in `randpkts` ; do
172         touch spool/$neigh/area/$area/$pkt
173         pkts_area_new="$pkts_area_new spool/$neigh/area/$area/$pkt"
174     done
175 done
176
177 pkts_specified=""
178 for pkt in `randpkts` ; do
179     touch spool/$neigh/rx/$pkt
180     pkts_specified="$pkts_specified spool/$neigh/rx/$pkt"
181 done
182 for pkt in `randpkts` ; do
183     touch spool/$neigh/tx/$pkt
184     pkts_specified="$pkts_specified spool/$neigh/tx/$pkt"
185 done
186 for pkt in `randpkts` ; do
187     touch spool/$neigh/rx/seen/$pkt
188     pkts_specified="$pkts_specified spool/$neigh/rx/seen/$pkt"
189 done
190
191 PKTS="
192 $pkts_old_rx
193 $pkts_old_rx_hdr
194 $pkts_old_tx
195 $pkts_old_tx_hdr
196 $pkts_old_part
197 $pkts_old_nock
198 $pkts_old_seen
199 $pkts_new_rx
200 $pkts_new_rx_hdr
201 $pkts_new_tx
202 $pkts_new_tx_hdr
203 $pkts_new_part
204 $pkts_new_nock
205 $pkts_new_seen
206 $pkts_tmp_old
207 $pkts_tmp_new
208 $pkts_hdr_excess_old_rx
209 $pkts_hdr_excess_old_tx
210 $pkts_hdr_excess_new_rx
211 $pkts_hdr_excess_new_tx
212 $pkts_area_old
213 $pkts_area_new
214 $pkts_specified
215 "
216 rmcmd="nncp-rm -quiet -cfg cfgdir -all"
217 older="-older 6d"
218
219 $rmcmd -pkt <<EOF
220 $pkts_specified
221 EOF
222 test_expect_success "Only -pkt" "assert_is_deleted $pkts_specified"
223
224 $rmcmd $older -tmp
225 test_expect_success "Old -tmp" "assert_is_deleted $pkts_tmp_old"
226
227 $rmcmd -tmp
228 test_expect_success "All -tmp" "assert_is_deleted $pkts_tmp_new"
229
230 $rmcmd $older -part
231 test_expect_success "Old -part" "assert_is_deleted $pkts_old_part"
232
233 $rmcmd -part
234 test_expect_success "All -part" "assert_is_deleted $pkts_new_part"
235
236 $rmcmd $older -nock
237 test_expect_success "Old -nock" "assert_is_deleted $pkts_old_nock"
238
239 $rmcmd -nock
240 test_expect_success "All -nock" "assert_is_deleted $pkts_new_nock"
241
242 $rmcmd $older -rx
243 test_expect_success "Old -rx" "assert_is_deleted $pkts_old_rx $pkts_old_rx_hdr"
244
245 $rmcmd $older -tx
246 test_expect_success "Old -tx" "assert_is_deleted $pkts_old_tx $pkts_old_tx_hdr"
247
248 $rmcmd -rx
249 test_expect_success "All -rx" "assert_is_deleted $pkts_new_rx $pkts_new_rx_hdr"
250
251 $rmcmd -tx
252 test_expect_success "All -tx" "assert_is_deleted $pkts_new_tx $pkts_new_tx_hdr"
253
254 $rmcmd $older -seen
255 test_expect_success "Old -seen" "assert_is_deleted $pkts_old_seen"
256
257 $rmcmd -seen
258 test_expect_success "All -seen" "assert_is_deleted $pkts_new_seen"
259
260 $rmcmd $older -rx -hdr
261 test_expect_success "Old -rx -hdr" "assert_is_deleted $pkts_hdr_excess_old_rx"
262
263 $rmcmd $older -tx -hdr
264 test_expect_success "Old -tx -hdr" "assert_is_deleted $pkts_hdr_excess_old_tx"
265
266 $rmcmd -rx -hdr
267 test_expect_success "All -rx -hdr" "assert_is_deleted $pkts_hdr_excess_new_rx"
268
269 $rmcmd -tx -hdr
270 test_expect_success "All -tx -hdr" "assert_is_deleted $pkts_hdr_excess_new_tx"
271
272 $rmcmd $older -area
273 test_expect_success "Old -area" "assert_is_deleted $pkts_area_old"
274
275 $rmcmd -area
276 test_expect_success "All -area" "assert_is_deleted $pkts_area_new"
277
278 test_done