@@ -3,6 +3,7 @@ package operator_condition_metrics
33import (
44 "strings"
55 "testing"
6+ "time"
67
78 "github.com/prometheus/client_golang/prometheus"
89 "github.com/prometheus/client_golang/prometheus/testutil"
@@ -30,23 +31,25 @@ func TestConditionMetricRecorder_Record_Transition_And_SecondCondition(t *testin
3031 kind := "MyCRD"
3132 name := "cr-1"
3233 ns := "prod"
34+ transitionTime := time .Date (2025 , time .January , 1 , 0 , 0 , 0 , 0 , time .UTC )
35+
3336 obj := makeObj (name , ns )
3437
3538 // Record Ready=True
36- rec .RecordConditionFor (kind , obj , "Ready" , "True" , "" )
39+ rec .RecordConditionFor (kind , obj , "Ready" , "True" , "" , transitionTime )
3740
3841 // Flip Ready -> False with reason
39- rec .RecordConditionFor (kind , obj , "Ready" , "False" , "Failed" )
42+ rec .RecordConditionFor (kind , obj , "Ready" , "False" , "Failed" , transitionTime )
4043
4144 // Another condition Synchronized=True (independent group)
42- rec .RecordConditionFor (kind , obj , "Synchronized" , "True" , "" )
45+ rec .RecordConditionFor (kind , obj , "Synchronized" , "True" , "" , transitionTime )
4346
4447 // Expect: Ready False(reason)=1, Synchronized True=1
4548 want := `
4649# HELP test_record_transition_and_second_condition_controller_condition Condition status for a custom resource; one active (status,reason) time series per (controller,kind,name,namespace,condition).
4750# TYPE test_record_transition_and_second_condition_controller_condition gauge
48- test_record_transition_and_second_condition_controller_condition{condition="Ready",controller="my-controller",reason="Failed",resource_kind="MyCRD",resource_name="cr-1",resource_namespace="prod",status="False"} 1
49- test_record_transition_and_second_condition_controller_condition{condition="Synchronized",controller="my-controller",reason="",resource_kind="MyCRD",resource_name="cr-1",resource_namespace="prod",status="True",} 1
51+ test_record_transition_and_second_condition_controller_condition{condition="Ready",controller="my-controller",reason="Failed",resource_kind="MyCRD",resource_name="cr-1",resource_namespace="prod",status="False"} 1735689600
52+ test_record_transition_and_second_condition_controller_condition{condition="Synchronized",controller="my-controller",reason="",resource_kind="MyCRD",resource_name="cr-1",resource_namespace="prod",status="True",} 1735689600
5053`
5154 require .NoError (t ,
5255 testutil .GatherAndCompare (
@@ -72,10 +75,11 @@ func TestConditionMetricRecorder_RemoveConditionsFor(t *testing.T) {
7275 kind := "MyCRD"
7376 name := "cr-2"
7477 ns := "staging"
78+ transitionTime := time .Date (2025 , time .January , 1 , 0 , 0 , 0 , 0 , time .UTC )
7579 obj := makeObj (name , ns )
7680
77- rec .RecordConditionFor (kind , obj , "Ready" , "True" , "" )
78- rec .RecordConditionFor (kind , obj , "Synchronized" , "False" , "SyncPending" )
81+ rec .RecordConditionFor (kind , obj , "Ready" , "True" , "" , transitionTime )
82+ rec .RecordConditionFor (kind , obj , "Synchronized" , "False" , "SyncPending" , transitionTime )
7983
8084 // Remove all condition series for this object
8185 removed := rec .RemoveConditionsFor (kind , obj )
@@ -103,16 +107,17 @@ func TestConditionMetricRecorder_SetsKindLabelFromObject(t *testing.T) {
103107 kind := "FancyKind"
104108 name := "obj-1"
105109 ns := "ns-1"
110+ transitionTime := time .Date (2025 , time .January , 1 , 0 , 0 , 0 , 0 , time .UTC )
106111 obj := makeObj (name , ns )
107112
108113 // Record a condition
109- rec .RecordConditionFor (kind , obj , "Ready" , "True" , "" )
114+ rec .RecordConditionFor (kind , obj , "Ready" , "True" , "" , transitionTime )
110115
111116 // Expect the 'kind' label to reflect the object's Kind
112117 want := `
113118# HELP test_sets_kind_label_from_object_controller_condition Condition status for a custom resource; one active (status,reason) time series per (controller,kind,name,namespace,condition).
114119# TYPE test_sets_kind_label_from_object_controller_condition gauge
115- test_sets_kind_label_from_object_controller_condition{condition="Ready",controller="my-controller",reason="",resource_kind="FancyKind",resource_name="obj-1",resource_namespace="ns-1",status="True"} 1
120+ test_sets_kind_label_from_object_controller_condition{condition="Ready",controller="my-controller",reason="",resource_kind="FancyKind",resource_name="obj-1",resource_namespace="ns-1",status="True"} 1735689600
116121`
117122 require .NoError (t ,
118123 testutil .GatherAndCompare (
0 commit comments