version: 1
style: unit
description: must aggressively timeout threads enqueued longer than waitQueueTimeoutMS
poolOptions:
  maxPoolSize: 1
  waitQueueTimeoutMS: 50
operations:
  - name: ready
  # Check out only possible connection
  - name: checkOut
    label: conn0
  # Start a thread, have it enter the wait queue
  - name: start
    target: thread1
  - name: checkOut
    thread: thread1
  # Wait for other thread to time out, then check in connection
  - name: waitForEvent
    event: ConnectionCheckOutFailed
    count: 1
  - name: checkIn
    connection: conn0
  # Rejoin thread1, should experience error
  - name: waitForThread
    target: thread1
error:
  type: WaitQueueTimeoutError
  message: Timed out while checking out a connection from connection pool
events:
  - type: ConnectionCheckOutStarted
    address: 42
  - type: ConnectionCheckedOut
    connectionId: 42
    address: 42
  - type: ConnectionCheckOutStarted
    address: 42
  - type: ConnectionCheckOutFailed
    reason: timeout
    address: 42
  - type: ConnectionCheckedIn
    connectionId: 42
    address: 42
ignore:
  - ConnectionCreated
  - ConnectionReady
  - ConnectionClosed
  - ConnectionPoolCreated
  - ConnectionPoolReady