1
// Copyright 2022 The CubeFS Authors.
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
7
// http://www.apache.org/licenses/LICENSE-2.0
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
12
// implied. See the License for the specific language governing
13
// permissions and limitations under the License.
23
"github.com/stretchr/testify/require"
25
"github.com/cubefs/cubefs/blobstore/api/access"
28
func TestAccessStreamPutAtBase(t *testing.T) {
29
ctx := ctxWithName("TestAccessStreamPutAtBase")
30
sumChecker := func(size int, data []byte) {
33
hasherMap := access.HasherMap{
34
access.HashAlgCRC32: access.HashAlgCRC32.ToHasher(),
36
hashSumMap := make(access.HashSumMap, len(hasherMap))
37
err := streamer.PutAt(ctx(), bytes.NewReader(data), clusterID, 1, 10000, int64(size), hasherMap)
39
for alg, hasher := range hasherMap {
40
hashSumMap[alg] = hasher.Sum(nil)
42
require.Equal(t, hashSumMap.GetSumVal(access.HashAlgCRC32), crc32.ChecksumIEEE(data[:size]))
47
err := streamer.PutAt(ctx(), newReader(size), clusterID, 1, 10000, int64(size), nil)
48
require.NotNil(t, err)
53
data := make([]byte, size)
55
sumChecker(size, data)
57
shardSize := getBufSizes(len(data)).ShardSize
58
zeroShard := make([]byte, shardSize)
59
shard1 := make([]byte, shardSize)
62
require.Equal(t, shard1, dataShards.get(1001, 10000))
63
require.Equal(t, zeroShard, dataShards.get(1002, 10000))
64
require.Equal(t, zeroShard, dataShards.get(1004, 10000))
65
require.Equal(t, 0, len(dataShards.get(1005, 10000)))
66
require.NotEqual(t, ([]byte)(nil), dataShards.get(1007, 10000))
71
data := make([]byte, size)
73
sumChecker(size, data)
75
require.Equal(t, 1<<22, len(dataShards.get(1001, 10000)))
80
data := make([]byte, size)
84
shardSize := getBufSizes(1).ShardSize
85
require.Equal(t, shardSize, len(dataShards.get(1001, 10000)))
91
err := streamer.PutAt(ctx(), newReader(size), clusterID, 1, 10000, int64(size)+1, nil)
92
require.NotNil(t, err)
93
require.Equal(t, 0, len(dataShards.get(1001, 10000)))