mirror of
https://github.com/IBM/fp-go.git
synced 2025-07-03 00:47:05 +02:00
.github
array
assert
boolean
bounded
bytes
cli
constant
constraints
context
di
either
endomorphism
eq
erasure
errors
exec
file
function
http
identity
internal
io
ioeither
iooption
iterator
json
lambda
lazy
testing
apply.go
bind.go
bind_test.go
eq.go
example_lazy_test.go
lazy.go
lazy_test.go
retry.go
retry_test.go
sequence.go
traverse.go
logging
magma
monoid
number
optics
option
ord
pair
predicate
reader
readereither
readerio
readerioeither
record
reflect
resources
retry
samples
semigroup
state
statereaderioeither
string
tuple
writer
.gitignore
.releaserc
LICENSE
README.md
coverage.bat
go.mod
go.sum
main.go
renovate.json
scan.bat
test.bat
48 lines
1.2 KiB
Go
48 lines
1.2 KiB
Go
![]() |
// Copyright (c) 2023 IBM Corp.
|
||
|
// All rights reserved.
|
||
|
//
|
||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
// you may not use this file except in compliance with the License.
|
||
|
// You may obtain a copy of the License at
|
||
|
//
|
||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||
|
//
|
||
|
// Unless required by applicable law or agreed to in writing, software
|
||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
// See the License for the specific language governing permissions and
|
||
|
// limitations under the License.
|
||
|
|
||
|
package lazy
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"strings"
|
||
|
"testing"
|
||
|
"time"
|
||
|
|
||
|
R "github.com/IBM/fp-go/retry"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
)
|
||
|
|
||
|
var expLogBackoff = R.ExponentialBackoff(10)
|
||
|
|
||
|
// our retry policy with a 1s cap
|
||
|
var testLogPolicy = R.CapDelay(
|
||
|
2*time.Second,
|
||
|
R.Monoid.Concat(expLogBackoff, R.LimitRetries(20)),
|
||
|
)
|
||
|
|
||
|
func TestRetry(t *testing.T) {
|
||
|
action := func(status R.RetryStatus) Lazy[string] {
|
||
|
return Of(fmt.Sprintf("Retrying %d", status.IterNumber))
|
||
|
}
|
||
|
check := func(value string) bool {
|
||
|
return !strings.Contains(value, "5")
|
||
|
}
|
||
|
|
||
|
r := Retrying(testLogPolicy, action, check)
|
||
|
|
||
|
assert.Equal(t, "Retrying 5", r())
|
||
|
}
|