@@ -278,3 +278,178 @@ func TestEmitEvent_Node(t *testing.T) {
278278 })
279279 }
280280}
281+
282+ func TestNode_isUpdated (t * testing.T ) {
283+ tests := []struct {
284+ old * kubernetes.Node
285+ new * kubernetes.Node
286+ updated bool
287+ test string
288+ }{
289+ {
290+ test : "one of the objects is nil then its updated" ,
291+ old : nil ,
292+ new : & kubernetes.Node {},
293+ updated : true ,
294+ },
295+ {
296+ test : "both empty nodes should return not updated" ,
297+ old : & kubernetes.Node {},
298+ new : & kubernetes.Node {},
299+ updated : false ,
300+ },
301+ {
302+ test : "resource version is the same should return not updated" ,
303+ old : & kubernetes.Node {
304+ ObjectMeta : kubernetes.ObjectMeta {
305+ ResourceVersion : "1" ,
306+ },
307+ },
308+ new : & kubernetes.Node {
309+ ObjectMeta : kubernetes.ObjectMeta {
310+ ResourceVersion : "1" ,
311+ },
312+ },
313+ },
314+ {
315+ test : "if meta changes then it should return updated" ,
316+ old : & kubernetes.Node {
317+ ObjectMeta : kubernetes.ObjectMeta {
318+ ResourceVersion : "1" ,
319+ Annotations : map [string ]string {},
320+ },
321+ },
322+ new : & kubernetes.Node {
323+ ObjectMeta : kubernetes.ObjectMeta {
324+ ResourceVersion : "2" ,
325+ Annotations : map [string ]string {
326+ "a" : "b" ,
327+ },
328+ },
329+ },
330+ updated : true ,
331+ },
332+ {
333+ test : "if spec changes then it should return updated" ,
334+ old : & kubernetes.Node {
335+ ObjectMeta : kubernetes.ObjectMeta {
336+ ResourceVersion : "1" ,
337+ Annotations : map [string ]string {
338+ "a" : "b" ,
339+ },
340+ },
341+ Spec : v1.NodeSpec {
342+ ProviderID : "1" ,
343+ Unschedulable : false ,
344+ },
345+ },
346+ new : & kubernetes.Node {
347+ ObjectMeta : kubernetes.ObjectMeta {
348+ ResourceVersion : "2" ,
349+ Annotations : map [string ]string {
350+ "a" : "b" ,
351+ },
352+ },
353+ Spec : v1.NodeSpec {
354+ ProviderID : "1" ,
355+ Unschedulable : true ,
356+ },
357+ },
358+ updated : true ,
359+ },
360+ {
361+ test : "if overall status doesn't change then its not an update" ,
362+ old : & kubernetes.Node {
363+ ObjectMeta : kubernetes.ObjectMeta {
364+ ResourceVersion : "1" ,
365+ Annotations : map [string ]string {
366+ "a" : "b" ,
367+ },
368+ },
369+ Spec : v1.NodeSpec {
370+ ProviderID : "1" ,
371+ Unschedulable : true ,
372+ },
373+ Status : v1.NodeStatus {
374+ Conditions : []v1.NodeCondition {
375+ {
376+ Type : v1 .NodeReady ,
377+ Status : v1 .ConditionTrue ,
378+ },
379+ },
380+ },
381+ },
382+ new : & kubernetes.Node {
383+ ObjectMeta : kubernetes.ObjectMeta {
384+ ResourceVersion : "2" ,
385+ Annotations : map [string ]string {
386+ "a" : "b" ,
387+ },
388+ },
389+ Spec : v1.NodeSpec {
390+ ProviderID : "1" ,
391+ Unschedulable : true ,
392+ },
393+ Status : v1.NodeStatus {
394+ Conditions : []v1.NodeCondition {
395+ {
396+ Type : v1 .NodeReady ,
397+ Status : v1 .ConditionTrue ,
398+ },
399+ },
400+ },
401+ },
402+ updated : false ,
403+ },
404+ {
405+ test : "if node status changes then its an update" ,
406+ old : & kubernetes.Node {
407+ ObjectMeta : kubernetes.ObjectMeta {
408+ ResourceVersion : "1" ,
409+ Annotations : map [string ]string {
410+ "a" : "b" ,
411+ },
412+ },
413+ Spec : v1.NodeSpec {
414+ ProviderID : "1" ,
415+ Unschedulable : true ,
416+ },
417+ Status : v1.NodeStatus {
418+ Conditions : []v1.NodeCondition {
419+ {
420+ Type : v1 .NodeReady ,
421+ Status : v1 .ConditionFalse ,
422+ },
423+ },
424+ },
425+ },
426+ new : & kubernetes.Node {
427+ ObjectMeta : kubernetes.ObjectMeta {
428+ ResourceVersion : "2" ,
429+ Annotations : map [string ]string {
430+ "a" : "b" ,
431+ },
432+ },
433+ Spec : v1.NodeSpec {
434+ ProviderID : "1" ,
435+ Unschedulable : true ,
436+ },
437+ Status : v1.NodeStatus {
438+ Conditions : []v1.NodeCondition {
439+ {
440+ Type : v1 .NodeReady ,
441+ Status : v1 .ConditionTrue ,
442+ },
443+ },
444+ },
445+ },
446+ updated : true ,
447+ },
448+ }
449+
450+ for _ , test := range tests {
451+ t .Run (test .test , func (t * testing.T ) {
452+ assert .Equal (t , test .updated , isUpdated (test .old , test .new ))
453+ })
454+ }
455+ }
0 commit comments