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 }