github.com/spg/deis@v1.7.3/deisctl/backend/fleet/utils_test.go (about) 1 package fleet 2 3 import ( 4 "fmt" 5 "reflect" 6 "testing" 7 8 "github.com/coreos/fleet/machine" 9 "github.com/coreos/fleet/schema" 10 ) 11 12 func TestNextComponent(t *testing.T) { 13 // test first component 14 num, err := nextUnitNum([]string{}) 15 if err != nil { 16 t.Fatal(err) 17 } 18 if num != 1 { 19 t.Fatal("Invalid component number") 20 } 21 // test next component 22 num, err = nextUnitNum([]string{"deis-router@1.service"}) 23 if err != nil { 24 t.Fatal(err) 25 } 26 if num != 2 { 27 t.Fatal("Invalid component number") 28 } 29 // test last component 30 num, err = nextUnitNum([]string{"deis-router@1.service", "deis-router@2.service"}) 31 if err != nil { 32 t.Fatal(err) 33 } 34 if num != 3 { 35 t.Fatal("Invalid component number") 36 } 37 // test middle component 38 num, err = nextUnitNum([]string{"deis-router@3.service"}) 39 if err != nil { 40 t.Fatal(err) 41 } 42 if num != 1 { 43 t.Fatal("Invalid component number") 44 } 45 num, err = nextUnitNum([]string{"deis-router@1.service", "deis-router@3.service"}) 46 if err != nil { 47 t.Fatal(err) 48 } 49 if num != 2 { 50 t.Fatalf("Invalid component number: %v", num) 51 } 52 num, err = nextUnitNum([]string{"deis-router@1.service", "deis-router@2.service", "deis-router@3.service"}) 53 if err != nil { 54 t.Fatal(err) 55 } 56 if num != 4 { 57 t.Fatal("Invalid component number") 58 } 59 } 60 61 func TestSplitJobName(t *testing.T) { 62 c, num, err := splitJobName("deis-router@1.service") 63 if err != nil { 64 t.Fatal(err) 65 } 66 if c != "router" || num != 1 { 67 t.Fatalf("Invalid values: %v %v", c, num) 68 } 69 } 70 71 func TestSplitTarget(t *testing.T) { 72 c, num, err := splitTarget("router") 73 if err != nil { 74 t.Fatal(err) 75 } 76 if c != "router" && num != 0 { 77 t.Fatalf("Invalid split on \"%v\": %v %v", "router", c, num) 78 } 79 80 c, num, err = splitTarget("router@3") 81 if err != nil { 82 t.Fatal(err) 83 } 84 if c != "router" || num != 3 { 85 t.Fatalf("Invalid split on \"%v\": %v %v", "router@3", c, num) 86 } 87 88 c, num, err = splitTarget("store-gateway") 89 if err != nil { 90 t.Fatal(err) 91 } 92 if c != "store-gateway" || num != 0 { 93 t.Fatalf("Invalid split on \"%v\": %v %v", "store-gateway", c, num) 94 } 95 96 } 97 98 type stubFleetClient struct{} 99 100 var ( 101 testUnits []*schema.Unit 102 ) 103 104 func (c stubFleetClient) Machines() ([]machine.MachineState, error) { 105 return []machine.MachineState{}, nil 106 } 107 func (c stubFleetClient) Unit(string) (*schema.Unit, error) { 108 return nil, nil 109 } 110 func (c stubFleetClient) Units() ([]*schema.Unit, error) { 111 return testUnits, nil 112 } 113 func (c stubFleetClient) UnitStates() ([]*schema.UnitState, error) { 114 return []*schema.UnitState{}, nil 115 } 116 func (c stubFleetClient) SetUnitTargetState(name, target string) error { 117 return fmt.Errorf("SetUnitTargetState not implemented yet.") 118 } 119 func (c stubFleetClient) CreateUnit(*schema.Unit) error { 120 return fmt.Errorf("CreateUnit not implemented yet.") 121 } 122 func (c stubFleetClient) DestroyUnit(string) error { 123 return fmt.Errorf("DestroyUnit not implemented yet.") 124 } 125 126 var fc stubFleetClient 127 128 func TestExpandTargets(t *testing.T) { 129 testUnits = []*schema.Unit{ 130 &schema.Unit{ 131 Name: "deis-router@1.service", 132 }, 133 &schema.Unit{ 134 Name: "deis-router@2.service", 135 }, 136 &schema.Unit{ 137 Name: "deis-store-gateway@1.service", 138 }, 139 &schema.Unit{ 140 Name: "deis-store-gateway@2.service", 141 }, 142 &schema.Unit{ 143 Name: "deis-controller.service", 144 }, 145 &schema.Unit{ 146 Name: "deis-registry@1.service", 147 }, 148 &schema.Unit{ 149 Name: "registry_v2.cmd.1.service", 150 }, 151 } 152 c := &FleetClient{Fleet: fc} 153 154 targets := []string{"router@*", "deis-store-gateway@1", "deis-controller", "registry@*"} 155 expandedTargets, err := expandTargets(c, targets) 156 if err != nil { 157 t.Fatal(err) 158 } 159 expectedTargets := []string{ 160 "deis-router@1.service", 161 "deis-router@2.service", 162 "deis-store-gateway@1", 163 "deis-controller", 164 "deis-registry@1.service", 165 } 166 if !reflect.DeepEqual(expandedTargets, expectedTargets) { 167 t.Fatal(expandedTargets) 168 } 169 }