draft tests
This commit is contained in:
119
models/resources/tests/compute_test.go
Normal file
119
models/resources/tests/compute_test.go
Normal file
@@ -0,0 +1,119 @@
|
||||
package resources_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"cloud.o-forge.io/core/oc-lib/models/common/models"
|
||||
"cloud.o-forge.io/core/oc-lib/models/common/pricing"
|
||||
"cloud.o-forge.io/core/oc-lib/models/resources"
|
||||
"cloud.o-forge.io/core/oc-lib/tools"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestComputeResource_GetType(t *testing.T) {
|
||||
r := &resources.ComputeResource{}
|
||||
assert.Equal(t, tools.COMPUTE_RESOURCE.String(), r.GetType())
|
||||
}
|
||||
|
||||
func TestComputeResource_GetAccessor(t *testing.T) {
|
||||
req := &tools.APIRequest{}
|
||||
cr := &resources.ComputeResource{}
|
||||
accessor := cr.GetAccessor(req)
|
||||
assert.NotNil(t, accessor)
|
||||
}
|
||||
|
||||
func TestComputeResource_ConvertToPricedResource(t *testing.T) {
|
||||
req := &tools.APIRequest{}
|
||||
cr := &resources.ComputeResource{}
|
||||
cr.UUID = "comp123"
|
||||
cr.AbstractInstanciatedResource.UUID = cr.UUID
|
||||
result := cr.ConvertToPricedResource(tools.COMPUTE_RESOURCE, req)
|
||||
assert.NotNil(t, result)
|
||||
assert.IsType(t, &resources.PricedComputeResource{}, result)
|
||||
}
|
||||
|
||||
func TestComputeResourcePricingProfile_GetPrice_CPUs(t *testing.T) {
|
||||
start := time.Now()
|
||||
end := start.Add(1 * time.Hour)
|
||||
profile := resources.ComputeResourcePricingProfile{
|
||||
CPUsPrices: map[string]float64{"Xeon": 2.0},
|
||||
ExploitPricingProfile: pricing.ExploitPricingProfile[pricing.TimePricingStrategy]{
|
||||
AccessPricingProfile: pricing.AccessPricingProfile[pricing.TimePricingStrategy]{
|
||||
Pricing: pricing.PricingStrategy[pricing.TimePricingStrategy]{Price: 1.0},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
price, err := profile.GetPrice(2, 3600, start, end, "cpus", "Xeon")
|
||||
require.NoError(t, err)
|
||||
assert.Greater(t, price, float64(0))
|
||||
}
|
||||
|
||||
func TestComputeResourcePricingProfile_GetPrice_InvalidParams(t *testing.T) {
|
||||
profile := resources.ComputeResourcePricingProfile{}
|
||||
_, err := profile.GetPrice(1, 3600, time.Now(), time.Now())
|
||||
assert.Error(t, err)
|
||||
assert.Equal(t, "params must be set", err.Error())
|
||||
}
|
||||
|
||||
func TestPricedComputeResource_GetPrice(t *testing.T) {
|
||||
start := time.Now()
|
||||
end := start.Add(1 * time.Hour)
|
||||
profile := &resources.ComputeResourcePricingProfile{
|
||||
CPUsPrices: map[string]float64{"Xeon": 1.0},
|
||||
GPUsPrices: map[string]float64{"Tesla": 2.0},
|
||||
RAMPrice: 0.5,
|
||||
ExploitPricingProfile: pricing.ExploitPricingProfile[pricing.TimePricingStrategy]{
|
||||
AccessPricingProfile: pricing.AccessPricingProfile[pricing.TimePricingStrategy]{
|
||||
Pricing: pricing.PricingStrategy[pricing.TimePricingStrategy]{Price: 1.0},
|
||||
},
|
||||
},
|
||||
}
|
||||
r := resources.PricedComputeResource{
|
||||
PricedResource: resources.PricedResource{
|
||||
ResourceID: "comp456",
|
||||
PricingProfiles: []pricing.PricingProfileITF{profile},
|
||||
UsageStart: &start,
|
||||
UsageEnd: &end,
|
||||
ExplicitBookingDurationS: 3600,
|
||||
},
|
||||
CPUsLocated: map[string]float64{"Xeon": 2},
|
||||
GPUsLocated: map[string]float64{"Tesla": 1},
|
||||
RAMLocated: 4,
|
||||
}
|
||||
|
||||
price, err := r.GetPrice()
|
||||
require.NoError(t, err)
|
||||
assert.Greater(t, price, float64(0))
|
||||
}
|
||||
|
||||
func TestPricedComputeResource_GetPrice_MissingProfile(t *testing.T) {
|
||||
r := resources.PricedComputeResource{
|
||||
PricedResource: resources.PricedResource{
|
||||
ResourceID: "comp789",
|
||||
},
|
||||
}
|
||||
_, err := r.GetPrice()
|
||||
require.Error(t, err)
|
||||
assert.Contains(t, err.Error(), "pricing profile must be set")
|
||||
}
|
||||
|
||||
func TestPricedComputeResource_FillWithDefaultProcessingUsage(t *testing.T) {
|
||||
usage := &resources.ProcessingUsage{
|
||||
CPUs: map[string]*models.CPU{"t": {Model: "Xeon", Cores: 4}},
|
||||
GPUs: map[string]*models.GPU{"t1": {Model: "Tesla"}},
|
||||
RAM: &models.RAM{SizeGb: 16},
|
||||
}
|
||||
r := &resources.PricedComputeResource{
|
||||
CPUsLocated: make(map[string]float64),
|
||||
GPUsLocated: make(map[string]float64),
|
||||
RAMLocated: 0,
|
||||
}
|
||||
r.FillWithDefaultProcessingUsage(usage)
|
||||
assert.Equal(t, float64(4), r.CPUsLocated["Xeon"])
|
||||
assert.Equal(t, float64(1), r.GPUsLocated["Tesla"])
|
||||
assert.Equal(t, float64(16), r.RAMLocated)
|
||||
}
|
||||
Reference in New Issue
Block a user