summaryrefslogtreecommitdiff
path: root/testsuite/lrzsz/crc.exp
blob: 190fcb9a352abe303703c36ce478463ac7063f57 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
load_lib "lrzsz.exp"
if $tracelevel then {
    strace $tracelevel
}

# ZMCRC test. Belongs to filemanagment ...

# Part 1: file exists, same length, crc identical. sender init
set name crc-check-sender-equal-crc
exec mkdir $testdir/$name
exec cp -p $objdir/../src/lrz $testdir/$name/lrz

# this deals with different touch -t conventions. (POSIX/pre-posix-HPUX in this case)
catch "exec sh -c \"touch -t 020304051980.06 $testdir/$name/lrz || touch -t 198002030405.06 $testdir/$name/lrz\"" dummy
catch "exec ls -l $testdir/$name/lrz 2>/dev/null" timestamp
set fails [runthem_internal $name "$objdir/../src/lsz -B 10240" "-q --crc-check" \
	$objdir/../src/lrz "-q" \
	"$objdir/../src/lrz" "" dummy]
if {$fails == 0} {
	set res [catch "exec cmp $objdir/../src/lrz $testdir/$name/lrz" dummy]
	if {$res == 0} {
		catch "exec ls -l $testdir/$name/lrz 2>/dev/null" dummy
		if {0!=[string compare "$dummy" "$timestamp"]} {
			send_log "timestamp changed\n"
			send_log "1. $timestamp\n"
			send_log "2. $dummy\n"
			incr fails
		} else {
			send_log "timestamp ok\n"
			send_log "1. $timestamp\n"
			send_log "2. $dummy\n"
		}
	} else {
		send_log "files not identical: cmp told\n"
		send_log "$dummy\n"
		incr fails
	}
} else {
	incr fails
}
if {$fails == 0} {
	pass "$name"
	exec rm -rf $testdir/$name
} else {
	fail "$name"
}
unset name fails dummy timestamp

# Part 2: file exists, same length, crc identical. sender init. no mmap
# (ZCRC code on sender side is different if using mmap)
set name crc-check-sender-equal-crc-no-mmap
exec mkdir $testdir/$name
exec cp -p $objdir/../src/lrz $testdir/$name/lrz
catch "exec sh -c \"touch -t 020304051980.06 $testdir/$name/lrz || touch -t 198002030405.06 $testdir/$name/lrz\"" dummy
catch "exec ls -l $testdir/$name/lrz 2>/dev/null" timestamp
set fails [runthem_internal $name "/tmp/out $objdir/../src/lsz -B 10240" "-q --crc-check" \
	$objdir/../src/lrz "-q" \
	"$objdir/../src/lrz" "" dummy]
if {$fails == 0} {
	set res [catch "exec cmp $objdir/../src/lrz $testdir/$name/lrz" dummy]
	if {$res == 0} {
		catch "exec ls -l $testdir/$name/lrz 2>/dev/null" dummy
		if {0!=[string compare "$dummy" "$timestamp"]} {
			send_log "timestamp changed\n"
			send_log "1. $timestamp\n"
			send_log "2. $dummy\n"
			incr fails
		} else {
			send_log "timestamp ok\n"
			send_log "1. $timestamp\n"
			send_log "2. $dummy\n"
		}
	} else {
		send_log "files not identical: cmp told\n"
		send_log "$dummy\n"
		incr fails
	}
} else {
	incr fails
}
if {$fails == 0} {
	pass "$name"
	exec rm -rf $testdir/$name
} else {
	fail "$name"
}
unset name fails dummy timestamp

# Part 3: file exists, same length, crc identical. receiver init
set name crc-check-receiver-equal-crc
exec mkdir $testdir/$name
exec cp -p $objdir/../src/lrz $testdir/$name/lrz
catch "exec sh -c \"touch -t 020304051980.06 $testdir/$name/lrz || touch -t 198002030405.06 $testdir/$name/lrz\"" dummy
catch "exec ls -l $testdir/$name/lrz 2>/dev/null" timestamp
set fails [runthem_internal $name "$objdir/../src/lsz" "-q" \
	$objdir/../src/lrz "-q --crc-check" \
	"$objdir/../src/lrz" "" dummy]
if {$fails == 0} {
	set res [catch "exec cmp $objdir/../src/lrz $testdir/$name/lrz" dummy]
	if {$res == 0} {
		catch "exec ls -l $testdir/$name/lrz 2>/dev/null" dummy
		if {0!=[string compare "$dummy" "$timestamp"]} {
			send_log "timestamp changed\n"
			send_log "1. $timestamp\n"
			send_log "2. $dummy\n"
			incr fails
		} else {
			send_log "timestamp ok\n"
			send_log "1. $timestamp\n"
			send_log "2. $dummy\n"
		}
	} else {
		send_log "files not identical: cmp told\n"
		send_log "$dummy\n"
		incr fails
	}
} else {
	incr fails
}
if {$fails == 0} {
	pass "$name"
	exec rm -rf $testdir/$name
} else {
	fail "$name"
}
unset name fails dummy timestamp

