mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-05 23:46:56 +00:00
53 lines
1.4 KiB
Go
53 lines
1.4 KiB
Go
package generate
|
|
|
|
import (
|
|
"encoding/json"
|
|
"reflect"
|
|
"testing"
|
|
"time"
|
|
|
|
v1 "github.com/nirmata/kyverno/pkg/api/kyverno/v1"
|
|
)
|
|
|
|
func Test_Stats(t *testing.T) {
|
|
testCase := struct {
|
|
generatedSyncStats []generateSyncStats
|
|
expectedOutput []byte
|
|
existingStatus map[string]v1.PolicyStatus
|
|
}{
|
|
expectedOutput: []byte(`{"policy1":{"resourcesGeneratedCount":2,"ruleStatus":[{"ruleName":"rule1","averageExecutionTime":"23ns","resourcesGeneratedCount":1},{"ruleName":"rule2","averageExecutionTime":"44ns","resourcesGeneratedCount":1},{"ruleName":"rule3"}]}}`),
|
|
generatedSyncStats: []generateSyncStats{
|
|
{
|
|
policyName: "policy1",
|
|
ruleNameToProcessingTime: map[string]time.Duration{
|
|
"rule1": time.Nanosecond * 23,
|
|
"rule2": time.Nanosecond * 44,
|
|
},
|
|
},
|
|
},
|
|
existingStatus: map[string]v1.PolicyStatus{
|
|
"policy1": {
|
|
Rules: []v1.RuleStats{
|
|
{
|
|
Name: "rule1",
|
|
},
|
|
{
|
|
Name: "rule2",
|
|
},
|
|
{
|
|
Name: "rule3",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, generateSyncStat := range testCase.generatedSyncStats {
|
|
testCase.existingStatus[generateSyncStat.PolicyName()] = generateSyncStat.UpdateStatus(testCase.existingStatus[generateSyncStat.PolicyName()])
|
|
}
|
|
|
|
output, _ := json.Marshal(testCase.existingStatus)
|
|
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))
|
|
}
|
|
}
|