adjust test sleep timing to avoid spurious failure

- refactor ConsumeWithSpeed
 - documentation

Signed-off-by: Morgan Bauer <mbauer@us.ibm.com>
This commit is contained in:
Morgan Bauer 2015-12-08 15:32:34 -08:00
parent 9381c744b8
commit 81c334fa56
No known key found for this signature in database
GPG Key ID: 23F15C502128F348
2 changed files with 15 additions and 15 deletions

View File

@ -272,25 +272,25 @@ func RandomTmpDirPath(s string, platform string) string {
return filepath.ToSlash(path) // Using /
}
// ConsumeWithSpeed reads chunkSize bytes from reader after every interval.
// Returns total read bytes.
// ConsumeWithSpeed reads chunkSize bytes from reader before sleeping
// for interval duration. Returns total read bytes. Send true to the
// stop channel to return before reading to EOF on the reader.
func ConsumeWithSpeed(reader io.Reader, chunkSize int, interval time.Duration, stop chan bool) (n int, err error) {
buffer := make([]byte, chunkSize)
for {
var readBytes int
readBytes, err = reader.Read(buffer)
n += readBytes
if err != nil {
if err == io.EOF {
err = nil
}
return
}
select {
case <-stop:
return
default:
var readBytes int
readBytes, err = reader.Read(buffer)
n += readBytes
if err != nil {
if err == io.EOF {
err = nil
}
return
}
time.Sleep(interval)
case <-time.After(interval):
}
}
}

View File

@ -363,7 +363,7 @@ func TestConsumeWithSpeed(t *testing.T) {
reader := strings.NewReader("1234567890")
chunksize := 2
bytes1, err := ConsumeWithSpeed(reader, chunksize, 1*time.Millisecond, nil)
bytes1, err := ConsumeWithSpeed(reader, chunksize, 1*time.Second, nil)
if err != nil {
t.Fatal(err)
}
@ -385,7 +385,7 @@ func TestConsumeWithSpeedWithStop(t *testing.T) {
stopIt <- true
}()
bytes1, err := ConsumeWithSpeed(reader, chunksize, 2*time.Millisecond, stopIt)
bytes1, err := ConsumeWithSpeed(reader, chunksize, 20*time.Millisecond, stopIt)
if err != nil {
t.Fatal(err)
}