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  }