Skip to content

Commit

Permalink
Add tests for uniqName
Browse files Browse the repository at this point in the history
Signed-off-by: Colin Panisset <colin.panisset@cevo.com.au>
  • Loading branch information
nonspecialist committed Sep 12, 2018
1 parent 4d2fe48 commit 6c3cc4e
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 2 deletions.
15 changes: 13 additions & 2 deletions pkg/tiller/release_server.go
Expand Up @@ -202,10 +202,21 @@ func (s *ReleaseServer) uniqName(start string, reuse bool) (string, error) {
return "", fmt.Errorf("a release named %s already exists.\nRun: helm ls --all %s; to check the status of the release\nOr run: helm del --purge %s; to delete it", start, start, start)
}

moniker := moniker.New()
newname, err := s.createUniqName(moniker)
if err != nil {
return "ERROR", err
}

s.Log("info: Created new release name %s", newname)
return newname, nil

}

func (s *ReleaseServer) createUniqName(m moniker.Namer) (string, error) {
maxTries := 5
for i := 0; i < maxTries; i++ {
namer := moniker.New()
name := namer.NameSep("-")
name := m.NameSep("-")
if len(name) > releaseNameMaxLen {
name = name[:releaseNameMaxLen]
}
Expand Down
57 changes: 57 additions & 0 deletions pkg/tiller/release_server_test.go
Expand Up @@ -28,6 +28,7 @@ import (

"github.com/ghodss/yaml"
"github.com/golang/protobuf/ptypes/timestamp"
"github.com/technosophos/moniker"
"golang.org/x/net/context"
"google.golang.org/grpc/metadata"
"k8s.io/kubernetes/pkg/apis/core"
Expand Down Expand Up @@ -380,6 +381,62 @@ func TestUniqName(t *testing.T) {
}
}

type fakeNamer struct {
name string
}

func NewFakeNamer(nam string) moniker.Namer {
return &fakeNamer{
name: nam,
}
}

func (f *fakeNamer) Name() string {
return f.NameSep(" ")
}

func (f *fakeNamer) NameSep(sep string) string {
return f.name
}

func TestCreateUniqueName(t *testing.T) {
rs := rsFixture()

rel1 := releaseStub()
rel1.Name = "happy-panda"

rs.env.Releases.Create(rel1)

tests := []struct {
name string
expect string
err bool
}{
{"happy-panda", "ERROR", true},
{"wobbly-octopus", "[a-z]+-[a-z]+", false},
}

for _, tt := range tests {
m := NewFakeNamer(tt.name)
u, err := rs.createUniqName(m)
if err != nil {
if tt.err {
continue
}
t.Fatal(err)
}
if tt.err {
t.Errorf("Expected an error for %q", tt.name)
}
if match, err := regexp.MatchString(tt.expect, u); err != nil {
t.Fatal(err)
} else if !match {
t.Errorf("Expected %q to match %q", u, tt.expect)
}
}

}

func releaseWithKeepStub(rlsName string) *release.Release {
ch := &chart.Chart{
Metadata: &chart.Metadata{
Expand Down

0 comments on commit 6c3cc4e

Please sign in to comment.