cubefs

Форк
0
/
config_test.go 
97 строк · 2.6 Кб
1
// Copyright 2022 The CubeFS Authors.
2
//
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
6
//
7
//     http://www.apache.org/licenses/LICENSE-2.0
8
//
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.
14

15
package scheduler
16

17
import (
18
	"errors"
19
	"testing"
20

21
	"github.com/Shopify/sarama"
22
	"github.com/stretchr/testify/require"
23

24
	"github.com/cubefs/cubefs/blobstore/common/kafka"
25
)
26

27
func TestConfigCheckAndFix(t *testing.T) {
28
	cfg := &Config{}
29
	err := cfg.fixConfig()
30
	require.Error(t, err, errIllegalClusterID.Error())
31

32
	cfg.ClusterID = 1
33
	err = cfg.fixConfig()
34
	require.Error(t, err, errInvalidMembers)
35

36
	cfg.Services.Members = map[uint64]string{1: "127.0.0.1:9800"}
37
	err = cfg.fixConfig()
38
	require.Error(t, err, errInvalidLeader)
39

40
	cfg.Services.Leader = 1
41
	err = cfg.fixConfig()
42
	require.Error(t, err, errInvalidNodeID)
43

44
	cfg.Services.NodeID = 1
45
	cfg.Kafka.Version = "v2.3.aa"
46
	err = cfg.fixConfig()
47
	require.Error(t, err, errInvalidKafka)
48

49
	cfg.Kafka.Version = "0.10.0.0"
50
	err = cfg.fixConfig() // ok
51
	require.NoError(t, err)
52

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])
63

64
	cfg.Services.NodeID = 1
65
	cfg.BlobDelete.SafeDelayTimeH = -1
66
	err = cfg.fixConfig()
67
	require.NoError(t, err)
68
	require.Equal(t, defaultDeleteNoDelay, cfg.BlobDelete.SafeDelayTimeH)
69
	require.Equal(t, defaultDeleteHourRangeTo, cfg.BlobDelete.DeleteHourRange.To)
70

71
	testCases := []struct {
72
		hourRange HourRange
73
		err       error
74
	}{
75
		{
76
			hourRange: HourRange{From: 1, To: 0},
77
			err:       errInvalidHourRange,
78
		},
79
		{
80
			hourRange: HourRange{From: 1, To: 25},
81
			err:       errInvalidHourRange,
82
		},
83
		{
84
			hourRange: HourRange{From: -2, To: -1},
85
			err:       errInvalidHourRange,
86
		},
87
		{
88
			hourRange: HourRange{From: 25, To: 26},
89
			err:       errInvalidHourRange,
90
		},
91
	}
92
	for _, test := range testCases {
93
		cfg.BlobDelete.DeleteHourRange = test.hourRange
94
		err = cfg.fixConfig()
95
		require.True(t, errors.Is(err, test.err))
96
	}
97
}
98

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.