tetragon

Форк
0
/
policystatemetrics_test.go 
59 строк · 2.1 Кб
1
// SPDX-License-Identifier: Apache-2.0
2
// Copyright Authors of Tetragon
3

4
package policystatemetrics
5

6
import (
7
	"context"
8
	"fmt"
9
	"io"
10
	"strings"
11
	"testing"
12

13
	"github.com/cilium/tetragon/pkg/observer"
14
	tus "github.com/cilium/tetragon/pkg/testutils/sensors"
15
	"github.com/cilium/tetragon/pkg/tracingpolicy"
16
	"github.com/prometheus/client_golang/prometheus"
17
	"github.com/prometheus/client_golang/prometheus/testutil"
18
	"github.com/stretchr/testify/assert"
19
	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
20
)
21

22
func Test_policyStatusCollector_Collect(t *testing.T) {
23
	expectedMetrics := func(disabled, enabled, err, load_error int) io.Reader {
24
		return strings.NewReader(fmt.Sprintf(`# HELP tetragon_tracingpolicy_loaded The number of loaded tracing policy by state.
25
# TYPE tetragon_tracingpolicy_loaded gauge
26
tetragon_tracingpolicy_loaded{state="disabled"} %d
27
tetragon_tracingpolicy_loaded{state="enabled"} %d
28
tetragon_tracingpolicy_loaded{state="error"} %d
29
tetragon_tracingpolicy_loaded{state="load_error"} %d
30
`, disabled, enabled, err, load_error))
31
	}
32

33
	reg := prometheus.NewRegistry()
34

35
	// NB(kkourt): the policy state collector uses observer.GetSensorManager() to get the sensor
36
	// manager because in the observer tests we only initialize metrics while the observer
37
	// changes for every test (see:
38
	// https://github.com/cilium/tetragon/blob/22eb995b19207ac0ced2dd83950ec8e8aedd122d/pkg/observer/observertesthelper/observer_test_helper.go#L272-L276)
39
	manager := tus.GetTestSensorManager(context.TODO(), t).Manager
40
	observer.SetSensorManager(manager)
41
	t.Cleanup(observer.ResetSensorManager)
42

43
	collector := newPolicyStateCollector()
44
	reg.Register(collector)
45

46
	err := manager.AddTracingPolicy(context.TODO(), &tracingpolicy.GenericTracingPolicy{
47
		Metadata: v1.ObjectMeta{
48
			Name: "pizza",
49
		},
50
	})
51
	assert.NoError(t, err)
52
	err = testutil.CollectAndCompare(collector, expectedMetrics(0, 1, 0, 0))
53
	assert.NoError(t, err)
54

55
	err = manager.DisableTracingPolicy(context.TODO(), "pizza", "")
56
	assert.NoError(t, err)
57
	err = testutil.CollectAndCompare(collector, expectedMetrics(1, 0, 0, 0))
58
	assert.NoError(t, err)
59
}
60

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

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

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

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