talos

Форк
0
/
poll_test.go 
79 строк · 1.7 Кб
1
// This Source Code Form is subject to the terms of the Mozilla Public
2
// License, v. 2.0. If a copy of the MPL was not distributed with this
3
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
4

5
package conditions_test
6

7
import (
8
	"context"
9
	"errors"
10
	"testing"
11
	"time"
12

13
	"github.com/stretchr/testify/assert"
14

15
	"github.com/siderolabs/talos/pkg/conditions"
16
)
17

18
func TestPollingCondition(t *testing.T) {
19
	t.Parallel()
20

21
	t.Run("OK", func(t *testing.T) {
22
		t.Parallel()
23

24
		var calls int
25

26
		cond := conditions.PollingCondition("Test condition", func(ctx context.Context) error {
27
			calls++
28

29
			if calls < 2 {
30
				return errors.New("failed")
31
			}
32

33
			return nil
34
		}, time.Second, time.Millisecond)
35

36
		err := cond.Wait(context.Background())
37
		assert.NoError(t, err)
38
		assert.Equal(t, "Test condition: OK", cond.String())
39
		assert.Equal(t, 2, calls)
40
	})
41

42
	t.Run("Skip", func(t *testing.T) {
43
		t.Parallel()
44

45
		var calls int
46

47
		cond := conditions.PollingCondition("Test condition", func(ctx context.Context) error {
48
			calls++
49

50
			if calls < 2 {
51
				return errors.New("failed")
52
			}
53

54
			return conditions.ErrSkipAssertion
55
		}, time.Second, time.Millisecond)
56

57
		err := cond.Wait(context.Background())
58
		assert.NoError(t, err)
59
		assert.Equal(t, "Test condition: SKIP", cond.String())
60
		assert.Equal(t, 2, calls)
61
	})
62

63
	t.Run("Fatal", func(t *testing.T) {
64
		t.Parallel()
65

66
		var calls int
67

68
		cond := conditions.PollingCondition("Test condition", func(ctx context.Context) error {
69
			calls++
70

71
			return errors.New("failed")
72
		}, time.Second, 750*time.Millisecond)
73

74
		err := cond.Wait(context.Background())
75
		assert.Equal(t, context.DeadlineExceeded, err)
76
		assert.Equal(t, "Test condition: failed", cond.String())
77
		assert.Equal(t, 2, calls)
78
	})
79
}
80

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

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

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

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