Allow network end-to-end test to be run in parallel

This commit is contained in:
Satnam Singh 2015-01-22 17:22:08 -08:00
parent 2863fa9fe6
commit 85691cba24
2 changed files with 22 additions and 7 deletions

View File

@ -21,6 +21,7 @@ import (
"github.com/GoogleCloudPlatform/kubernetes/pkg/api" "github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client" "github.com/GoogleCloudPlatform/kubernetes/pkg/client"
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
"github.com/golang/glog" "github.com/golang/glog"
) )
@ -31,9 +32,12 @@ func TestNetwork(c *client.Client) bool {
} }
ns := api.NamespaceDefault ns := api.NamespaceDefault
svc, err := c.Services(ns).Create(loadObjectOrDie(assetPath( s := loadObjectOrDie(assetPath("contrib", "for-tests", "network-tester", "service.json")).(*api.Service)
"contrib", "for-tests", "network-tester", "service.json", // TODO(satnam6502): Replace call of randomSuffix with call to NewUUID when service
)).(*api.Service)) // names have the same form as pod and replication controller names.
s.Name += "-" + randomSuffix()
glog.Infof("Creating service with name %s", s.Name)
svc, err := c.Services(ns).Create(s)
if err != nil { if err != nil {
glog.Errorf("unable to create test service: %v", err) glog.Errorf("unable to create test service: %v", err)
return false return false
@ -45,9 +49,9 @@ func TestNetwork(c *client.Client) bool {
} }
}() }()
rc, err := c.ReplicationControllers(ns).Create(loadObjectOrDie(assetPath( r := loadObjectOrDie(assetPath("contrib", "for-tests", "network-tester", "rc.json")).(*api.ReplicationController)
"contrib", "for-tests", "network-tester", "rc.json", r.Name += "-" + string(util.NewUUID())
)).(*api.ReplicationController)) rc, err := c.ReplicationControllers(ns).Create(r)
if err != nil { if err != nil {
glog.Errorf("unable to create test rc: %v", err) glog.Errorf("unable to create test rc: %v", err)
return false return false
@ -66,7 +70,7 @@ func TestNetwork(c *client.Client) bool {
}() }()
const maxAttempts = 60 const maxAttempts = 60
for i := 0; i < maxAttempts; i++ { for i := 0; i < maxAttempts; i++ {
time.Sleep(time.Second) time.Sleep(2 * time.Second)
body, err := c.Get().Prefix("proxy").Resource("services").Name(svc.Name).Suffix("status").Do().Raw() body, err := c.Get().Prefix("proxy").Resource("services").Name(svc.Name).Suffix("status").Do().Raw()
if err != nil { if err != nil {
glog.Infof("Attempt %v/%v: service/pod still starting. (error: '%v')", i, maxAttempts, err) glog.Infof("Attempt %v/%v: service/pod still starting. (error: '%v')", i, maxAttempts, err)

View File

@ -18,7 +18,9 @@ package e2e
import ( import (
"io/ioutil" "io/ioutil"
"math/rand"
"path/filepath" "path/filepath"
"strconv"
"time" "time"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api" "github.com/GoogleCloudPlatform/kubernetes/pkg/api"
@ -183,3 +185,12 @@ func parseServiceOrDie(json string) *api.Service {
} }
return service return service
} }
// TODO: Allow service names to have the same form as names
// for pods and replication controllers so we don't
// need to use such a function and can instead
// use the UUID utilty function.
func randomSuffix() string {
r := rand.New(rand.NewSource(time.Now().UnixNano()))
return strconv.Itoa(r.Int() % 10000)
}