github.com/bigcommerce/nomad@v0.9.3-bc/client/fingerprint_manager_test.go (about)

     1  package client
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/hashicorp/nomad/client/config"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestFingerprintManager_Run_ResourcesFingerprint(t *testing.T) {
    11  	t.Parallel()
    12  	require := require.New(t)
    13  	testClient, cleanup := TestClient(t, nil)
    14  	defer cleanup()
    15  
    16  	fm := NewFingerprintManager(
    17  		testClient.config.PluginSingletonLoader,
    18  		testClient.GetConfig,
    19  		testClient.config.Node,
    20  		testClient.shutdownCh,
    21  		testClient.updateNodeFromFingerprint,
    22  		testClient.logger,
    23  	)
    24  
    25  	err := fm.Run()
    26  	require.Nil(err)
    27  
    28  	node := testClient.config.Node
    29  
    30  	require.NotEqual(0, node.Resources.CPU)
    31  	require.NotEqual(0, node.Resources.MemoryMB)
    32  	require.NotZero(node.Resources.DiskMB)
    33  }
    34  
    35  func TestFimgerprintManager_Run_InWhitelist(t *testing.T) {
    36  	t.Parallel()
    37  	require := require.New(t)
    38  
    39  	testClient, cleanup := TestClient(t, func(c *config.Config) {
    40  		c.Options = map[string]string{
    41  			"test.shutdown_periodic_after":    "true",
    42  			"test.shutdown_periodic_duration": "2",
    43  		}
    44  	})
    45  	defer cleanup()
    46  
    47  	fm := NewFingerprintManager(
    48  		testClient.config.PluginSingletonLoader,
    49  		testClient.GetConfig,
    50  		testClient.config.Node,
    51  		testClient.shutdownCh,
    52  		testClient.updateNodeFromFingerprint,
    53  		testClient.logger,
    54  	)
    55  
    56  	err := fm.Run()
    57  	require.Nil(err)
    58  
    59  	node := testClient.config.Node
    60  
    61  	require.NotEqual(node.Attributes["cpu.frequency"], "")
    62  }
    63  
    64  func TestFingerprintManager_Run_InBlacklist(t *testing.T) {
    65  	t.Parallel()
    66  	require := require.New(t)
    67  	testClient, cleanup := TestClient(t, func(c *config.Config) {
    68  		c.Options = map[string]string{
    69  			"fingerprint.whitelist": "  arch,memory,foo,bar	",
    70  			"fingerprint.blacklist": "  cpu	",
    71  		}
    72  	})
    73  	defer cleanup()
    74  
    75  	fm := NewFingerprintManager(
    76  		testClient.config.PluginSingletonLoader,
    77  		testClient.GetConfig,
    78  		testClient.config.Node,
    79  		testClient.shutdownCh,
    80  		testClient.updateNodeFromFingerprint,
    81  		testClient.logger,
    82  	)
    83  
    84  	err := fm.Run()
    85  	require.Nil(err)
    86  
    87  	node := testClient.config.Node
    88  
    89  	require.NotContains(node.Attributes, "cpu.frequency")
    90  	require.NotEqual(node.Attributes["memory.totalbytes"], "")
    91  }
    92  
    93  func TestFingerprintManager_Run_Combination(t *testing.T) {
    94  	t.Parallel()
    95  	require := require.New(t)
    96  
    97  	testClient, cleanup := TestClient(t, func(c *config.Config) {
    98  		c.Options = map[string]string{
    99  			"fingerprint.whitelist": "  arch,cpu,memory,foo,bar	",
   100  			"fingerprint.blacklist": "  memory,host	",
   101  		}
   102  	})
   103  	defer cleanup()
   104  
   105  	fm := NewFingerprintManager(
   106  		testClient.config.PluginSingletonLoader,
   107  		testClient.GetConfig,
   108  		testClient.config.Node,
   109  		testClient.shutdownCh,
   110  		testClient.updateNodeFromFingerprint,
   111  		testClient.logger,
   112  	)
   113  
   114  	err := fm.Run()
   115  	require.Nil(err)
   116  
   117  	node := testClient.config.Node
   118  
   119  	require.NotEqual(node.Attributes["cpu.frequency"], "")
   120  	require.NotEqual(node.Attributes["cpu.arch"], "")
   121  	require.NotContains(node.Attributes, "memory.totalbytes")
   122  	require.NotContains(node.Attributes, "os.name")
   123  }