| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package costmodel_test
- import (
- "log"
- "testing"
- "gotest.tools/assert"
- "github.com/kubecost/cost-model/pkg/cloud"
- costModel "github.com/kubecost/cost-model/pkg/costmodel"
- )
- func TestAggregation(t *testing.T) {
- cp := &cloud.CustomProvider{}
- cd1 := &costModel.CostData{
- Namespace: "test1",
- NodeName: "testnode",
- NodeData: &cloud.Node{
- VCPUCost: "1.0",
- RAMCost: "1.0",
- },
- RAMAllocation: []*costModel.Vector{&costModel.Vector{
- Timestamp: 10,
- Value: 1073741824,
- }},
- CPUAllocation: []*costModel.Vector{&costModel.Vector{
- Timestamp: 10,
- Value: 1.0,
- }},
- GPUReq: []*costModel.Vector{&costModel.Vector{}},
- PVCData: []*costModel.PersistentVolumeClaimData{
- &costModel.PersistentVolumeClaimData{
- Namespace: "test1",
- VolumeName: "foo",
- Volume: &cloud.PV{
- Cost: "1.0",
- Size: "1073741824",
- },
- Values: []*costModel.Vector{&costModel.Vector{
- Timestamp: 10,
- Value: 1073741824,
- }},
- },
- &costModel.PersistentVolumeClaimData{
- Namespace: "test1",
- VolumeName: "bar",
- Volume: &cloud.PV{
- Cost: "1.0",
- Size: "1073741824",
- },
- Values: []*costModel.Vector{&costModel.Vector{
- Timestamp: 10,
- Value: 1073741824,
- }},
- },
- },
- }
- cd2 := &costModel.CostData{
- Namespace: "test1",
- NodeName: "testnode",
- NodeData: &cloud.Node{
- VCPUCost: "1.0",
- RAMCost: "1.0",
- },
- RAMAllocation: []*costModel.Vector{&costModel.Vector{
- Timestamp: 10,
- Value: 1073741824,
- }},
- CPUAllocation: []*costModel.Vector{&costModel.Vector{
- Timestamp: 10,
- Value: 1.0,
- }},
- GPUReq: []*costModel.Vector{&costModel.Vector{}},
- PVCData: []*costModel.PersistentVolumeClaimData{
- &costModel.PersistentVolumeClaimData{
- Namespace: "test1",
- VolumeName: "foo",
- Volume: &cloud.PV{
- Cost: "1.0",
- Size: "1073741824",
- },
- Values: []*costModel.Vector{&costModel.Vector{
- Timestamp: 10,
- Value: 1073741824,
- }},
- },
- &costModel.PersistentVolumeClaimData{
- Namespace: "test1",
- VolumeName: "bar",
- Volume: &cloud.PV{
- Cost: "1.0",
- Size: "1073741824",
- },
- Values: []*costModel.Vector{&costModel.Vector{
- Timestamp: 10,
- Value: 1073741824,
- }},
- },
- },
- }
- costData := make(map[string]*costModel.CostData)
- costData["test1,foo,nginx,testnode"] = cd1
- costData["test1,bar,nginx,testnode"] = cd2
- field := "namespace"
- subfields := []string{""}
- agg := costModel.AggregateCostData(costData, field, subfields, cp, nil)
- log.Printf("agg: %+v", agg["test1"])
- assert.Equal(t, agg["test1"].TotalCost, 8.0)
- }
|