Experimental project

This is a sandbox project, which contains experimental code for developer use only.

This is a fork of Boombatower's github code for the 'Conduit' project (a potential successor for qa.d.o).

The original is available at https://github.com/boombatower/conduit.

Conduit Flow

1. Job creation

  • Each plugin provides it's own node type, default job properties, and property validation logic.
  • Creation of a job node triggers conduit_insert()
    • conduit_job_info() determines the plugin, module, and category for the job, based on the job node type
    • The merged properties array is generated via hook_node_load()
    • conduit_queue_create() generates the appropriate job queue items and returns the item count
    • Job fields and result placeholders are created for each job chunk and inserted into the node fields
    • The plugin's hook_conduit_init() function is called to initiate any plugin-specific fields
    • hook_conduit_queued is invoked, to allow modules to react to a job being queued
    • hook_insert() runs before field_attach_insert(), so the fields are then saved after execution of hte function.

2. Job added to queue

  • Jobs are added to the queue when conduit_insert() calls conduit_queue_create()
    • conduit_job_info() determines the plugin, module, and category for the job, based on the job node type
    • The appropriate 'category' queue object is retrieved
    • hook_conduit_queue_build() is invoked to allow the plugin to retrieve any items it might need to queue, and/or properties to override on each job.
    • The item(s) are then added to the queue via DrupalQueueInterface::CreateItem()

3. Job Re-testing

  • When a job node is updated, hook_update checks to see if a new revision is being generated. If so, conduit_insert() is invoked to re-queue the test

Project information

  • Created by jthorson on , updated