Refactor test for findPort in service pkg

This commit is contained in:
Claire Li
2014-11-05 22:38:34 -08:00
parent ea0c6bcbfd
commit c5205870c0
2 changed files with 59 additions and 45 deletions

View File

@@ -138,15 +138,15 @@ func endpointsEqual(e *api.Endpoints, endpoints []string) bool {
// findPort locates the container port for the given manifest and portName. // findPort locates the container port for the given manifest and portName.
func findPort(manifest *api.ContainerManifest, portName util.IntOrString) (int, error) { func findPort(manifest *api.ContainerManifest, portName util.IntOrString) (int, error) {
firstContianerPort := -1 firstContainerPort := 0
if len(manifest.Containers[0].Ports) > 0 { if len(manifest.Containers[0].Ports) > 0 {
firstContianerPort = manifest.Containers[0].Ports[0].ContainerPort firstContainerPort = manifest.Containers[0].Ports[0].ContainerPort
} }
switch portName.Kind { switch portName.Kind {
case util.IntstrString: case util.IntstrString:
if len(portName.StrVal) == 0 && firstContianerPort != -1 { if len(portName.StrVal) == 0 && firstContainerPort != -1 {
return firstContianerPort, nil return firstContainerPort, nil
} }
name := portName.StrVal name := portName.StrVal
for _, container := range manifest.Containers { for _, container := range manifest.Containers {
@@ -157,11 +157,11 @@ func findPort(manifest *api.ContainerManifest, portName util.IntOrString) (int,
} }
} }
case util.IntstrInt: case util.IntstrInt:
if portName.IntVal == 0 && firstContianerPort != -1 { if portName.IntVal == 0 && firstContainerPort != -1 {
return firstContianerPort, nil return firstContainerPort, nil
} }
return portName.IntVal, nil return portName.IntVal, nil
} }
return -1, fmt.Errorf("no suitable port for manifest: %s", manifest.ID) return 0, fmt.Errorf("no suitable port for manifest: %s", manifest.ID)
} }

View File

@@ -79,45 +79,59 @@ func TestFindPort(t *testing.T) {
}, },
}, },
} }
port, err := findPort(&manifest, util.IntOrString{Kind: util.IntstrString, StrVal: "foo"}) tests := []struct {
if err != nil { portName util.IntOrString
t.Errorf("unexpected error: %v", err)
wport int
werr bool
}{
{
util.IntOrString{Kind: util.IntstrString, StrVal: "foo"},
8080,
false,
},
{
util.IntOrString{Kind: util.IntstrString, StrVal: "bar"},
8000,
false,
},
{
util.IntOrString{Kind: util.IntstrInt, IntVal: 8000},
8000,
false,
},
{
util.IntOrString{Kind: util.IntstrInt, IntVal: 7000},
7000,
false,
},
{
util.IntOrString{Kind: util.IntstrString, StrVal: "baz"},
0,
true,
},
{
util.IntOrString{Kind: util.IntstrString, StrVal: ""},
8080,
false,
},
{
util.IntOrString{},
8080,
false,
},
} }
if port != 8080 { for _, test := range tests {
t.Errorf("Expected 8080, Got %d", port) port, err := findPort(&manifest, test.portName)
} if port != test.wport {
port, err = findPort(&manifest, util.IntOrString{Kind: util.IntstrString, StrVal: "bar"}) t.Errorf("Expected port %d, Got %d", test.wport, port)
if err != nil { }
t.Errorf("unexpected error: %v", err) if err == nil && test.werr {
} t.Errorf("unexpected non-error")
if port != 8000 { }
t.Errorf("Expected 8000, Got %d", port) if err != nil && test.werr == false {
} t.Errorf("unexpected error: %v", err)
port, err = findPort(&manifest, util.IntOrString{Kind: util.IntstrInt, IntVal: 8000}) }
if port != 8000 {
t.Errorf("Expected 8000, Got %d", port)
}
port, err = findPort(&manifest, util.IntOrString{Kind: util.IntstrInt, IntVal: 7000})
if port != 7000 {
t.Errorf("Expected 7000, Got %d", port)
}
port, err = findPort(&manifest, util.IntOrString{Kind: util.IntstrString, StrVal: "baz"})
if err == nil {
t.Error("unexpected non-error")
}
port, err = findPort(&manifest, util.IntOrString{Kind: util.IntstrString, StrVal: ""})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if port != 8080 {
t.Errorf("Expected 8080, Got %d", port)
}
port, err = findPort(&manifest, util.IntOrString{})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
if port != 8080 {
t.Errorf("Expected 8080, Got %d", port)
} }
} }