diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-06-25 16:36:06 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-06-25 16:36:06 -0700 |
| commit | 212c64241b44c5149eee835f620734b2e9312faf (patch) | |
| tree | 66d2701de88234e00e8925b57b957e884d1b0951 /weed/storage/erasure_coding/ec_volume_test.go | |
| parent | a4dc25cd221509166ede23ce5ba31216b0677c5d (diff) | |
| download | seaweedfs-212c64241b44c5149eee835f620734b2e9312faf.tar.xz seaweedfs-212c64241b44c5149eee835f620734b2e9312faf.zip | |
checking ecx file
Diffstat (limited to 'weed/storage/erasure_coding/ec_volume_test.go')
| -rw-r--r-- | weed/storage/erasure_coding/ec_volume_test.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/weed/storage/erasure_coding/ec_volume_test.go b/weed/storage/erasure_coding/ec_volume_test.go new file mode 100644 index 000000000..66be2b997 --- /dev/null +++ b/weed/storage/erasure_coding/ec_volume_test.go @@ -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) + } + +} |
