github.com/jrxfive/nomad@v0.6.1-0.20170802162750-1fef470e89bf/nomad/util_test.go (about) 1 package nomad 2 3 import ( 4 "net" 5 "reflect" 6 "testing" 7 8 "github.com/hashicorp/nomad/nomad/structs" 9 "github.com/hashicorp/serf/serf" 10 ) 11 12 func TestIsNomadServer(t *testing.T) { 13 t.Parallel() 14 m := serf.Member{ 15 Name: "foo", 16 Addr: net.IP([]byte{127, 0, 0, 1}), 17 Tags: map[string]string{ 18 "role": "nomad", 19 "region": "aws", 20 "dc": "east-aws", 21 "port": "10000", 22 "vsn": "1", 23 }, 24 } 25 valid, parts := isNomadServer(m) 26 if !valid || parts.Region != "aws" || 27 parts.Datacenter != "east-aws" || parts.Port != 10000 { 28 t.Fatalf("bad: %v %v", valid, parts) 29 } 30 if parts.Name != "foo" { 31 t.Fatalf("bad: %v", parts) 32 } 33 if parts.Bootstrap { 34 t.Fatalf("unexpected bootstrap") 35 } 36 if parts.Expect != 0 { 37 t.Fatalf("bad: %v", parts.Expect) 38 } 39 40 m.Tags["bootstrap"] = "1" 41 valid, parts = isNomadServer(m) 42 if !valid || !parts.Bootstrap { 43 t.Fatalf("expected bootstrap") 44 } 45 if parts.Addr.String() != "127.0.0.1:10000" { 46 t.Fatalf("bad addr: %v", parts.Addr) 47 } 48 if parts.MajorVersion != 1 { 49 t.Fatalf("bad: %v", parts) 50 } 51 52 m.Tags["expect"] = "3" 53 delete(m.Tags, "bootstrap") 54 valid, parts = isNomadServer(m) 55 if !valid || parts.Expect != 3 { 56 t.Fatalf("bad: %v", parts.Expect) 57 } 58 } 59 60 func TestShuffleStrings(t *testing.T) { 61 t.Parallel() 62 // Generate input 63 inp := make([]string, 10) 64 for idx := range inp { 65 inp[idx] = structs.GenerateUUID() 66 } 67 68 // Copy the input 69 orig := make([]string, len(inp)) 70 copy(orig, inp) 71 72 // Shuffle 73 shuffleStrings(inp) 74 75 // Ensure order is not the same 76 if reflect.DeepEqual(inp, orig) { 77 t.Fatalf("shuffle failed") 78 } 79 } 80 81 func TestMaxUint64(t *testing.T) { 82 t.Parallel() 83 if maxUint64(1, 2) != 2 { 84 t.Fatalf("bad") 85 } 86 if maxUint64(2, 2) != 2 { 87 t.Fatalf("bad") 88 } 89 if maxUint64(2, 1) != 2 { 90 t.Fatalf("bad") 91 } 92 }