kubemodel_helpers_test.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package kubemodel
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/stretchr/testify/require"
  6. )
  7. // requireWindowEqual compares two start/end time pairs using time.Time.Equal,
  8. // which is insensitive to monotonic clock readings and timezone representation.
  9. func requireWindowEqual(t *testing.T, thisStart, thatStart, thisEnd, thatEnd time.Time) {
  10. t.Helper()
  11. require.True(t, thisStart.Equal(thatStart), "Start mismatch: %v != %v", thisStart, thatStart)
  12. require.True(t, thisEnd.Equal(thatEnd), "End mismatch: %v != %v", thisEnd, thatEnd)
  13. }
  14. // DiagnosticEquals asserts that two Diagnostics have identical state.
  15. // Timestamp is excluded from comparison since it is volatile across instances.
  16. func DiagnosticEquals(t *testing.T, this, that Diagnostic) {
  17. t.Helper()
  18. require.Equal(t, this.Level, that.Level)
  19. require.Equal(t, this.Message, that.Message)
  20. require.Equal(t, this.Details, that.Details)
  21. }
  22. // MetadataEquals asserts that two Metadata structs have identical state.
  23. // Timestamps (CreatedAt, CompletedAt, Diagnostic.Timestamp) are excluded
  24. // from comparison since they are volatile across instances.
  25. func MetadataEquals(t *testing.T, this, that *Metadata) {
  26. t.Helper()
  27. require.Equal(t, this.ObjectCount, that.ObjectCount)
  28. require.Equal(t, this.DiagnosticLevel, that.DiagnosticLevel)
  29. require.Equal(t, len(this.Diagnostics), len(that.Diagnostics))
  30. for i := range this.Diagnostics {
  31. DiagnosticEquals(t, this.Diagnostics[i], that.Diagnostics[i])
  32. }
  33. }
  34. // KubeModelSetEquals asserts that two KubeModelSets have identical state.
  35. // Metadata timestamps (CreatedAt, CompletedAt, Diagnostic.Timestamp) are
  36. // excluded from comparison since they are volatile across instances.
  37. func KubeModelSetEquals(t *testing.T, this, that *KubeModelSet) {
  38. t.Helper()
  39. require.Equal(t, this.Window, that.Window)
  40. require.Equal(t, this.Cluster, that.Cluster)
  41. MetadataEquals(t, this.Metadata, that.Metadata)
  42. require.Equal(t, this.Namespaces, that.Namespaces)
  43. require.Equal(t, this.ResourceQuotas, that.ResourceQuotas)
  44. require.Equal(t, this.Containers, that.Containers)
  45. require.Equal(t, this.Deployments, that.Deployments)
  46. require.Equal(t, this.StatefulSets, that.StatefulSets)
  47. require.Equal(t, this.DaemonSets, that.DaemonSets)
  48. require.Equal(t, this.Jobs, that.Jobs)
  49. require.Equal(t, this.CronJobs, that.CronJobs)
  50. require.Equal(t, this.ReplicaSets, that.ReplicaSets)
  51. require.Equal(t, this.Nodes, that.Nodes)
  52. require.Equal(t, this.Pods, that.Pods)
  53. require.Equal(t, this.PersistentVolumeClaims, that.PersistentVolumeClaims)
  54. require.Equal(t, this.Services, that.Services)
  55. require.Equal(t, this.PersistentVolumes, that.PersistentVolumes)
  56. require.Equal(t, this.DCGMDevices, that.DCGMDevices)
  57. }