(2009-05-23) Spooler - manages a queue of test jobs and several backends - public methods (used by frontends): - getStatus - getBackends - getBackendStatus, - getBackendInputFields - getBackendTestFields - appendJob - getResult, - normal progress: - get spooler handle - append a job: use 'appendJob' (cf. 'BackendJob' for required key-value-pairs) which will return a a job ID - get the result (used 'getResult' with the job ID; getResult returns a dictionary) - public methods (used by 'backendctl'): - addBackend - removeBackend Backend - execute/process tests - attributes: id, name, version, input fields, test environments - public methods: execute, getInputFields, getTestFields, shutdown - normal progress: - spooler calls execute - execute calls process_execute, which must be implemented by each backend - execute returns a dictionary BackendJob/TestJob - at least a dictionary with key-value-pairs - required keys: backend, submission/testTerm - all other keys are specified by the backend's input schema BackendResult/TestResult - at least a dictionary with key-value-pairs - required keys: value, message *value* - normal case: True/False (e.g., Haskell or Scheme backend) or 0..100 (e.g., Keywords backend) - error case: a negative integer - undefinded error: -42 - internal error (spooler): -100 - authentication failed (spooler): -110 - backend not registered (spooler): -120 - backend already registered (spooler): -121 - backend not found (spooler): -122 - invalid or insufficient job data (spooler): -150 - unexpected backend result type (spooler): -151 - internal error during backend call or in backend (spooler): -152 - internal error during job processing (spooler): -153 - no result for a job (spooler): -160 - internal error (backend): -200 - authentication failed (backend): -210 - internal error during test (backend): -215 - no test data found (backend): -216 - no test environment/specification selected (backend): -217 - internal error during syntax check (ProgrammingBackend): -220 - no compiler/interpreter defined (ProgrammingBackend): -221 - internal error during semantic check (ProgrammingBackend): -230 *message* - backend specific messages used as feedback