feat: add unit tests for job label generation methods
This commit is contained in:
parent
4480de779b
commit
e0a0eb256f
|
|
@ -4,6 +4,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/actions/actions-runner-controller/apis/actions.github.com/v1alpha1"
|
||||
"github.com/actions/actions-runner-controller/github/actions"
|
||||
"github.com/go-logr/logr"
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
|
@ -263,3 +264,93 @@ func TestExporterConfigDefaults(t *testing.T) {
|
|||
|
||||
assert.Equal(t, want, config)
|
||||
}
|
||||
|
||||
func TestCompletedJobAllLabels(t *testing.T) {
|
||||
config := ExporterConfig{
|
||||
ScaleSetName: "test-scale-set",
|
||||
ScaleSetNamespace: "test-namespace",
|
||||
Enterprise: "",
|
||||
Organization: "org",
|
||||
Repository: "repo",
|
||||
ServerAddr: "",
|
||||
ServerEndpoint: "",
|
||||
Logger: logr.Discard(),
|
||||
Metrics: nil, // when metrics is nil, all default metrics should be registered
|
||||
}
|
||||
|
||||
exporter, ok := NewExporter(config).(*exporter)
|
||||
require.True(t, ok, "expected exporter to be of type *exporter")
|
||||
require.NotNil(t, exporter)
|
||||
|
||||
jobMessage := &actions.JobCompleted{
|
||||
JobMessageBase: actions.JobMessageBase{
|
||||
RepositoryName: "repo",
|
||||
OwnerName: "org",
|
||||
EventName: "",
|
||||
JobDisplayName: "test-job",
|
||||
JobWorkflowRef: "org/repo/.github/workflows/test.yml",
|
||||
},
|
||||
Result: "success",
|
||||
RunnerId: 1,
|
||||
RunnerName: "runner1",
|
||||
}
|
||||
|
||||
labels := exporter.completedJobLabels(jobMessage)
|
||||
|
||||
want := prometheus.Labels{
|
||||
labelKeyEnterprise: "",
|
||||
labelKeyRepository: "repo",
|
||||
labelKeyJobName: "test-job",
|
||||
labelKeyOrganization: "org",
|
||||
labelKeyEventName: "",
|
||||
labelKeyJobWorkflowRef: "org/repo/.github/workflows/test.yml",
|
||||
labelKeyJobResult: "success",
|
||||
labelKeyRunnerName: "runner1",
|
||||
}
|
||||
|
||||
assert.Equal(t, want, labels)
|
||||
}
|
||||
|
||||
func TestStartedJobAllLabels(t *testing.T) {
|
||||
config := ExporterConfig{
|
||||
ScaleSetName: "test-scale-set",
|
||||
ScaleSetNamespace: "test-namespace",
|
||||
Enterprise: "",
|
||||
Organization: "org",
|
||||
Repository: "repo",
|
||||
ServerAddr: "",
|
||||
ServerEndpoint: "",
|
||||
Logger: logr.Discard(),
|
||||
Metrics: nil, // when metrics is nil, all default metrics should be registered
|
||||
}
|
||||
|
||||
exporter, ok := NewExporter(config).(*exporter)
|
||||
require.True(t, ok, "expected exporter to be of type *exporter")
|
||||
require.NotNil(t, exporter)
|
||||
|
||||
jobMessage := &actions.JobStarted{
|
||||
JobMessageBase: actions.JobMessageBase{
|
||||
RepositoryName: "repo",
|
||||
OwnerName: "org",
|
||||
EventName: "",
|
||||
JobDisplayName: "test-job",
|
||||
JobWorkflowRef: "org/repo/.github/workflows/test.yml",
|
||||
},
|
||||
RunnerId: 1,
|
||||
RunnerName: "runner1",
|
||||
}
|
||||
|
||||
labels := exporter.startedJobLabels(jobMessage)
|
||||
|
||||
want := prometheus.Labels{
|
||||
labelKeyEnterprise: "",
|
||||
labelKeyRepository: "repo",
|
||||
labelKeyJobName: "test-job",
|
||||
labelKeyOrganization: "org",
|
||||
labelKeyEventName: "",
|
||||
labelKeyJobWorkflowRef: "org/repo/.github/workflows/test.yml",
|
||||
labelKeyRunnerName: "runner1",
|
||||
}
|
||||
|
||||
assert.Equal(t, want, labels)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue