mirror of
https://github.com/kemko/nomad.git
synced 2026-01-01 16:05:42 +03:00
65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package pledge
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/hashicorp/nomad/e2e/e2eutil"
|
|
"github.com/hashicorp/nomad/e2e/v3/cluster3"
|
|
"github.com/hashicorp/nomad/e2e/v3/jobs3"
|
|
"github.com/shoenig/test/must"
|
|
)
|
|
|
|
func TestPledge(t *testing.T) {
|
|
cluster3.Establish(t,
|
|
cluster3.Leader(),
|
|
cluster3.LinuxClients(1),
|
|
cluster3.Timeout(10*time.Second),
|
|
)
|
|
|
|
t.Run("testSleep", testSleep)
|
|
t.Run("testBridgeNetwork", testBridgeNetwork)
|
|
t.Run("testUnveil", testUnveil)
|
|
}
|
|
|
|
func testSleep(t *testing.T) {
|
|
_, cleanup := jobs3.Submit(t, "./input/sleep.hcl")
|
|
t.Cleanup(cleanup)
|
|
}
|
|
|
|
func testBridgeNetwork(t *testing.T) {
|
|
_, cleanup := jobs3.Submit(t, "./input/bridge.hcl")
|
|
t.Cleanup(cleanup)
|
|
|
|
ip, port := findService(t, "pybridge")
|
|
address := fmt.Sprintf("http://%s:%d", ip, port)
|
|
|
|
curlJob, curlCleanup := jobs3.Submit(t, "./input/curl.hcl",
|
|
jobs3.Var("address", address),
|
|
jobs3.WaitComplete("curl"),
|
|
)
|
|
t.Cleanup(curlCleanup)
|
|
|
|
logs := curlJob.TaskLogs("group", "curl")
|
|
must.StrContains(t, logs.Stdout, "<title>bridge mode</title>")
|
|
}
|
|
|
|
func testUnveil(t *testing.T) {
|
|
job, cleanup := jobs3.Submit(t, "./input/unveil.hcl")
|
|
t.Cleanup(cleanup)
|
|
|
|
logs := job.TaskLogs("group", "cat")
|
|
must.StrContains(t, logs.Stdout, "root:x:0:0")
|
|
}
|
|
|
|
// findService returns the service address and port
|
|
func findService(t *testing.T, name string) (string, int) {
|
|
services, _, err := e2eutil.NomadClient(t).Services().Get(name, nil)
|
|
must.NoError(t, err)
|
|
return services[0].Address, services[0].Port
|
|
}
|