diff --git a/test/e2e/petset.go b/test/e2e/petset.go index bcffbe5d616..de8fa8ebbb8 100644 --- a/test/e2e/petset.go +++ b/test/e2e/petset.go @@ -125,11 +125,14 @@ var _ = framework.KubeDescribe("StatefulSet [Slow] [Feature:PetSet]", func() { By("Verifying statefulset mounted data directory is usable") ExpectNoError(pst.checkMount(ps, "/data")) + By("Verifying statefulset provides a stable hostname for each pod") + ExpectNoError(pst.checkHostname(ps)) + cmd := "echo $(hostname) > /data/hostname; sync;" By("Running " + cmd + " in all pets") ExpectNoError(pst.execInPets(ps, cmd)) - By("Restarting pet set " + ps.Name) + By("Restarting statefulset " + ps.Name) pst.restart(ps) pst.saturate(ps) @@ -572,6 +575,20 @@ func (p *statefulSetTester) execInPets(ps *apps.StatefulSet, cmd string) error { return nil } +func (p *statefulSetTester) checkHostname(ps *apps.StatefulSet) error { + cmd := "printf $(hostname)" + podList := p.getPodList(ps) + for _, pet := range podList.Items { + hostname, err := framework.RunHostCmd(pet.Namespace, pet.Name, cmd) + if err != nil { + return err + } + if hostname != pet.Name { + return fmt.Errorf("unexpected hostname (%s) and stateful pod name (%s) not equal", hostname, pet.Name) + } + } + return nil +} func (p *statefulSetTester) saturate(ps *apps.StatefulSet) { // TODO: Watch events and check that creation timestamps don't overlap var i int32