# Throttle at an extremely limited rate.

# Set up throttling at just 1 tokens/s.
configure
throttle: 1
----

# Issue 3K RU write to force fetch more RU.
write bytes=3069945
----

wait-for-event
token-bucket-response
----

token-bucket
----
2000.00 tokens filling @ 1.00 tokens/s (limited to 5010.00 tokens)

# Issue another 4K RU write that should block.
write bytes=4093945 label=w1
----

# Expect maximum maxTryAgainAfter value.
timers
----
00:00:09.000
00:16:40.000

# Advance only 8 seconds, which isn't enough to trigger a token bucket request
# in order to extend the trickle duration.
advance wait=true
8s
----
00:00:08.000

not-completed label=w1
----

token-bucket
----
2008.00 tokens filling @ 1.00 tokens/s (limited to 5010.00 tokens) (4000.00 waiting tokens)

# Advance 1 more second, which should trigger a token bucket request to extend
# the trickle duration. Note that the trickle grant will not have been fully
# consumed at the time more is requested. The remainder will be rolled into the
# new trickle grant (i.e. 1.10 tokens/s rather than 1.00 tokens/s).
advance
1s
----
00:00:09.000

wait-for-event
token-bucket-response
----

token-bucket
----
2009.00 tokens filling @ 1.10 tokens/s (limited to 5011.00 tokens) (4000.00 waiting tokens)

advance
1991s
----
00:33:20.000

await label=w1
----
