123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- 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)
- }
- }
|