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.
21
"github.com/Shopify/sarama"
22
"github.com/stretchr/testify/require"
24
"github.com/cubefs/cubefs/blobstore/common/kafka"
27
func TestConfigCheckAndFix(t *testing.T) {
29
err := cfg.fixConfig()
30
require.Error(t, err, errIllegalClusterID.Error())
34
require.Error(t, err, errInvalidMembers)
36
cfg.Services.Members = map[uint64]string{1: "127.0.0.1:9800"}
38
require.Error(t, err, errInvalidLeader)
40
cfg.Services.Leader = 1
42
require.Error(t, err, errInvalidNodeID)
44
cfg.Services.NodeID = 1
45
cfg.Kafka.Version = "v2.3.aa"
47
require.Error(t, err, errInvalidKafka)
49
cfg.Kafka.Version = "0.10.0.0"
50
err = cfg.fixConfig() // ok
51
require.NoError(t, err)
53
cfg.Kafka.Version = "2.1.0"
54
err = cfg.fixConfig() // ok
55
require.NoError(t, err)
56
require.True(t, cfg.IsLeader())
57
require.Equal(t, "127.0.0.1:9800", cfg.Leader())
58
require.Nil(t, cfg.Follower())
59
require.Equal(t, defaultDeleteDelayH, cfg.BlobDelete.SafeDelayTimeH)
60
require.Equal(t, sarama.V2_1_0_0, kafka.DefaultKafkaVersion)
61
cfg.Services.Members[2] = "127.0.0.1:9880"
62
require.Equal(t, "127.0.0.1:9880", cfg.Follower()[0])
64
cfg.Services.NodeID = 1
65
cfg.BlobDelete.SafeDelayTimeH = -1
67
require.NoError(t, err)
68
require.Equal(t, defaultDeleteNoDelay, cfg.BlobDelete.SafeDelayTimeH)
69
require.Equal(t, defaultDeleteHourRangeTo, cfg.BlobDelete.DeleteHourRange.To)
71
testCases := []struct {
76
hourRange: HourRange{From: 1, To: 0},
77
err: errInvalidHourRange,
80
hourRange: HourRange{From: 1, To: 25},
81
err: errInvalidHourRange,
84
hourRange: HourRange{From: -2, To: -1},
85
err: errInvalidHourRange,
88
hourRange: HourRange{From: 25, To: 26},
89
err: errInvalidHourRange,
92
for _, test := range testCases {
93
cfg.BlobDelete.DeleteHourRange = test.hourRange
95
require.True(t, errors.Is(err, test.err))