mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
moving random.go from utils
Closes #10962 Signed-off-by: Srini Brahmaroutu <srbrahma@us.ibm.com>
This commit is contained in:
parent
21811f0786
commit
53ece336dc
5 changed files with 72 additions and 19 deletions
|
@ -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,
|
||||||
|
|
|
@ -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)
|
||||||
|
}
|
||||||
|
|
59
pkg/common/randomid_test.go
Normal file
59
pkg/common/randomid_test.go
Normal 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{}{}
|
||||||
|
}
|
||||||
|
}
|
|
@ -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)
|
|
||||||
}
|
|
|
@ -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 == "" {
|
||||||
|
|
Loading…
Reference in a new issue