]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Test empty files and zero piece length for both file and mmap storage backends
authorMatt Joiner <anacrolix@gmail.com>
Mon, 12 Sep 2016 07:11:32 +0000 (17:11 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 12 Sep 2016 07:11:32 +0000 (17:11 +1000)
torrent_test.go

index f841e7f32d8a2b25bb4704e75f04bc46f76edba5..0cf213ad20982f530455d746f09737c69f48c5ba 100644 (file)
@@ -13,6 +13,7 @@ import (
        "github.com/anacrolix/torrent/bencode"
        "github.com/anacrolix/torrent/metainfo"
        "github.com/anacrolix/torrent/peer_protocol"
+       "github.com/anacrolix/torrent/storage"
 )
 
 func r(i, b, l peer_protocol.Integer) request {
@@ -95,13 +96,19 @@ func BenchmarkUpdatePiecePriorities(b *testing.B) {
        }
 }
 
-func TestEmptyFilesAndZeroPieceLength(t *testing.T) {
+// Check that a torrent containing zero-length file(s) will start, and that
+// they're created in the filesystem. The client storage is assumed to be
+// file-based on the native filesystem based.
+func testEmptyFilesAndZeroPieceLength(t *testing.T, cs storage.ClientImpl) {
+       cfg := TestingConfig
+       cfg.DefaultStorage = cs
        cl, err := NewClient(&TestingConfig)
        require.NoError(t, err)
        defer cl.Close()
        ib, err := bencode.Marshal(metainfo.Info{
-               Name:   "empty",
-               Length: 0,
+               Name:        "empty",
+               Length:      0,
+               PieceLength: 0,
        })
        require.NoError(t, err)
        fp := filepath.Join(TestingConfig.DataDir, "empty")
@@ -116,3 +123,11 @@ func TestEmptyFilesAndZeroPieceLength(t *testing.T) {
        require.True(t, cl.WaitAll())
        assert.True(t, missinggo.FilePathExists(fp))
 }
+
+func TestEmptyFilesAndZeroPieceLengthWithFileStorage(t *testing.T) {
+       testEmptyFilesAndZeroPieceLength(t, storage.NewFile(TestingConfig.DataDir))
+}
+
+func TestEmptyFilesAndZeroPieceLengthWithMMapStorage(t *testing.T) {
+       testEmptyFilesAndZeroPieceLength(t, storage.NewMMap(TestingConfig.DataDir))
+}