blob: 48c320fc11c03feaef5969631b40bec226be5cb5 [file] [log] [blame]
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package slowmessage
import (
"errors"
"testing"
"time"
)
func TestDo(t *testing.T) {
var sfErr error
cbCalled := false
sfCalled := false
sfSleep := 0 * time.Second
reset := func() {
cbCalled = false
sfCalled = false
sfErr = nil
}
sf := func() error {
sfCalled = true
time.Sleep(sfSleep)
return sfErr
}
cb := func() { cbCalled = true }
// SF is not slow
reset()
if err := Do(10*time.Millisecond, sf, cb); err != nil {
t.Fatalf("err: %s", err)
}
if !sfCalled {
t.Fatal("should call")
}
if cbCalled {
t.Fatal("should not call")
}
// SF is not slow (with error)
reset()
sfErr = errors.New("error")
if err := Do(10*time.Millisecond, sf, cb); err == nil {
t.Fatalf("err: %s", err)
}
if !sfCalled {
t.Fatal("should call")
}
if cbCalled {
t.Fatal("should not call")
}
// SF is slow
reset()
sfSleep = 50 * time.Millisecond
if err := Do(10*time.Millisecond, sf, cb); err != nil {
t.Fatalf("err: %s", err)
}
if !sfCalled {
t.Fatal("should call")
}
if !cbCalled {
t.Fatal("should call")
}
// SF is slow (with error)
reset()
sfErr = errors.New("error")
sfSleep = 50 * time.Millisecond
if err := Do(10*time.Millisecond, sf, cb); err == nil {
t.Fatalf("err: %s", err)
}
if !sfCalled {
t.Fatal("should call")
}
if !cbCalled {
t.Fatal("should call")
}
}