pass in clock.Clock for better test

Signed-off-by: kit837 <66801824+kit837@users.noreply.github.com>
This commit is contained in:
kit837 2021-06-15 17:44:55 +00:00
parent 228168cee9
commit 0f97e6d19d
10 changed files with 28 additions and 18 deletions

View File

@ -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,

View File

@ -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 {

View File

@ -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"),

View File

@ -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())
},
)

View File

@ -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)

View File

@ -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,

View File

@ -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,

View File

@ -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)

View File

@ -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,

View File

@ -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,