Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
getWaitDuration example
return
max
(
0,
(
-
microtime
(
true
)
)
+
$this
->timeToAct
)
;
}
public
function
getRateLimit
(
)
: RateLimit
{
return
$this
->rateLimit;
}
public
function
wait
(
)
: void
{
usleep
(
(int)
(
$this
->
getWaitDuration
(
)
* 1e6
)
)
;
}
}
ClockMock::
register
(
TokenBucketLimiter::
class
)
;
ClockMock::
register
(
InMemoryStorage::
class
)
;
ClockMock::
register
(
TokenBucket::
class
)
;
ClockMock::
register
(
RateLimit::
class
)
;
}
public
function
testReserve
(
)
{
$limiter
=
$this
->
createLimiter
(
)
;
$this
->
assertEquals
(
0,
$limiter
->
reserve
(
5
)
->
getWaitDuration
(
)
)
;
$this
->
assertEquals
(
0,
$limiter
->
reserve
(
5
)
->
getWaitDuration
(
)
)
;
$this
->
assertEquals
(
1,
$limiter
->
reserve
(
5
)
->
getWaitDuration
(
)
)
;
}
public
function
testReserveMoreTokensThanBucketSize
(
)
{
$this
->
expectException
(
\LogicException::
class
)
;
$this
->
expectExceptionMessage
(
'Cannot reserve more tokens (15) than the burst size of the rate limiter (10).'
)
;
$limiter
=
$this
->
createLimiter
(
)
;
$limiter
->
reserve
(
15
)
;
}