1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-07 00:17:13 +00:00
kyverno/pkg/generate/policyStatus_test.go

54 lines
1.4 KiB
Go
Raw Normal View History

2020-02-29 22:39:27 +05:30
package generate
import (
"encoding/json"
"reflect"
"testing"
"time"
2020-02-29 22:39:27 +05:30
v1 "github.com/kyverno/kyverno/pkg/api/kyverno/v1"
2020-02-29 22:39:27 +05:30
)
func Test_Stats(t *testing.T) {
testCase := struct {
generatedSyncStats []generateSyncStats
expectedOutput []byte
existingStatus map[string]v1.PolicyStatus
2020-02-29 22:39:27 +05:30
}{
2020-04-13 20:26:46 +05:30
expectedOutput: []byte(`{"policy1":{"resourcesGeneratedCount":2,"ruleStatus":[{"ruleName":"rule1","averageExecutionTime":"23ns","resourcesGeneratedCount":1},{"ruleName":"rule2","averageExecutionTime":"44ns","resourcesGeneratedCount":1},{"ruleName":"rule3"}]}}`),
generatedSyncStats: []generateSyncStats{
2020-02-29 22:39:27 +05:30
{
policyName: "policy1",
ruleNameToProcessingTime: map[string]time.Duration{
"rule1": time.Nanosecond * 23,
"rule2": time.Nanosecond * 44,
2020-02-29 22:39:27 +05:30
},
},
},
existingStatus: map[string]v1.PolicyStatus{
"policy1": {
Rules: []v1.RuleStats{
{
Name: "rule1",
},
{
Name: "rule2",
},
{
Name: "rule3",
},
2020-02-29 22:39:27 +05:30
},
},
},
}
for _, generateSyncStat := range testCase.generatedSyncStats {
testCase.existingStatus[generateSyncStat.PolicyName()] = generateSyncStat.UpdateStatus(testCase.existingStatus[generateSyncStat.PolicyName()])
2020-02-29 22:39:27 +05:30
}
output, _ := json.Marshal(testCase.existingStatus)
2020-02-29 22:39:27 +05:30
if !reflect.DeepEqual(output, testCase.expectedOutput) {
t.Errorf("\n\nTestcase has failed\nExpected:\n%v\nGot:\n%v\n\n", string(testCase.expectedOutput), string(output))
}
}