File: testcases

package info (click to toggle)
buffer 1.19-12.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 548 kB
  • sloc: ansic: 9,288; makefile: 87; sh: 35
file content (72 lines) | stat: -rw-r--r-- 2,278 bytes parent folder | download | duplicates (2)
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
--- a/Makefile
+++ b/Makefile
@@ -44,3 +44,6 @@
 buffer.shar: $(ALL)
 	$(RM) -f buffer.shar
 	shar $(ALL) > buffer.shar
+
+check: buffer
+	bash check.bash
--- /dev/null
+++ b/check.bash
@@ -0,0 +1,60 @@
+#!/bin/bash
+# Very simple test cases to check whether buffer is working properly.
+#
+# Copyright 2014 Martin Buck <mbuck@debian.org>
+#
+# Licensed under GPL version 1 or later, see COPYING.
+
+set -e
+set -o pipefail
+export LC_ALL=C
+
+check_md5() {
+  MD5="$(md5sum | cut -d " " -f 1)"
+  if [ "$MD5" != "$1" ]; then
+    echo "MD5 mismatch: calculated: $MD5, expected: $1" >&2
+    exit 1
+  fi
+}
+
+ddnull() {
+  dd if=/dev/zero "$@" 2>/dev/null
+}
+
+
+echo "Running buffer test cases" >&2
+# Note: We currently only check buffer's output, not other behaviour like timing,
+# seeking etc. (which would be required to properly test -p/-u/-Z)
+
+echo "Test case: 1k*1000" >&2
+ddnull bs=1k count=1000 | ./buffer | check_md5 80ec129d645c70cf0de45b1a5a682235
+
+echo "Test case: 10k*100" >&2
+ddnull  bs=10k count=100 | ./buffer | check_md5 80ec129d645c70cf0de45b1a5a682235
+
+echo "Test case: nothing" >&2
+./buffer < /dev/null | check_md5 d41d8cd98f00b204e9800998ecf8427e
+
+echo "Test case: nothing, blocked" >&2
+./buffer -B -s 512 < /dev/null | check_md5 d41d8cd98f00b204e9800998ecf8427e
+
+echo "Test case: 1 byte, blocked" >&2
+echo -n 1 | ./buffer -B -s 512 | check_md5 c0e6efe9fa094ea2285f45c0b985a031
+
+echo "Test case: 1000 numbers" >&2
+seq 1000 | ./buffer | check_md5 53d025127ae99ab79e8502aae2d9bea6
+
+echo "Test case: progress messages" >&2
+# Use cut to omit the throughput messages because they're not reproducible
+ddnull bs=1k count=1000 | ./buffer -t -z 100k 2>&1 >/dev/null | strings -a | cut -d , -f 1 | check_md5 7ef53b8db68f3aa04370b248dc5bf84b
+
+echo "Test case: 1k*1000 starting after 70% fill" >&2
+ddnull bs=1k count=1000 | ./buffer -p 70 | check_md5 80ec129d645c70cf0de45b1a5a682235
+
+echo "Test case: 1k*1000 with sleep" >&2
+ddnull bs=1k count=1000 | ./buffer -s 1024 -u 1000 | check_md5 80ec129d645c70cf0de45b1a5a682235
+
+echo "Test case: 1k*1000 infile/outfile" >&2
+ddnull bs=1k count=1000 | ./buffer -i /dev/stdin -o /dev/stdout | check_md5 80ec129d645c70cf0de45b1a5a682235
+
+echo "Buffer test cases completed successfully" >&2