orchard/internal/tests/implicit_cpu_memory_test.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)
}