pass in clock.Clock for better test
Signed-off-by: kit837 <66801824+kit837@users.noreply.github.com>
This commit is contained in:
parent
228168cee9
commit
0f97e6d19d
@ -215,7 +215,7 @@ func buildControllerContext(ctx context.Context, stopCh <-chan struct{}, opts *o
|
||||
SharedInformerFactory: sharedInformerFactory,
|
||||
Namespace: opts.Namespace,
|
||||
Clock: clock.RealClock{},
|
||||
Metrics: metrics.New(log),
|
||||
Metrics: metrics.New(log, clock.RealClock{}),
|
||||
ACMEOptions: controller.ACMEOptions{
|
||||
HTTP01SolverImage: opts.ACMEHTTP01SolverImage,
|
||||
HTTP01SolverResourceRequestCPU: HTTP01SolverResourceRequestCPU,
|
||||
|
||||
@ -114,7 +114,7 @@ func (b *Builder) Init() {
|
||||
b.KubeSharedInformerFactory = kubeinformers.NewSharedInformerFactory(b.Client, informerResyncPeriod)
|
||||
b.SharedInformerFactory = informers.NewSharedInformerFactory(b.CMClient, informerResyncPeriod)
|
||||
b.stopCh = make(chan struct{})
|
||||
b.Metrics = metrics.New(logs.Log)
|
||||
b.Metrics = metrics.New(logs.Log, clock.RealClock{})
|
||||
|
||||
// set the Clock on the context
|
||||
if b.Clock == nil {
|
||||
|
||||
@ -24,6 +24,7 @@ import (
|
||||
|
||||
"github.com/prometheus/client_golang/prometheus/testutil"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/utils/clock"
|
||||
|
||||
cmapi "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1"
|
||||
cmmeta "github.com/jetstack/cert-manager/pkg/apis/meta/v1"
|
||||
@ -125,7 +126,7 @@ func TestCertificateMetrics(t *testing.T) {
|
||||
}
|
||||
for n, test := range tests {
|
||||
t.Run(n, func(t *testing.T) {
|
||||
m := New(logtesting.TestLogger{T: t})
|
||||
m := New(logtesting.TestLogger{T: t}, clock.RealClock{})
|
||||
m.UpdateCertificate(context.TODO(), test.crt)
|
||||
|
||||
if err := testutil.CollectAndCompare(m.certificateExpiryTimeSeconds,
|
||||
@ -146,7 +147,7 @@ func TestCertificateMetrics(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestCertificateCache(t *testing.T) {
|
||||
m := New(logtesting.TestLogger{T: t})
|
||||
m := New(logtesting.TestLogger{T: t}, clock.RealClock{})
|
||||
|
||||
crt1 := gen.Certificate("crt1",
|
||||
gen.SetCertificateUID("uid-1"),
|
||||
|
||||
@ -30,6 +30,7 @@ import (
|
||||
"time"
|
||||
|
||||
logf "github.com/jetstack/cert-manager/pkg/logs"
|
||||
"k8s.io/utils/clock"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
|
||||
@ -65,7 +66,7 @@ type Metrics struct {
|
||||
|
||||
var readyConditionStatuses = [...]cmmeta.ConditionStatus{cmmeta.ConditionTrue, cmmeta.ConditionFalse, cmmeta.ConditionUnknown}
|
||||
|
||||
func New(log logr.Logger) *Metrics {
|
||||
func New(log logr.Logger, c clock.Clock) *Metrics {
|
||||
var (
|
||||
clockTimeSeconds = prometheus.NewCounterFunc(
|
||||
prometheus.CounterOpts{
|
||||
@ -74,7 +75,7 @@ func New(log logr.Logger) *Metrics {
|
||||
Help: "The clock time given in seconds (from 1970/01/01 UTC).",
|
||||
},
|
||||
func() float64 {
|
||||
return float64(time.Now().Unix())
|
||||
return float64(c.Now().Unix())
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@ -25,27 +25,32 @@ import (
|
||||
"github.com/prometheus/client_golang/prometheus/testutil"
|
||||
|
||||
logtesting "github.com/jetstack/cert-manager/pkg/logs/testing"
|
||||
fakeclock "k8s.io/utils/clock/testing"
|
||||
)
|
||||
|
||||
var (
|
||||
fixedClock = fakeclock.NewFakeClock(time.Now())
|
||||
)
|
||||
|
||||
func TestClockMetrics(t *testing.T) {
|
||||
type testT struct {
|
||||
expectedFmt string
|
||||
expected string
|
||||
}
|
||||
tests := map[string]testT{
|
||||
"clock time seconds as expected": {
|
||||
expectedFmt: `
|
||||
expected: fmt.Sprintf(`
|
||||
# HELP certmanager_clock_time_seconds The clock time given in seconds (from 1970/01/01 UTC).
|
||||
# TYPE certmanager_clock_time_seconds counter
|
||||
certmanager_clock_time_seconds %f
|
||||
`,
|
||||
`, float64(fixedClock.Now().Unix())),
|
||||
},
|
||||
}
|
||||
for n, test := range tests {
|
||||
t.Run(n, func(t *testing.T) {
|
||||
m := New(logtesting.TestLogger{T: t})
|
||||
m := New(logtesting.TestLogger{T: t}, fixedClock)
|
||||
|
||||
if err := testutil.CollectAndCompare(m.clockTimeSeconds,
|
||||
strings.NewReader(fmt.Sprintf(test.expectedFmt, float64(time.Now().Unix()))),
|
||||
strings.NewReader(test.expected),
|
||||
"certmanager_clock_time_seconds",
|
||||
); err != nil {
|
||||
t.Errorf("unexpected collecting result:\n%s", err)
|
||||
|
||||
@ -130,7 +130,7 @@ func TestAcmeOrdersController(t *testing.T) {
|
||||
c := controllerpkg.NewController(
|
||||
context.Background(),
|
||||
"orders_test",
|
||||
metrics.New(logf.Log),
|
||||
metrics.New(logf.Log, clock.RealClock{}),
|
||||
ctrl.ProcessItem,
|
||||
mustSync,
|
||||
nil,
|
||||
|
||||
@ -60,7 +60,7 @@ func TestIssuingController(t *testing.T) {
|
||||
c := controllerpkg.NewController(
|
||||
context.Background(),
|
||||
"issuing_test",
|
||||
metrics.New(logf.Log),
|
||||
metrics.New(logf.Log, clock.RealClock{}),
|
||||
ctrl.ProcessItem,
|
||||
mustSync,
|
||||
nil,
|
||||
@ -264,7 +264,7 @@ func TestIssuingController_PKCS8_PrivateKey(t *testing.T) {
|
||||
c := controllerpkg.NewController(
|
||||
context.Background(),
|
||||
"issuing_test",
|
||||
metrics.New(logf.Log),
|
||||
metrics.New(logf.Log, clock.RealClock{}),
|
||||
ctrl.ProcessItem,
|
||||
mustSync,
|
||||
nil,
|
||||
|
||||
@ -26,6 +26,7 @@ import (
|
||||
"time"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/utils/clock"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
@ -50,7 +51,7 @@ func TestMetricsController(t *testing.T) {
|
||||
// Build, instantiate and run the issuing controller.
|
||||
kubernetesCl, factory, cmClient, cmFactory := framework.NewClients(t, config)
|
||||
|
||||
metricsHandler := metrics.New(logf.Log)
|
||||
metricsHandler := metrics.New(logf.Log, clock.RealClock{})
|
||||
server, err := metricsHandler.Start("127.0.0.1:0", false)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
||||
@ -26,6 +26,7 @@ import (
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
"k8s.io/utils/clock"
|
||||
|
||||
apiutil "github.com/jetstack/cert-manager/pkg/api/util"
|
||||
cmapi "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1"
|
||||
@ -54,7 +55,7 @@ func TestRevisionManagerController(t *testing.T) {
|
||||
c := controllerpkg.NewController(
|
||||
context.Background(),
|
||||
"revisionmanager_controller_test",
|
||||
metrics.New(logf.Log),
|
||||
metrics.New(logf.Log, clock.RealClock{}),
|
||||
ctrl.ProcessItem,
|
||||
mustSync,
|
||||
nil,
|
||||
|
||||
@ -25,6 +25,7 @@ import (
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
"k8s.io/utils/clock"
|
||||
fakeclock "k8s.io/utils/clock/testing"
|
||||
|
||||
apiutil "github.com/jetstack/cert-manager/pkg/api/util"
|
||||
@ -69,7 +70,7 @@ func TestTriggerController(t *testing.T) {
|
||||
c := controllerpkg.NewController(
|
||||
context.Background(),
|
||||
"trigger_test",
|
||||
metrics.New(logf.Log),
|
||||
metrics.New(logf.Log, clock.RealClock{}),
|
||||
ctrl.ProcessItem,
|
||||
mustSync,
|
||||
nil,
|
||||
@ -181,7 +182,7 @@ func TestTriggerController_RenewNearExpiry(t *testing.T) {
|
||||
c := controllerpkg.NewController(
|
||||
logf.NewContext(context.Background(), logf.Log, "trigger_controller_RenewNearExpiry"),
|
||||
"trigger_test",
|
||||
metrics.New(logf.Log),
|
||||
metrics.New(logf.Log, clock.RealClock{}),
|
||||
ctrl.ProcessItem,
|
||||
mustSync,
|
||||
nil,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user