github.com/technosophos/deis@v1.7.1-0.20150915173815-f9005256004b/deisctl/backend/fleet/utils_test.go (about)

     1  package fleet
     2  
     3  import (
     4  	"reflect"
     5  	"sync"
     6  	"testing"
     7  
     8  	"github.com/coreos/fleet/schema"
     9  )
    10  
    11  func TestNextComponent(t *testing.T) {
    12  	t.Parallel()
    13  
    14  	// test first component
    15  	num, err := nextUnitNum([]string{})
    16  	if err != nil {
    17  		t.Fatal(err)
    18  	}
    19  	expected := 1
    20  	if num != expected {
    21  		t.Fatalf("Expected %d, Got %d", expected, num)
    22  	}
    23  	// test next component
    24  	num, err = nextUnitNum([]string{"deis-router@1.service"})
    25  	if err != nil {
    26  		t.Fatal(err)
    27  	}
    28  	expected = 2
    29  	if num != expected {
    30  		t.Fatalf("Expected %d, Got %d", expected, num)
    31  	}
    32  	// test last component
    33  	num, err = nextUnitNum([]string{"deis-router@1.service", "deis-router@2.service"})
    34  	if err != nil {
    35  		t.Fatal(err)
    36  	}
    37  	expected = 3
    38  	if num != expected {
    39  		t.Fatalf("Expected %d, Got %d", expected, num)
    40  	}
    41  	// test middle component
    42  	num, err = nextUnitNum([]string{"deis-router@3.service"})
    43  	if err != nil {
    44  		t.Fatal(err)
    45  	}
    46  	expected = 1
    47  	if num != expected {
    48  		t.Fatalf("Expected %d, Got %d", expected, num)
    49  	}
    50  	num, err = nextUnitNum([]string{"deis-router@1.service", "deis-router@3.service"})
    51  	if err != nil {
    52  		t.Fatal(err)
    53  	}
    54  	expected = 2
    55  	if num != expected {
    56  		t.Fatalf("Expected %d, Got %d", expected, num)
    57  	}
    58  	num, err = nextUnitNum([]string{"deis-router@1.service", "deis-router@2.service", "deis-router@3.service"})
    59  	if err != nil {
    60  		t.Fatal(err)
    61  	}
    62  	expected = 4
    63  	if num != expected {
    64  		t.Fatalf("Expected %d, Got %d", expected, num)
    65  	}
    66  }
    67  
    68  func TestLastComponent(t *testing.T) {
    69  	t.Parallel()
    70  
    71  	num, err := lastUnitNum([]string{})
    72  	errorf := err.Error()
    73  	expectedErr := "Component not found"
    74  	if errorf != expectedErr {
    75  		t.Fatalf("Expected %d, Got %d", expectedErr, errorf)
    76  	}
    77  	num, err = lastUnitNum([]string{"deis-router@1.service"})
    78  	if err != nil {
    79  		t.Fatal(err)
    80  	}
    81  	expected := 1
    82  	if num != expected {
    83  		t.Fatalf("Expected %d, Got %d", expected, num)
    84  	}
    85  	num, err = lastUnitNum([]string{"deis-router@1.service", "deis-router@2.service"})
    86  	if err != nil {
    87  		t.Fatal(err)
    88  	}
    89  	expected = 2
    90  	if num != expected {
    91  		t.Fatalf("Expected %d, Got %d", expected, num)
    92  	}
    93  	// test middle component
    94  	num, err = lastUnitNum([]string{"deis-router@3.service"})
    95  	if err != nil {
    96  		t.Fatal(err)
    97  	}
    98  	expected = 3
    99  	if num != expected {
   100  		t.Fatalf("Expected %d, Got %d", expected, num)
   101  	}
   102  	num, err = lastUnitNum([]string{"deis-router@1.service", "deis-router@3.service"})
   103  	if err != nil {
   104  		t.Fatal(err)
   105  	}
   106  	expected = 3
   107  	if num != expected {
   108  		t.Fatalf("Expected %d, Got %d", expected, num)
   109  	}
   110  	num, err = lastUnitNum([]string{"deis-router@1.service", "deis-router@2.service", "deis-router@3.service"})
   111  	if err != nil {
   112  		t.Fatal(err)
   113  	}
   114  	expected = 3
   115  	if num != expected {
   116  		t.Fatalf("Expected %d, Got %d", expected, num)
   117  	}
   118  }
   119  
   120  func TestSplitJobName(t *testing.T) {
   121  	t.Parallel()
   122  
   123  	c, num, err := splitJobName("deis-router@1.service")
   124  	if err != nil {
   125  		t.Fatal(err)
   126  	}
   127  	if c != "router" || num != 1 {
   128  		t.Fatalf("Invalid values: %v %v", c, num)
   129  	}
   130  }
   131  
   132  func TestSplitTarget(t *testing.T) {
   133  	t.Parallel()
   134  
   135  	c, num, err := splitTarget("router")
   136  	if err != nil {
   137  		t.Fatal(err)
   138  	}
   139  	if c != "router" && num != 0 {
   140  		t.Fatalf("Invalid split on \"%v\": %v %v", "router", c, num)
   141  	}
   142  
   143  	c, num, err = splitTarget("router@3")
   144  	if err != nil {
   145  		t.Fatal(err)
   146  	}
   147  	if c != "router" || num != 3 {
   148  		t.Fatalf("Invalid split on \"%v\": %v %v", "router@3", c, num)
   149  	}
   150  
   151  	c, num, err = splitTarget("store-gateway")
   152  	if err != nil {
   153  		t.Fatal(err)
   154  	}
   155  	if c != "store-gateway" || num != 0 {
   156  		t.Fatalf("Invalid split on \"%v\": %v %v", "store-gateway", c, num)
   157  	}
   158  
   159  }
   160  
   161  func TestExpandTargets(t *testing.T) {
   162  	t.Parallel()
   163  
   164  	testUnits := []*schema.Unit{
   165  		&schema.Unit{
   166  			Name: "deis-router@1.service",
   167  		},
   168  		&schema.Unit{
   169  			Name: "deis-router@2.service",
   170  		},
   171  		&schema.Unit{
   172  			Name: "deis-store-gateway@1.service",
   173  		},
   174  		&schema.Unit{
   175  			Name: "deis-store-gateway@2.service",
   176  		},
   177  		&schema.Unit{
   178  			Name: "deis-controller.service",
   179  		},
   180  		&schema.Unit{
   181  			Name: "deis-registry@1.service",
   182  		},
   183  		&schema.Unit{
   184  			Name: "registry_v2.cmd.1.service",
   185  		},
   186  	}
   187  	c := &FleetClient{Fleet: &stubFleetClient{testUnits: testUnits, unitsMutex: &sync.Mutex{}}}
   188  
   189  	targets := []string{"router@*", "deis-store-gateway@1", "deis-controller", "registry@*"}
   190  	expandedTargets, err := c.expandTargets(targets)
   191  	if err != nil {
   192  		t.Fatal(err)
   193  	}
   194  	expectedTargets := []string{
   195  		"deis-router@1.service",
   196  		"deis-router@2.service",
   197  		"deis-store-gateway@1",
   198  		"deis-controller",
   199  		"deis-registry@1.service",
   200  	}
   201  	if !reflect.DeepEqual(expandedTargets, expectedTargets) {
   202  		t.Fatal(expandedTargets)
   203  	}
   204  }