package testutils import ( "math/rand" "testing" "time" ) const chars = "abcdefghijklmnopqrstuvwxyz" + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "~!@#$%^&*()-_+={}[]\\|<,>.?/\"';:` " // Timeout calls f and waits for 100ms for it to complete. // If it doesn't, it causes the tests to fail. // t must be a valid testing context. func Timeout(t *testing.T, f func()) { onTimeout := time.After(100 * time.Millisecond) onDone := make(chan bool) go func() { f() close(onDone) }() select { case <-onTimeout: t.Fatalf("timeout") case <-onDone: } } // RandomString returns random string of specified length func RandomString(length int) string { res := make([]byte, length) for i := 0; i < length; i++ { res[i] = chars[rand.Intn(len(chars))] } return string(res) }