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 }