mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
checking ecx file
This commit is contained in:
parent
a4dc25cd22
commit
212c64241b
BIN
weed/storage/erasure_coding/389.ecx
Normal file
BIN
weed/storage/erasure_coding/389.ecx
Normal file
Binary file not shown.
54
weed/storage/erasure_coding/ec_volume_test.go
Normal file
54
weed/storage/erasure_coding/ec_volume_test.go
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
package erasure_coding
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/storage/needle"
|
||||||
|
"github.com/chrislusf/seaweedfs/weed/storage/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPositioning(t *testing.T) {
|
||||||
|
|
||||||
|
ecxFile, err := os.OpenFile("389.ecx", os.O_RDONLY, 0)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("failed to open ecx file: %v", err)
|
||||||
|
}
|
||||||
|
defer ecxFile.Close()
|
||||||
|
|
||||||
|
stat, _ := ecxFile.Stat()
|
||||||
|
fileSize := stat.Size()
|
||||||
|
|
||||||
|
tests := []struct {
|
||||||
|
needleId string
|
||||||
|
offset int64
|
||||||
|
size int
|
||||||
|
}{
|
||||||
|
{needleId: "0f0edb92", offset: 31300679656, size: 1167},
|
||||||
|
{needleId: "0ef7d7f8", offset: 11513014944, size: 66044},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
needleId, _ := types.ParseNeedleId(test.needleId)
|
||||||
|
offset, size, err := SearchNeedleFromSortedIndex(ecxFile, fileSize, needleId, nil)
|
||||||
|
assert.Equal(t, nil, err, "SearchNeedleFromSortedIndex")
|
||||||
|
fmt.Printf("offset: %d size: %d\n", offset.ToAcutalOffset(), size)
|
||||||
|
}
|
||||||
|
|
||||||
|
needleId, _ := types.ParseNeedleId("0f087622")
|
||||||
|
offset, size, err := SearchNeedleFromSortedIndex(ecxFile, fileSize, needleId, nil)
|
||||||
|
assert.Equal(t, nil, err, "SearchNeedleFromSortedIndex")
|
||||||
|
fmt.Printf("offset: %d size: %d\n", offset.ToAcutalOffset(), size)
|
||||||
|
|
||||||
|
var shardEcdFileSize int64 = 1118830592 // 1024*1024*1024*3
|
||||||
|
intervals := LocateData(ErasureCodingLargeBlockSize, ErasureCodingSmallBlockSize, DataShardsCount*shardEcdFileSize, offset.ToAcutalOffset(), uint32(needle.GetActualSize(size, needle.CurrentVersion)))
|
||||||
|
|
||||||
|
for _, interval := range intervals {
|
||||||
|
shardId, shardOffset := interval.ToShardIdAndOffset(ErasureCodingLargeBlockSize, ErasureCodingSmallBlockSize)
|
||||||
|
fmt.Printf("interval: %+v, shardId: %d, shardOffset: %d\n", interval, shardId, shardOffset)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue