65 lines
1.7 KiB
Go
65 lines
1.7 KiB
Go
package tests_test
|
|
|
|
import (
|
|
"context"
|
|
"github.com/cirruslabs/orchard/internal/tests/devcontroller"
|
|
"github.com/cirruslabs/orchard/internal/tests/wait"
|
|
v1 "github.com/cirruslabs/orchard/pkg/resource/v1"
|
|
"github.com/stretchr/testify/require"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestImplicitCPUMemory(t *testing.T) {
|
|
ctx := context.Background()
|
|
|
|
// Create a development environment
|
|
devClient, _, _ := devcontroller.StartIntegrationTestEnvironmentWithAdditionalOpts(t,
|
|
false, nil,
|
|
true, nil,
|
|
)
|
|
|
|
// Create a worker with default CPU and memory values
|
|
const workerName = "worker"
|
|
|
|
_, err := devClient.Workers().Create(ctx, v1.Worker{
|
|
Meta: v1.Meta{
|
|
Name: workerName,
|
|
},
|
|
Resources: map[string]uint64{
|
|
v1.ResourceTartVMs: 2,
|
|
},
|
|
DefaultCPU: 12,
|
|
DefaultMemory: 3456,
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
// Create a VM with implicit CPU and memory
|
|
vmName := "test-vm"
|
|
|
|
require.NoError(t, devClient.VMs().Create(ctx, &v1.VM{
|
|
Meta: v1.Meta{
|
|
Name: vmName,
|
|
},
|
|
Image: "example.com/doesnt/matter:latest",
|
|
Status: v1.VMStatusPending,
|
|
}))
|
|
|
|
// Wait for the VM to be assigned
|
|
require.True(t, wait.Wait(2*time.Minute, func() bool {
|
|
vm, err := devClient.VMs().Get(context.Background(), vmName)
|
|
require.NoError(t, err)
|
|
|
|
t.Logf("Waiting for the VM %s to be assigned to a worker", vmName)
|
|
|
|
return vm.Worker == workerName
|
|
}), "VM was %s expected to be assigned to the worker %q, but was assigned to the worker %q",
|
|
vmName, workerName)
|
|
|
|
// Ensure that the VM is using default CPU and memory values from the worker
|
|
vm, err := devClient.VMs().Get(context.Background(), vmName)
|
|
require.NoError(t, err)
|
|
require.EqualValues(t, 12, vm.AssignedCPU)
|
|
require.EqualValues(t, 3456, vm.AssignedMemory)
|
|
}
|