# from now on ignore who initiates the crc-check. We know that both sides 
# can init it, from Part 1 & 2.

exec logger 4
# Part 4: file exists, same length, crc differs. 
set name crc-check-diff-crc
exec mkdir $testdir/$name
exec cp $objdir/../src/lrz $testdir/$name/lrz
catch "exec dd if=$srcdir/../src/lrz.c of=$testdir/$name/lrz conv=notrunc bs=512 count=1"
set fails [runthem_internal $name "$objdir/../src/lsz" "-q --crc-check" \
	"$objdir/../src/lrz" "-q" \
	"$objdir/../src/lrz" "rmdir,compare,delete" dummy]
if {$fails == 0} {
	pass "$name"
	exec rm -rf $testdir/$name
} else {
	fail "$name"
}
unset name fails dummy

# Part 5: file exists, different length, same crc.
set name crc-check-diff-len
exec mkdir $testdir/$name
catch "exec dd if=$srcdir/../src/lrz.c of=$testdir/$name/lrz.c conv=notrunc bs=256 count=81"
set fails [runthem_internal $name "$objdir/../src/lsz" "-q --crc-check" \
	$objdir/../src/lrz "-q" \
	"$srcdir/../src/lrz.c" "rmdir,compare,delete" dummy]
if {$fails == 0} {
	pass "$name"
	exec rm -rf $testdir/$name
} else {
	fail "$name"
}
unset name fails dummy

exec logger 6
# Part 6: file exists, different length, diff crc.
set name crc-check-diff-len-crc
exec mkdir $testdir/$name
catch "exec dd if=$srcdir/../src/lrz.c of=$testdir/$name/lrz.c conv=notrunc bs=256 count=81"
catch "exec dd if=$objdir/../src/lrz of=$testdir/$name/lrz.c conv=notrunc bs=512 count=1"
set fails [runthem_internal $name "$objdir/../src/lsz" "-q --crc-check" \
	$objdir/../src/lrz "-q" \
	"$srcdir/../src/lrz.c" "rmdir,compare,delete" dummy]
if {$fails == 0} {
	pass "$name"
	exec rm -rf $testdir/$name
} else {
	fail "$name"
}
unset name fails dummy


exec logger 7
# Part 7: file exists, different length, same crc. try resume
set name crc-check-diff-len-resume-sender
exec mkdir $testdir/$name
catch "exec dd if=$srcdir/../src/lrz.c of=$testdir/$name/lrz.c conv=notrunc bs=256 count=81"
set fails [runthem_internal $name "$objdir/../src/lsz" "-q -r --crc-check" \
	$objdir/../src/lrz "-q" \
	"$srcdir/../src/lrz.c" "rmdir,compare,delete" dummy]
if {$fails == 0} {
	pass "$name"
	exec rm -rf $testdir/$name
} else {
	fail "$name"
}
unset name fails dummy

exec logger part 8
# Part 8: file exists, different length, same crc. try resume (receiver)
set name crc-check-diff-len-resume-receiver
exec mkdir $testdir/$name
catch "exec dd if=$srcdir/../src/lrz.c of=$testdir/$name/lrz.c conv=notrunc bs=256 count=81"
set fails [runthem_internal $name "$objdir/../src/lsz" "-q --crc-check" \
	$objdir/../src/lrz "-q -r" \
	"$srcdir/../src/lrz.c" "rmdir,compare,delete" dummy]
if {$fails == 0} {
	pass "$name"
	exec rm -rf $testdir/$name
} else {
	fail "$name"
}
unset name fails dummy

exec logger part 9
# Part 9: file exists, different length + crc. try resume (sender)
set name crc-check-diff-len-resume-receiver
exec mkdir $testdir/$name
catch "exec dd if=$srcdir/../src/lrz.c of=$testdir/$name/lrz.c conv=notrunc bs=256 count=81"
catch "exec dd if=$objdir/../src/lrz of=$testdir/$name/lrz.c conv=notrunc bs=512 count=1"
set fails [runthem_internal $name "$objdir/../src/lsz" "-q --crc-check -r" \
	$objdir/../src/lrz "-q" \
	"$srcdir/../src/lrz.c" "rmdir,compare,delete" dummy]
if {$fails == 0} {
	pass "$name"
	exec rm -rf $testdir/$name
} else {
	fail "$name"
}
unset name fails dummy

exec logger part 10
# Part 9: file exists, different crc, same length. try resume (sender)
set name crc-check-diff-crc-resume-receiver
exec mkdir $testdir/$name
catch "exec dd if=$srcdir/../src/lrz.c of=$testdir/$name/lrz.c conv=notrunc"
catch "exec dd if=$objdir/../src/lrz of=$testdir/$name/lrz.c conv=notrunc bs=512 count=1"
set fails [runthem_internal $name "$objdir/../src/lsz" "-q --crc-check -r" \
	$objdir/../src/lrz "-q" \
	"$srcdir/../src/lrz.c" "rmdir,compare,delete" dummy]
if {$fails == 0} {
	pass "$name"
	exec rm -rf $testdir/$name
} else {
	fail "$name"
}
unset name fails dummy