| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474 |
- package kubemodel
- import (
- "errors"
- "testing"
- "time"
- "github.com/stretchr/testify/require"
- )
- func TestKubeModelMarshalBinary(t *testing.T) {
- s := time.Now().UTC().Truncate(time.Hour)
- e := s.Add(time.Hour)
- // Test empty KubeModelSet
- kms := NewKubeModelSet(s, e)
- b, err := kms.MarshalBinary()
- require.NoError(t, err)
- var act = new(KubeModelSet)
- err = act.UnmarshalBinary(b)
- require.NoError(t, err)
- require.Equal(t, kms.Metadata, act.Metadata)
- require.Equal(t, kms.Window, act.Window)
- require.Equal(t, kms.Cluster, act.Cluster)
- require.Equal(t, kms.Namespaces, act.Namespaces)
- require.Equal(t, kms.ResourceQuotas, act.ResourceQuotas)
- // Test non-empty KubeModelSet
- kms = NewKubeModelSet(s, e)
- kms.Metadata.CreatedAt = time.Now().UTC()
- kms.RegisterCluster("cluster")
- kms.Cluster.Start = s
- kms.Cluster.End = e
- kms.RegisterNamespace("ns1", "ns1")
- kms.Namespaces["ns1"].Start = s
- kms.Namespaces["ns1"].End = e
- kms.Namespaces["ns1"].Labels = map[string]string{"label1": "label1"}
- kms.Namespaces["ns1"].Annotations = map[string]string{"anno1": "anno1"}
- kms.RegisterNamespace("ns2", "ns2")
- kms.Namespaces["ns2"].Start = s
- kms.Namespaces["ns2"].End = e
- kms.Namespaces["ns2"].Labels = map[string]string{"label2": "label2"}
- kms.Namespaces["ns2"].Annotations = map[string]string{"anno2": "anno2"}
- kms.RegisterResourceQuota("rq1", "rq1", "ns1")
- kms.ResourceQuotas["rq1"].Start = s
- kms.ResourceQuotas["rq1"].End = e
- kms.ResourceQuotas["rq1"].Spec = &ResourceQuotaSpec{
- Hard: &ResourceQuotaSpecHard{
- Requests: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- Limits: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- },
- }
- kms.ResourceQuotas["rq1"].Status = &ResourceQuotaStatus{
- Used: &ResourceQuotaStatusUsed{
- Requests: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- Limits: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- },
- }
- kms.RegisterResourceQuota("rq2", "rq2", "ns1")
- kms.ResourceQuotas["rq2"].Start = s
- kms.ResourceQuotas["rq2"].End = e
- kms.ResourceQuotas["rq2"].Spec = &ResourceQuotaSpec{
- Hard: &ResourceQuotaSpecHard{
- Requests: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- Limits: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- },
- }
- kms.ResourceQuotas["rq2"].Status = &ResourceQuotaStatus{
- Used: &ResourceQuotaStatusUsed{
- Requests: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- Limits: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- },
- }
- kms.RegisterResourceQuota("rq3", "rq3", "ns2")
- kms.ResourceQuotas["rq3"].Start = s
- kms.ResourceQuotas["rq3"].End = e
- kms.ResourceQuotas["rq3"].Spec = &ResourceQuotaSpec{
- Hard: &ResourceQuotaSpecHard{
- Requests: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- Limits: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- },
- }
- kms.ResourceQuotas["rq3"].Status = &ResourceQuotaStatus{
- Used: &ResourceQuotaStatusUsed{
- Requests: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- Limits: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- },
- }
- kms.RegisterResourceQuota("rq4", "rq4", "ns2")
- kms.ResourceQuotas["rq4"].Start = s
- kms.ResourceQuotas["rq4"].End = e
- kms.ResourceQuotas["rq4"].Spec = &ResourceQuotaSpec{
- Hard: &ResourceQuotaSpecHard{
- Requests: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- Limits: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- },
- }
- kms.ResourceQuotas["rq4"].Status = &ResourceQuotaStatus{
- Used: &ResourceQuotaStatusUsed{
- Requests: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- Limits: ResourceQuantities{
- ResourceCPU: ResourceQuantity{
- Resource: ResourceCPU,
- Unit: UnitMillicore,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- ResourceMemory: ResourceQuantity{
- Resource: ResourceMemory,
- Unit: UnitByte,
- Values: Stats{
- StatAvg: 1,
- StatMax: 1,
- StatP85: 1,
- StatP95: 1,
- },
- },
- },
- },
- }
- kms.Error(errors.New("test error"))
- kms.Warn("test warning")
- kms.Info("test info")
- kms.Debug("test debug")
- kms.Trace("test trace")
- kms.Metadata.CompletedAt = time.Now().UTC()
- b, err = kms.MarshalBinary()
- require.NoError(t, err)
- act = new(KubeModelSet)
- err = act.UnmarshalBinary(b)
- require.NoError(t, err)
- require.Equal(t, kms.Metadata, act.Metadata)
- require.Equal(t, kms.Window, act.Window)
- require.Equal(t, kms.Cluster, act.Cluster)
- require.Equal(t, kms.Namespaces, act.Namespaces)
- require.Equal(t, kms.ResourceQuotas, act.ResourceQuotas)
- }
|