Add test that dirty chunks are cleared on piece hash failure

This commit is contained in:
Matt Joiner 2016-12-06 15:41:08 +11:00
parent ebbd555e7b
commit c8dffdbb11
1 changed files with 17 additions and 0 deletions

View File

@ -11,6 +11,7 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/anacrolix/torrent/bencode" "github.com/anacrolix/torrent/bencode"
"github.com/anacrolix/torrent/internal/testutil"
"github.com/anacrolix/torrent/metainfo" "github.com/anacrolix/torrent/metainfo"
"github.com/anacrolix/torrent/peer_protocol" "github.com/anacrolix/torrent/peer_protocol"
"github.com/anacrolix/torrent/storage" "github.com/anacrolix/torrent/storage"
@ -131,3 +132,19 @@ func TestEmptyFilesAndZeroPieceLengthWithFileStorage(t *testing.T) {
func TestEmptyFilesAndZeroPieceLengthWithMMapStorage(t *testing.T) { func TestEmptyFilesAndZeroPieceLengthWithMMapStorage(t *testing.T) {
testEmptyFilesAndZeroPieceLength(t, storage.NewMMap(TestingConfig.DataDir)) testEmptyFilesAndZeroPieceLength(t, storage.NewMMap(TestingConfig.DataDir))
} }
func TestPieceHashFailed(t *testing.T) {
mi := testutil.GreetingMetaInfo()
tt := Torrent{
cl: new(Client),
infoHash: mi.HashInfoBytes(),
storageOpener: storage.NewClient(badStorage{}),
chunkSize: 2,
}
require.NoError(t, tt.setInfoBytes(mi.InfoBytes))
tt.pieces[1].DirtyChunks.AddRange(0, 3)
require.True(t, tt.pieceAllDirty(1))
tt.pieceHashed(1, false)
// Dirty chunks should be cleared so we can try again.
require.False(t, tt.pieceAllDirty(1))
}