mirror of
https://github.com/kemko/nomad.git
synced 2026-01-02 16:35:44 +03:00
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package isolation
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/hashicorp/nomad/e2e/e2eutil"
|
|
"github.com/hashicorp/nomad/helper/uuid"
|
|
"github.com/shoenig/test/must"
|
|
)
|
|
|
|
func TestCgroupDevices(t *testing.T) {
|
|
nomad := e2eutil.NomadClient(t)
|
|
|
|
e2eutil.WaitForLeader(t, nomad)
|
|
e2eutil.WaitForNodesReady(t, nomad, 1)
|
|
|
|
t.Run("testDevicesUsable", testDevicesUsable)
|
|
}
|
|
|
|
func testDevicesUsable(t *testing.T) {
|
|
nomad := e2eutil.NomadClient(t)
|
|
|
|
jobID := "cgroup-devices-" + uuid.Short()
|
|
jobIDs := []string{jobID}
|
|
t.Cleanup(e2eutil.CleanupJobsAndGC(t, &jobIDs))
|
|
|
|
// start job
|
|
allocs := e2eutil.RegisterAndWaitForAllocs(t, nomad, "./input/cgroup_devices.hcl", jobID, "")
|
|
must.Len(t, 2, allocs)
|
|
|
|
// pick one to stop and one to verify
|
|
allocA := allocs[0].ID
|
|
allocB := allocs[1].ID
|
|
|
|
// verify devices are working
|
|
checkDev(t, allocA)
|
|
checkDev(t, allocB)
|
|
|
|
// stop the chosen alloc
|
|
_, err := e2eutil.Command("nomad", "alloc", "stop", "-detach", allocA)
|
|
must.NoError(t, err)
|
|
e2eutil.WaitForAllocStopped(t, nomad, allocA)
|
|
|
|
// verify device of remaining alloc
|
|
checkDev(t, allocB)
|
|
}
|
|
|
|
func checkDev(t *testing.T, allocID string) {
|
|
_, err := e2eutil.Command("nomad", "alloc", "exec", allocID, "dd", "if=/dev/zero", "of=/dev/null", "count=1")
|
|
must.NoError(t, err)
|
|
}
|