@@ -41,24 +41,49 @@ test_expect_success 'unload kvs' '
4141'
4242test_expect_success ' flux-fsck works' '
4343 flux fsck 2> simple.out &&
44- grep "Checking integrity" simple.out &&
45- grep "Total errors: 0" simple.out
44+ grep "Checking integrity" simple.out &&
45+ grep "Total errors: 0" simple.out
4646'
4747test_expect_success ' flux-fsck verbose works' '
4848 flux fsck --verbose 2> verbose.out &&
4949 grep "dir\.a" verbose.out &&
5050 grep "dir\.b" verbose.out &&
5151 grep "alink" verbose.out
5252'
53+ # Cover value with a very large number of appends
54+ # N.B. from 1000 to 3000 instead of 0 to 2000, easier to debug errors
55+ # using fold(1) (i.e. all numbers same width)
56+ test_expect_success LONGTEST ' load kvs and create some kvs content' '
57+ flux module load kvs &&
58+ for i in `seq 1000 3000`; do
59+ flux kvs put --append bigval=${i}
60+ done &&
61+ flux kvs get bigval > bigval.exp
62+ '
63+ test_expect_success LONGTEST ' call sync to ensure we have checkpointed' '
64+ flux kvs sync
65+ '
66+ test_expect_success LONGTEST ' unload kvs' '
67+ flux module remove kvs
68+ '
69+ test_expect_success LONGTEST ' flux-fsck works' '
70+ flux fsck --verbose 2> bigval.out &&
71+ grep "Checking integrity" bigval.out &&
72+ grep "bigval" bigval.out &&
73+ grep "Total errors: 0" bigval.out
74+ '
5375test_expect_success ' load kvs' '
5476 flux module load kvs
5577'
5678# unfortunately we don't have a `flux content remove` command, so we'll corrupt
5779# a valref by overwriting a treeobj with a bad reference
5880test_expect_success ' make a reference invalid' '
59- cat dirb.out | jq -c .data[2 ]=\"sha1-1234567890123456789012345678901234567890\" > dirbbad.out &&
81+ cat dirb.out | jq -c .data[1 ]=\"sha1-1234567890123456789012345678901234567890\" > dirbbad.out &&
6082 flux kvs put --treeobj dir.b="$(cat dirbbad.out)"
6183'
84+ test_expect_success ' call sync to ensure we have checkpointed' '
85+ flux kvs sync
86+ '
6287test_expect_success ' unload kvs' '
6388 flux module remove kvs
6489'
@@ -67,8 +92,13 @@ test_expect_success 'flux-fsck detects errors' '
6792 test_must_fail flux fsck 2> fsckerrors1.out &&
6893 count=$(cat fsckerrors1.out | wc -l) &&
6994 test $count -eq 3 &&
70- grep "dir\.b" fsckerrors1.out | grep "missing blobref" &&
71- grep "Total errors: 1" fsckerrors1.out
95+ grep "dir\.b" fsckerrors1.out | grep "missing blobref(s)" &&
96+ grep "Total errors: 1" fsckerrors1.out
97+ '
98+ test_expect_success ' flux-fsck --verbose outputs details' '
99+ test_must_fail flux fsck --verbose 2> fsckerrors1V.out &&
100+ grep "dir\.b" fsckerrors1V.out | grep "missing blobref" | grep "index=1" &&
101+ grep "Total errors: 1" fsckerrors1V.out
72102'
73103test_expect_success ' flux-fsck no output with --quiet' '
74104 test_must_fail flux fsck --quiet 2> fsckerrors2.out &&
@@ -79,8 +109,12 @@ test_expect_success 'load kvs' '
79109 flux module load kvs
80110'
81111test_expect_success ' make a reference invalid' '
82- cat dirc.out | jq -c .data[2]=\"sha1-1234567890123456789012345678901234567890\" > dircbad.out &&
83- flux kvs put --treeobj dir.c="$(cat dircbad.out)"
112+ cat dirc.out | jq -c .data[1]=\"sha1-1234567890123456789012345678901234567890\" > dircbad1.out &&
113+ cat dircbad1.out | jq -c .data[2]=\"sha1-1234567890123456789012345678901234567890\" > dircbad2.out &&
114+ flux kvs put --treeobj dir.c="$(cat dircbad2.out)"
115+ '
116+ test_expect_success ' call sync to ensure we have checkpointed' '
117+ flux kvs sync
84118'
85119test_expect_success ' unload kvs' '
86120 flux module remove kvs
@@ -90,9 +124,16 @@ test_expect_success 'flux-fsck detects errors' '
90124 test_must_fail flux fsck 2> fsckerrors3.out &&
91125 count=$(cat fsckerrors3.out | wc -l) &&
92126 test $count -eq 4 &&
93- grep "dir\.b" fsckerrors3.out | grep "missing blobref" &&
94- grep "dir\.c" fsckerrors3.out | grep "missing blobref" &&
95- grep "Total errors: 2" fsckerrors3.out
127+ grep "dir\.b" fsckerrors3.out | grep "missing blobref(s)" &&
128+ grep "dir\.c" fsckerrors3.out | grep "missing blobref(s)" &&
129+ grep "Total errors: 2" fsckerrors3.out
130+ '
131+ test_expect_success ' flux-fsck --verbose outputs details' '
132+ test_must_fail flux fsck --verbose 2> fsckerrors3V.out &&
133+ grep "dir\.b" fsckerrors3V.out | grep "missing blobref" | grep "index=1" &&
134+ grep "dir\.c" fsckerrors3V.out | grep "missing blobref" | grep "index=1" &&
135+ grep "dir\.c" fsckerrors3V.out | grep "missing blobref" | grep "index=2" &&
136+ grep "Total errors: 2" fsckerrors3V.out
96137'
97138test_expect_success ' flux-fsck no output with --quiet' '
98139 test_must_fail flux fsck --quiet 2> fsckerrors4.out &&
0 commit comments