github.com/ilhicas/nomad@v0.11.8/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  }