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
|
package dedup
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func wasVisited(d *dedupFiles, dev, ino uint64) bool {
d.lock.Lock()
defer d.lock.Unlock()
di := deviceInodePair{
dev: dev,
ino: ino,
}
_, visited := d.visitedInodes[di]
return visited
}
func TestRecordAndCheckInode(t *testing.T) {
d, err := newDedupFiles()
if err == errNotSupported {
t.Skip("dedupFiles is not supported on this platform")
}
require.NoError(t, err)
ino := uint64(1)
firstDevice := uint64(100101)
anotherIno := uint64(2)
anotherDevice := uint64(100102)
visited := wasVisited(d, firstDevice, ino)
assert.False(t, visited)
visited, err = d.recordInode(firstDevice, ino)
assert.NoError(t, err)
assert.False(t, visited)
visited = wasVisited(d, firstDevice, ino)
assert.True(t, visited)
visited, err = d.recordInode(firstDevice, ino)
assert.NoError(t, err)
assert.True(t, visited)
visited = wasVisited(d, firstDevice, anotherIno)
assert.False(t, visited)
visited = wasVisited(d, firstDevice, anotherIno)
assert.False(t, visited)
visited = wasVisited(d, anotherDevice, anotherIno)
assert.False(t, visited)
}
|