github.com/dlintw/docker@v1.5.0-rc4/pkg/testutils/utils.go (about) 1 package testutils 2 3 import ( 4 "math/rand" 5 "testing" 6 "time" 7 ) 8 9 const chars = "abcdefghijklmnopqrstuvwxyz" + 10 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + 11 "~!@#$%^&*()-_+={}[]\\|<,>.?/\"';:` " 12 13 // Timeout calls f and waits for 100ms for it to complete. 14 // If it doesn't, it causes the tests to fail. 15 // t must be a valid testing context. 16 func Timeout(t *testing.T, f func()) { 17 onTimeout := time.After(100 * time.Millisecond) 18 onDone := make(chan bool) 19 go func() { 20 f() 21 close(onDone) 22 }() 23 select { 24 case <-onTimeout: 25 t.Fatalf("timeout") 26 case <-onDone: 27 } 28 } 29 30 // RandomString returns random string of specified length 31 func RandomString(length int) string { 32 res := make([]byte, length) 33 for i := 0; i < length; i++ { 34 res[i] = chars[rand.Intn(len(chars))] 35 } 36 return string(res) 37 }