tetragon

Форк
0
/
delayed_sensor_test.go 
73 строки · 1.4 Кб
1
// SPDX-License-Identifier: Apache-2.0
2
// Copyright Authors of Tetragon
3

4
package sensors
5

6
import (
7
	"fmt"
8
	"testing"
9
	"time"
10
)
11

12
// A sensor to test the intermediate policy states (loading / unloading)
13

14
func makeTestDelayedSensor(t *testing.T) *TestDelayedSensor {
15
	s := &TestDelayedSensor{
16
		name:   "test-delayed-sensor",
17
		loaded: false,
18
		ch:     make(chan struct{}),
19
	}
20
	RegisterPolicyHandlerAtInit("dummy-policyhandler", &dummyHandler{s: s})
21
	t.Cleanup(func() {
22
		delete(registeredPolicyHandlers, "dummy-policyhandler")
23
	})
24

25
	return s
26
}
27

28
type TestDelayedSensor struct {
29
	name   string
30
	loaded bool
31
	ch     chan struct{}
32
}
33

34
func (tds *TestDelayedSensor) GetName() string {
35
	return tds.name
36
}
37

38
func (tds *TestDelayedSensor) IsLoaded() bool {
39
	return tds.loaded
40
}
41

42
func (tds *TestDelayedSensor) Load(_ string) error {
43
	select {
44
	case <-tds.ch:
45
	case <-time.After(10 * time.Second):
46
		return fmt.Errorf("TestDelayedSensor/Load timeout when waiting for unblocking")
47
	}
48
	tds.loaded = true
49
	return nil
50
}
51

52
func (tds *TestDelayedSensor) Unload() error {
53
	select {
54
	case <-tds.ch:
55
	case <-time.After(10 * time.Second):
56
		return fmt.Errorf("TestDelayedSensor/Unload timeout when waiting for unblocking")
57
	}
58
	tds.loaded = false
59
	return nil
60
}
61

62
func (tds *TestDelayedSensor) Destroy() {
63
	tds.loaded = false
64
}
65

66
func (tds *TestDelayedSensor) unblock(t *testing.T) {
67
	select {
68
	case tds.ch <- struct{}{}:
69
	default:
70
		t.Fatalf("unblocked failed: channel does not seem to be empty")
71
	}
72

73
}
74

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

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

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

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