]> git.ipfire.org Git - thirdparty/git.git/blob - t/t0095-bloom.sh
6defeb544f1451cb70ea17015af84903774b70ca
[thirdparty/git.git] / t / t0095-bloom.sh
1 #!/bin/sh
2
3 test_description='Testing the various Bloom filter computations in bloom.c'
4 . ./test-lib.sh
5
6 test_expect_success 'compute unseeded murmur3 hash for empty string' '
7 cat >expect <<-\EOF &&
8 Murmur3 Hash with seed=0:0x00000000
9 EOF
10 test-tool bloom get_murmur3 "" >actual &&
11 test_cmp expect actual
12 '
13
14 test_expect_success 'compute unseeded murmur3 hash for test string 1' '
15 cat >expect <<-\EOF &&
16 Murmur3 Hash with seed=0:0x627b0c2c
17 EOF
18 test-tool bloom get_murmur3 "Hello world!" >actual &&
19 test_cmp expect actual
20 '
21
22 test_expect_success 'compute unseeded murmur3 hash for test string 2' '
23 cat >expect <<-\EOF &&
24 Murmur3 Hash with seed=0:0x2e4ff723
25 EOF
26 test-tool bloom get_murmur3 "The quick brown fox jumps over the lazy dog" >actual &&
27 test_cmp expect actual
28 '
29
30 test_expect_success 'compute bloom key for empty string' '
31 cat >expect <<-\EOF &&
32 Hashes:0x5615800c|0x5b966560|0x61174ab4|0x66983008|0x6c19155c|0x7199fab0|0x771ae004|
33 Filter_Length:2
34 Filter_Data:11|11|
35 EOF
36 test-tool bloom generate_filter "" >actual &&
37 test_cmp expect actual
38 '
39
40 test_expect_success 'compute bloom key for whitespace' '
41 cat >expect <<-\EOF &&
42 Hashes:0xf178874c|0x5f3d6eb6|0xcd025620|0x3ac73d8a|0xa88c24f4|0x16510c5e|0x8415f3c8|
43 Filter_Length:2
44 Filter_Data:51|55|
45 EOF
46 test-tool bloom generate_filter " " >actual &&
47 test_cmp expect actual
48 '
49
50 test_expect_success 'compute bloom key for test string 1' '
51 cat >expect <<-\EOF &&
52 Hashes:0xb270de9b|0x1bb6f26e|0x84fd0641|0xee431a14|0x57892de7|0xc0cf41ba|0x2a15558d|
53 Filter_Length:2
54 Filter_Data:92|6c|
55 EOF
56 test-tool bloom generate_filter "Hello world!" >actual &&
57 test_cmp expect actual
58 '
59
60 test_expect_success 'compute bloom key for test string 2' '
61 cat >expect <<-\EOF &&
62 Hashes:0x20ab385b|0xf5237fe2|0xc99bc769|0x9e140ef0|0x728c5677|0x47049dfe|0x1b7ce585|
63 Filter_Length:2
64 Filter_Data:a5|4a|
65 EOF
66 test-tool bloom generate_filter "file.txt" >actual &&
67 test_cmp expect actual
68 '
69
70 test_expect_success 'get bloom filters for commit with no changes' '
71 git init &&
72 git commit --allow-empty -m "c0" &&
73 cat >expect <<-\EOF &&
74 Filter_Length:0
75 Filter_Data:
76 EOF
77 test-tool bloom get_filter_for_commit "$(git rev-parse HEAD)" >actual &&
78 test_cmp expect actual
79 '
80
81 test_expect_success 'get bloom filter for commit with 10 changes' '
82 rm actual &&
83 rm expect &&
84 mkdir smallDir &&
85 for i in $(test_seq 0 9)
86 do
87 echo $i >smallDir/$i
88 done &&
89 git add smallDir &&
90 git commit -m "commit with 10 changes" &&
91 cat >expect <<-\EOF &&
92 Filter_Length:14
93 Filter_Data:02|b3|c4|a0|34|e7|fe|eb|cb|47|fe|a0|e8|72|
94 EOF
95 test-tool bloom get_filter_for_commit "$(git rev-parse HEAD)" >actual &&
96 test_cmp expect actual
97 '
98
99 test_expect_success EXPENSIVE 'get bloom filter for commit with 513 changes' '
100 rm actual &&
101 rm expect &&
102 mkdir bigDir &&
103 for i in $(test_seq 0 512)
104 do
105 echo $i >bigDir/$i
106 done &&
107 git add bigDir &&
108 git commit -m "commit with 513 changes" &&
109 cat >expect <<-\EOF &&
110 Filter_Length:0
111 Filter_Data:
112 EOF
113 test-tool bloom get_filter_for_commit "$(git rev-parse HEAD)" >actual &&
114 test_cmp expect actual
115 '
116
117 test_done