Documentation

QueueTest extends Api4TestBase
in package
uses QueueTestTrait

Tags
group

headless

group

queue

Table of Contents

Properties

$testRecords  : array<string|int, mixed>
Records created which will be deleted during tearDown

Methods

__construct()  : mixed
cleanup()  : void
Quick clean by emptying tables created for the test.
createLoggedInUser()  : int
Emulate a logged in user since certain functions use that.
createTestRecord()  : array<string|int, mixed>|null
Inserts a test record, supplying all required values if not provided.
doSomething()  : mixed
dummyTask()  : bool
getDelayableDrivers()  : array<string|int, mixed>
getErrorModes()  : array<string|int, mixed>
getTestRecord()  : array<string|int, mixed>
onHookQueueRun()  : void
saveTestRecords()  : Result
Saves one or more test records, supplying default values.
setUpHeadless()  : CiviEnvBuilder
The setupHeadless function runs at the start of each test case, right before the headless environment reboots.
tearDown()  : void
Post test cleanup.
testBasicLinearPolling()  : void
Setup a queue with a line of back-to-back tasks.
testBasicParallelPolling()  : void
testBatchParallelPolling()  : void
Create a parallel queue. Claim and execute tasks as batches.
testDelayedStart()  : mixed
testEmptyPoll()  : void
testRetryWithDelinquencyAndSuccess()  : void
Add a task. The task-running agent is a bit delinquent... so it forgets the first few tasks. But the third one works!
testRetryWithEventualFailure()  : mixed
Add a task which is never going to succeed. The task fails every time, and eventually we either delete it or abort the queue.
testRetryWithPoliteExhaustion()  : mixed
Add a task which is never going to succeed. Try it multiple times (until we run out of retries).
testRunLoop()  : mixed
testRunLoop_abort()  : mixed
testSelect()  : void
testSelectRunAs()  : void
testServiceQueue_NeverComplete()  : void
If a queue is created as a long-term service, then its work is never complete.
testUserJobQueue_Completion()  : void
If a queue is created as part of a user-job, then it has a fixed scope-of-work. The status should flip after completing its work.
userLogout()  : mixed
assertCallback()  : mixed
assertQueueStats()  : mixed
deleteTestRecords()  : void
Delete records previously created by the `saveTestRecords` function.
getRequiredValuesToCreate()  : array<string|int, mixed>
Get the required fields for the api entity + action.
setUp()  : void
waitFor()  : int
Repeatedly check $condition until it returns true (or until we exhaust timeout).
waitForClaim()  : array<string|int, mixed>|null
createOptionValue()  : mixed|null
Creates a dummy option value when one is required but the option list is empty
getFkID()  : int
Get an ID for the appropriate entity.
getRandomValue()  : int|null|string
getRequiredValue()  : mixed
Attempt to get a value using field option, defaults, FKEntity, or a random value based on the data type.
randomLetters()  : string
Generate some random lowercase letters.

Properties

$testRecords

Records created which will be deleted during tearDown

protected array<string|int, mixed> $testRecords = []

Methods

__construct()

public __construct([string $name = NULL ][, array<string|int, mixed> $data = [] ][, string $dataName = '' ]) : mixed
Parameters
$name : string = NULL
$data : array<string|int, mixed> = []
$dataName : string = ''
Tags
see
CiviUnitTestCase

cleanup()

Quick clean by emptying tables created for the test.

public cleanup(array{tablesToTruncate: array} $params) : void
Parameters
$params : array{tablesToTruncate: array}

createTestRecord()

Inserts a test record, supplying all required values if not provided.

public createTestRecord(string $entityName[, array<string|int, mixed> $values = [] ]) : array<string|int, mixed>|null

Test records will be automatically deleted if deleteTestRecords is called.

This is a convenience helper for saveTestRecords when working with a single entity.

Parameters
$entityName : string
$values : array<string|int, mixed> = []
Tags
noinspection

PhpDocMissingThrowsInspection

noinspection

PhpUnhandledExceptionInspection

Return values
array<string|int, mixed>|null

getDelayableDrivers()

public getDelayableDrivers() : array<string|int, mixed>
Return values
array<string|int, mixed>

getErrorModes()

public getErrorModes() : array<string|int, mixed>
Return values
array<string|int, mixed>

getTestRecord()

public getTestRecord(string $entityName, array<string|int, mixed>|string|int $idOrFilters) : array<string|int, mixed>
Parameters
$entityName : string
$idOrFilters : array<string|int, mixed>|string|int

Either the entity id or filters like ['name' => 'foo']

Tags
throws
CRM_Core_Exception
Return values
array<string|int, mixed>

saveTestRecords()

Saves one or more test records, supplying default values.

public saveTestRecords(string $entityName, array<string|int, mixed> $saveParams) : Result

Test records will be deleted when the deleteTestRecords function is called, usually in tearDown.

If the transactional method is in use (and nothing is down to cause the transaction to commit, such as creating custom fields) then the deleteTestRecords function does not need to be called.

Parameters
$entityName : string
$saveParams : array<string|int, mixed>
Tags
noinspection

