arbiter-test-0.1.0.0
arbiter-test
Safe HaskellNone
LanguageGHC2024

Arbiter.Test.RateLimit

Description

Backend-parameterized integration tests for per-job rate limiting. Each backend supplies a runner over the shared RLReg registry.

Synopsis

Documentation

data RLPayloadSource #

A payload keyed by tenant, with a per-job token cost.

Constructors

RLPayload 

Fields

Instances

Instances details
FromJSON RLPayload Source # 
Instance details

Defined in Arbiter.Test.RateLimit

ToJSON RLPayload Source # 
Instance details

Defined in Arbiter.Test.RateLimit

HasRateLimit RLPayload Source # 
Instance details

Defined in Arbiter.Test.RateLimit

Eq RLPayload Source # 
Instance details

Defined in Arbiter.Test.RateLimit

Generic RLPayload Source # 
Instance details

Defined in Arbiter.Test.RateLimit

Associated Types

type Rep RLPayload 
Instance details

Defined in Arbiter.Test.RateLimit

type Rep RLPayload = D1 ('MetaData "RLPayload" "Arbiter.Test.RateLimit" "arbiter-test-0.1.0.0-inplace" 'False) (C1 ('MetaCons "RLPayload" 'PrefixI 'True) (S1 ('MetaSel ('Just "rlTenant") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "rlCost") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))
Show RLPayload Source # 
Instance details

Defined in Arbiter.Test.RateLimit

type Rep RLPayload Source # 
Instance details

Defined in Arbiter.Test.RateLimit

type Rep RLPayload = D1 ('MetaData "RLPayload" "Arbiter.Test.RateLimit" "arbiter-test-0.1.0.0-inplace" 'False) (C1 ('MetaCons "RLPayload" 'PrefixI 'True) (S1 ('MetaSel ('Just "rlTenant") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "rlCost") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)))

type RLReg = '[Queue "arbiter_ratelimit_test" RLPayload]Source #

A one-queue registry over RLPayload.

rateLimitTable :: TextSource #

Table name for RLReg, shared across backends.

setupRateLimitPolicy :: ByteString -> Text -> IO ()Source #

Upsert the registry's reflected policy rows into a schema.

rateLimitSpec :: forall env m. HasRegistry m RLReg => (forall a. env -> m a -> IO a) -> SpecWith envSource #

The rate-limit suite, run against any backend. Build the schema with setupOnce and empty it before each test with cleanupData. Seed the policies once with setupRateLimitPolicy. cleanupData keeps them.