Merge pull request #11017 from brahmaroutu/random_10962

moving random.go from utils
This commit is contained in:
Phil Estes 2015-02-26 21:35:42 -05:00
commit f5850e8e30
5 changed files with 72 additions and 19 deletions

View File

@ -10,8 +10,8 @@ import (
"sync" "sync"
"time" "time"
"github.com/docker/docker/pkg/common"
"github.com/docker/docker/pkg/ioutils" "github.com/docker/docker/pkg/ioutils"
"github.com/docker/docker/utils"
) )
// Installer is a standard interface for objects which can "install" themselves // Installer is a standard interface for objects which can "install" themselves
@ -77,7 +77,7 @@ func (eng *Engine) RegisterCatchall(catchall Handler) {
func New() *Engine { func New() *Engine {
eng := &Engine{ eng := &Engine{
handlers: make(map[string]Handler), handlers: make(map[string]Handler),
id: utils.RandomString(), id: common.RandomString(),
Stdout: os.Stdout, Stdout: os.Stdout,
Stderr: os.Stderr, Stderr: os.Stderr,
Stdin: os.Stdin, Stdin: os.Stdin,

View File

@ -36,3 +36,12 @@ func GenerateRandomID() string {
return value return value
} }
} }
func RandomString() string {
id := make([]byte, 32)
if _, err := io.ReadFull(rand.Reader, id); err != nil {
panic(err) // This shouldn't happen
}
return hex.EncodeToString(id)
}

View File

@ -0,0 +1,59 @@
package common
import (
"testing"
)
func TestShortenId(t *testing.T) {
id := GenerateRandomID()
truncID := TruncateID(id)
if len(truncID) != 12 {
t.Fatalf("Id returned is incorrect: truncate on %s returned %s", id, truncID)
}
}
func TestShortenIdEmpty(t *testing.T) {
id := ""
truncID := TruncateID(id)
if len(truncID) > len(id) {
t.Fatalf("Id returned is incorrect: truncate on %s returned %s", id, truncID)
}
}
func TestShortenIdInvalid(t *testing.T) {
id := "1234"
truncID := TruncateID(id)
if len(truncID) != len(id) {
t.Fatalf("Id returned is incorrect: truncate on %s returned %s", id, truncID)
}
}
func TestGenerateRandomID(t *testing.T) {
id := GenerateRandomID()
if len(id) != 64 {
t.Fatalf("Id returned is incorrect: %s", id)
}
}
func TestRandomString(t *testing.T) {
id := RandomString()
if len(id) != 64 {
t.Fatalf("Id returned is incorrect: %s", id)
}
}
func TestRandomStringUniqueness(t *testing.T) {
repeats := 25
set := make(map[string]struct{}, repeats)
for i := 0; i < repeats; i = i + 1 {
id := RandomString()
if len(id) != 64 {
t.Fatalf("Id returned is incorrect: %s", id)
}
if _, ok := set[id]; ok {
t.Fatalf("Random number is repeated")
}
set[id] = struct{}{}
}
}

View File

@ -1,16 +0,0 @@
package utils
import (
"crypto/rand"
"encoding/hex"
"io"
)
func RandomString() string {
id := make([]byte, 32)
if _, err := io.ReadFull(rand.Reader, id); err != nil {
panic(err) // This shouldn't happen
}
return hex.EncodeToString(id)
}

View File

@ -21,6 +21,7 @@ import (
log "github.com/Sirupsen/logrus" log "github.com/Sirupsen/logrus"
"github.com/docker/docker/autogen/dockerversion" "github.com/docker/docker/autogen/dockerversion"
"github.com/docker/docker/pkg/archive" "github.com/docker/docker/pkg/archive"
"github.com/docker/docker/pkg/common"
"github.com/docker/docker/pkg/fileutils" "github.com/docker/docker/pkg/fileutils"
"github.com/docker/docker/pkg/ioutils" "github.com/docker/docker/pkg/ioutils"
) )
@ -311,7 +312,7 @@ var globalTestID string
// new directory. // new directory.
func TestDirectory(templateDir string) (dir string, err error) { func TestDirectory(templateDir string) (dir string, err error) {
if globalTestID == "" { if globalTestID == "" {
globalTestID = RandomString()[:4] globalTestID = common.RandomString()[:4]
} }
prefix := fmt.Sprintf("docker-test%s-%s-", globalTestID, GetCallerName(2)) prefix := fmt.Sprintf("docker-test%s-%s-", globalTestID, GetCallerName(2))
if prefix == "" { if prefix == "" {