PhpDocMissingThrowsInspection

noinspection

PhpUnhandledExceptionInspection

Return values
Result

setUpHeadless()

The setupHeadless function runs at the start of each test case, right before the headless environment reboots.

public setUpHeadless() : CiviEnvBuilder

It should perform any necessary steps required for putting the database in a consistent baseline -- such as loading schema and extensions.

The utility \Civi\Test::headless() provides a number of helper functions for managing this setup, and it includes optimizations to avoid redundant setup work.

Return values
CiviEnvBuilder

testBasicLinearPolling()

Setup a queue with a line of back-to-back tasks.

public testBasicLinearPolling() : void

The first task runs normally. The second task fails at first, but it is retried, and then succeeds.

Tags
throws
CRM_Core_Exception
throws
UnauthorizedException

testBasicParallelPolling()

public testBasicParallelPolling() : void

testBatchParallelPolling()

Create a parallel queue. Claim and execute tasks as batches.

public testBatchParallelPolling() : void

Batches are executed via hook_civicrm_queueRun_{runner}.

Tags
throws
CRM_Core_Exception
throws
UnauthorizedException

testDelayedStart()

public testDelayedStart(array<string|int, mixed> $queueSpec) : mixed
Parameters
$queueSpec : array<string|int, mixed>
Tags
dataProvider

getDelayableDrivers

testEmptyPoll()

public testEmptyPoll() : void

testRetryWithDelinquencyAndSuccess()

Add a task. The task-running agent is a bit delinquent... so it forgets the first few tasks. But the third one works!

public testRetryWithDelinquencyAndSuccess() : void

testRetryWithEventualFailure()

Add a task which is never going to succeed. The task fails every time, and eventually we either delete it or abort the queue.

public testRetryWithEventualFailure(string $errorMode) : mixed
Parameters
$errorMode : string

Either 'delete' or 'abort'

Tags
dataProvider

getErrorModes

testRetryWithPoliteExhaustion()

Add a task which is never going to succeed. Try it multiple times (until we run out of retries).

public testRetryWithPoliteExhaustion(string $errorMode) : mixed
Parameters
$errorMode : string

Either 'delete' or 'abort'

Tags
dataProvider

getErrorModes

testRunLoop_abort()

public testRunLoop_abort() : mixed

testSelectRunAs()

public testSelectRunAs() : void

testUserJobQueue_Completion()

If a queue is created as part of a user-job, then it has a fixed scope-of-work. The status should flip after completing its work.

public testUserJobQueue_Completion() : void
Tags
throws
CRM_Core_Exception
throws
UnauthorizedException

assertCallback()

protected assertCallback(mixed $expectMethod, mixed $expectArgs, mixed $actualTask) : mixed
Parameters
$expectMethod : mixed
$expectArgs : mixed
$actualTask : mixed

deleteTestRecords()

Delete records previously created by the `saveTestRecords` function.

protected deleteTestRecords() : void

This should be called during the tearDown function if the test class does not use the transactional interface.

Tags
noinspection

PhpUnhandledExceptionInspection

getRequiredValuesToCreate()

Get the required fields for the api entity + action.

protected getRequiredValuesToCreate(string $entity[, array<string|int, mixed> $values = [] ]) : array<string|int, mixed>
Parameters
$entity : string
$values : array<string|int, mixed> = []
Tags
throws
CRM_Core_Exception
Return values
array<string|int, mixed>

waitFor()

Repeatedly check $condition until it returns true (or until we exhaust timeout).

protected waitFor(float $interval, float $timeout, callable $condition) : int
Parameters
$interval : float

Seconds to wait between checks.

$timeout : float

Total maximum seconds to wait across all checks.

$condition : callable

The condition to check.

Return values
int

Total number of intervals we had to wait/sleep.

waitForClaim()

protected waitForClaim(float $interval, float $timeout, string $queueName) : array<string|int, mixed>|null
Parameters
$interval : float
$timeout : float
$queueName : string
Return values
array<string|int, mixed>|null

createOptionValue()

Creates a dummy option value when one is required but the option list is empty

private createOptionValue(string $tableName, string $fieldName) : mixed|null
Parameters
$tableName : string
$fieldName : string
Return values
mixed|null

getFkID()

Get an ID for the appropriate entity.

private getFkID(string $fkEntity) : int
Parameters
$fkEntity : string
Tags
throws
CRM_Core_Exception
Return values
int

getRandomValue()

private getRandomValue(mixed $dataType) : int|null|string
Parameters
$dataType : mixed
Tags
noinspection

PhpUnhandledExceptionInspection

noinspection

PhpDocMissingThrowsInspection

Return values
int|null|string

getRequiredValue()

Attempt to get a value using field option, defaults, FKEntity, or a random value based on the data type.

private getRequiredValue(array<string|int, mixed> $field) : mixed
Parameters
$field : array<string|int, mixed>
Tags
throws
CRM_Core_Exception

randomLetters()

Generate some random lowercase letters.

private randomLetters([int $len = 10 ]) : string
Parameters
$len : int = 10
Return values
string

        
On this page

Search results