7121: Return DiskHashError instead of CollisionError from Compare() where appropriate.
[arvados.git] / services / keepstore / collision_test.go
1 package main
2
3 import (
4         "bytes"
5         "testing"
6         "testing/iotest"
7
8         check "gopkg.in/check.v1"
9 )
10
11 // Gocheck boilerplate
12 func Test(t *testing.T) {
13         check.TestingT(t)
14 }
15
16 var _ = check.Suite(&CollisionSuite{})
17
18 type CollisionSuite struct{}
19
20 func (s *CollisionSuite) TestCollisionOrCorrupt(c *check.C) {
21         fooMD5 := "acbd18db4cc2f85cedef654fccc4a4d8"
22
23         c.Check(collisionOrCorrupt(fooMD5, []byte{'f'}, []byte{'o'}, bytes.NewBufferString("o")),
24                 check.Equals, CollisionError)
25         c.Check(collisionOrCorrupt(fooMD5, []byte{'f'}, nil, bytes.NewBufferString("oo")),
26                 check.Equals, CollisionError)
27         c.Check(collisionOrCorrupt(fooMD5, []byte{'f'}, []byte{'o', 'o'}, nil),
28                 check.Equals, CollisionError)
29         c.Check(collisionOrCorrupt(fooMD5, nil, []byte{}, bytes.NewBufferString("foo")),
30                 check.Equals, CollisionError)
31         c.Check(collisionOrCorrupt(fooMD5, []byte{'f', 'o', 'o'}, nil, bytes.NewBufferString("")),
32                 check.Equals, CollisionError)
33         c.Check(collisionOrCorrupt(fooMD5, nil, nil, iotest.NewReadLogger("foo: ", iotest.DataErrReader(iotest.OneByteReader(bytes.NewBufferString("foo"))))),
34                 check.Equals, CollisionError)
35
36         c.Check(collisionOrCorrupt(fooMD5, []byte{'f', 'o', 'o'}, nil, bytes.NewBufferString("bar")),
37                 check.Equals, DiskHashError)
38         c.Check(collisionOrCorrupt(fooMD5, []byte{'f', 'o'}, nil, nil),
39                 check.Equals, DiskHashError)
40         c.Check(collisionOrCorrupt(fooMD5, []byte{}, nil, bytes.NewBufferString("")),
41                 check.Equals, DiskHashError)
42
43         c.Check(collisionOrCorrupt(fooMD5, []byte{}, nil, iotest.TimeoutReader(iotest.OneByteReader(bytes.NewBufferString("foo")))),
44                 check.Equals, iotest.ErrTimeout)
45 }