88 "github.com/appuio/appuio-cloud-agent/ratio"
99 "github.com/stretchr/testify/assert"
1010 "github.com/stretchr/testify/require"
11+ "gopkg.in/inf.v0"
1112 corev1 "k8s.io/api/core/v1"
1213 "k8s.io/apimachinery/pkg/api/resource"
1314 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -45,6 +46,28 @@ func TestRatioReconciler_Warn(t *testing.T) {
4546 require .Len (t , recorder .Events , 2 )
4647}
4748
49+ func TestRatioReconciler_Threshold_Ok (t * testing.T ) {
50+ recorder := record .NewFakeRecorder (4 )
51+ _ , err := prepareRatioTest (t , testRatioCfg {
52+ limit : resource .MustParse ("4G" ),
53+ fetchMemory : resource .MustParse ("4G" ),
54+ fetchCPU : resource .MustParse ("1100m" ),
55+ recorder : recorder ,
56+ threshold : inf .NewDec (90 , 2 ),
57+ obj : []client.Object {
58+ testNs ,
59+ testPod ,
60+ },
61+ }).Reconcile (context .TODO (), ctrl.Request {
62+ NamespacedName : types.NamespacedName {
63+ Namespace : testNs .Name ,
64+ Name : testPod .Name ,
65+ },
66+ })
67+ assert .NoError (t , err )
68+ requireNEvents (t , recorder , 0 )
69+ }
70+
4871func TestRatioReconciler_Ok (t * testing.T ) {
4972 recorder := record .NewFakeRecorder (4 )
5073 _ , err := prepareRatioTest (t , testRatioCfg {
@@ -129,11 +152,17 @@ func TestRatioReconciler_RecordFailed(t *testing.T) {
129152 },
130153 })
131154 assert .NoError (t , err )
132- if ! assert .Len (t , recorder .Events , 0 ) {
155+ requireNEvents (t , recorder , 0 )
156+ }
157+
158+ func requireNEvents (t * testing.T , recorder * record.FakeRecorder , n int ) {
159+ t .Helper ()
160+
161+ if ! assert .Len (t , recorder .Events , n ) {
133162 for i := 0 ; i < len (recorder .Events ); i ++ {
134- e := <- recorder .Events
135- t .Log (e )
163+ t .Log ("Recorded event: " , <- recorder .Events )
136164 }
165+ t .FailNow ()
137166 }
138167}
139168
@@ -142,6 +171,7 @@ type testRatioCfg struct {
142171 fetchErr error
143172 fetchCPU resource.Quantity
144173 fetchMemory resource.Quantity
174+ threshold * inf.Dec
145175 obj []client.Object
146176 recorder record.EventRecorder
147177}
@@ -175,6 +205,7 @@ func prepareRatioTest(t *testing.T, cfg testRatioCfg) *RatioReconciler {
175205 Limit : & cfg .limit ,
176206 },
177207 },
208+ RatioWarnThreshold : cfg .threshold ,
178209 }
179210}
180211
0 commit comments