github.com/janma/nomad@v0.11.3/command/agent/helpers_test.go (about) 1 package agent 2 3 import ( 4 "testing" 5 6 "github.com/hashicorp/nomad/helper/uuid" 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestHTTP_rpcHandlerForAlloc(t *testing.T) { 11 t.Parallel() 12 require := require.New(t) 13 agent := NewTestAgent(t, t.Name(), nil) 14 defer agent.Shutdown() 15 16 a := mockFSAlloc(agent.client.NodeID(), nil) 17 addAllocToClient(agent, a, terminalClientAlloc) 18 19 // Case 1: Client has allocation 20 // Outcome: Use local client 21 lc, rc, s := agent.Server.rpcHandlerForAlloc(a.ID) 22 require.True(lc) 23 require.False(rc) 24 require.False(s) 25 26 // Case 2: Client doesn't have allocation and there is a server 27 // Outcome: Use server 28 lc, rc, s = agent.Server.rpcHandlerForAlloc(uuid.Generate()) 29 require.False(lc) 30 require.False(rc) 31 require.True(s) 32 33 // Case 3: Client doesn't have allocation and there is no server 34 // Outcome: Use client RPC to server 35 srv := agent.server 36 agent.server = nil 37 lc, rc, s = agent.Server.rpcHandlerForAlloc(uuid.Generate()) 38 require.False(lc) 39 require.True(rc) 40 require.False(s) 41 agent.server = srv 42 43 // Case 4: No client 44 // Outcome: Use server 45 client := agent.client 46 agent.client = nil 47 lc, rc, s = agent.Server.rpcHandlerForAlloc(uuid.Generate()) 48 require.False(lc) 49 require.False(rc) 50 require.True(s) 51 agent.client = client 52 } 53 54 func TestHTTP_rpcHandlerForNode(t *testing.T) { 55 t.Parallel() 56 require := require.New(t) 57 agent := NewTestAgent(t, t.Name(), nil) 58 defer agent.Shutdown() 59 60 cID := agent.client.NodeID() 61 62 // Case 1: Node running, no node ID given 63 // Outcome: Use local node 64 lc, rc, s := agent.Server.rpcHandlerForNode("") 65 require.True(lc) 66 require.False(rc) 67 require.False(s) 68 69 // Case 2: Node running, it's ID given 70 // Outcome: Use local node 71 lc, rc, s = agent.Server.rpcHandlerForNode(cID) 72 require.True(lc) 73 require.False(rc) 74 require.False(s) 75 76 // Case 3: Local node but wrong ID and there is no server 77 // Outcome: Use client RPC to server 78 srv := agent.server 79 agent.server = nil 80 lc, rc, s = agent.Server.rpcHandlerForNode(uuid.Generate()) 81 require.False(lc) 82 require.True(rc) 83 require.False(s) 84 agent.server = srv 85 86 // Case 4: No client 87 // Outcome: Use server 88 client := agent.client 89 agent.client = nil 90 lc, rc, s = agent.Server.rpcHandlerForNode(uuid.Generate()) 91 require.False(lc) 92 require.False(rc) 93 require.True(s) 94 agent.client = client 95 }