toil.test.utils.utilsTest¶
Attributes¶
Classes¶
Class to represent configuration operations for a toil workflow run. |
|
A context manager that represents a Toil workflow. |
|
Class represents a unit of work in toil. |
|
A common base class for Toil tests. |
|
Tool for reporting on job status. |
|
Tests the utilities that toil ships with, e.g. stats and status, in conjunction with restart |
|
Runs child job with same resources as self in an attempt to chain the jobs on the same worker |
Functions¶
|
Find the path to the given entry point that should work on a worker. |
|
A convenience wrapper around subprocess.check_call that logs the command before passing it |
|
Return a string representing a temporary file, that must be manually deleted. |
|
Use this to decorate integration tests so as to skip them during regular builds. |
|
Use as a decorator before test classes or methods to run only if AWS EC2 is usable. |
|
Use as a decorator before test classes or methods to only run them if CWLTool is installed |
|
Use as a decorator before test classes or methods to only run them if |
|
Decorate classes or methods that depend on any features from rsync version 3.0.0+. |
|
Use this decorator to identify tests that are slow and not critical. |
|
|
|
Sum together all the stats information in the job store. |
|
Collate the stats and report |
Module Contents¶
- toil.test.utils.utilsTest.pkg_root¶
- toil.test.utils.utilsTest.resolveEntryPoint(entryPoint)¶
Find the path to the given entry point that should work on a worker.
- class toil.test.utils.utilsTest.Config¶
Class to represent configuration operations for a toil workflow run.
- batch_logs_dir: str | None¶
The backing scheduler will be instructed, if possible, to save logs to this directory, where the leader can read them.
- workflowID: str | None¶
This attribute uniquely identifies the job store and therefore the workflow. It is necessary in order to distinguish between two consecutive workflows for which self.jobStore is the same, e.g. when a job store name is reused after a previous run has finished successfully and its job store has been clean up.
- defaultAccelerators: List[toil.job.AcceleratorRequirement]¶
- set_from_default_config()¶
- Return type:
None
- prepare_start()¶
After options are set, prepare for initial start of workflow.
- Return type:
None
- prepare_restart()¶
Before restart options are set, prepare for a restart of a workflow. Set up any execution-specific parameters and clear out any stale ones.
- Return type:
None
- setOptions(options)¶
Creates a config object from the options object.
- Parameters:
options (argparse.Namespace)
- Return type:
None
- check_configuration_consistency()¶
Old checks that cannot be fit into an action class for argparse
- Return type:
None
- class toil.test.utils.utilsTest.Toil(options)¶
Bases:
ContextManager[Toil]A context manager that represents a Toil workflow.
Specifically the batch system, job store, and its configuration.
- Parameters:
options (argparse.Namespace)
- __enter__()¶
Derive configuration from the command line options.
Then load the job store and, on restart, consolidate the derived configuration with the one from the previous invocation of the workflow.
- Return type:
- __exit__(exc_type, exc_val, exc_tb)¶
Clean up after a workflow invocation.
Depending on the configuration, delete the job store.
- Parameters:
exc_type (Optional[Type[BaseException]])
exc_val (Optional[BaseException])
exc_tb (Optional[types.TracebackType])
- Return type:
Literal[False]
- start(rootJob)¶
Invoke a Toil workflow with the given job as the root for an initial run.
This method must be called in the body of a
with Toil(...) as toil:statement. This method should not be called more than once for a workflow that has not finished.- Parameters:
rootJob (toil.job.Job) – The root job of the workflow
- Returns:
The root job’s return value
- Return type:
Any
- restart()¶
Restarts a workflow that has been interrupted.
- Returns:
The root job’s return value
- Return type:
Any
- classmethod getJobStore(locator)¶
Create an instance of the concrete job store implementation that matches the given locator.
- Parameters:
locator (str) – The location of the job store to be represent by the instance
- Returns:
an instance of a concrete subclass of AbstractJobStore
- Return type:
- static createBatchSystem(config)¶
Create an instance of the batch system specified in the given config.
- Parameters:
config (Config) – the current configuration
- Returns:
an instance of a concrete subclass of AbstractBatchSystem
- Return type:
- importFile(srcUrl: str, sharedFileName: str, symlink: bool = True) None¶
- importFile(srcUrl: str, sharedFileName: None = None, symlink: bool = True) toil.fileStores.FileID
- import_file(src_uri: str, shared_file_name: str, symlink: bool = True, check_existence: bool = True) None¶
- import_file(src_uri: str, shared_file_name: None = None, symlink: bool = True, check_existence: bool = True) toil.fileStores.FileID
Import the file at the given URL into the job store.
By default, returns None if the file does not exist.
- Parameters:
check_existence – If true, raise FileNotFoundError if the file does not exist. If false, return None when the file does not exist.
See
toil.jobStores.abstractJobStore.AbstractJobStore.importFile()for a full description
- exportFile(jobStoreFileID, dstUrl)¶
- Parameters:
jobStoreFileID (toil.fileStores.FileID)
dstUrl (str)
- Return type:
None
- export_file(file_id, dst_uri)¶
Export file to destination pointed at by the destination URL.
See
toil.jobStores.abstractJobStore.AbstractJobStore.exportFile()for a full description- Parameters:
file_id (toil.fileStores.FileID)
dst_uri (str)
- Return type:
None
- static normalize_uri(uri, check_existence=False)¶
Given a URI, if it has no scheme, prepend “file:”.
- static getToilWorkDir(configWorkDir=None)¶
Return a path to a writable directory under which per-workflow directories exist.
This directory is always required to exist on a machine, even if the Toil worker has not run yet. If your workers and leader have different temp directories, you may need to set TOIL_WORKDIR.
- classmethod get_toil_coordination_dir(config_work_dir, config_coordination_dir)¶
Return a path to a writable directory, which will be in memory if convenient. Ought to be used for file locking and coordination.
- Parameters:
- Returns:
Path to the Toil coordination directory. Ought to be on a POSIX filesystem that allows directories containing open files to be deleted.
- Return type:
- static get_workflow_path_component(workflow_id)¶
Get a safe filesystem path component for a workflow.
Will be consistent for all processes on a given machine, and different for all processes on different machines.
- classmethod getLocalWorkflowDir(workflowID, configWorkDir=None)¶
Return the directory where worker directories and the cache will be located for this workflow on this machine.
- classmethod get_local_workflow_coordination_dir(workflow_id, config_work_dir, config_coordination_dir)¶
Return the directory where coordination files should be located for this workflow on this machine. These include internal Toil databases and lock files for the machine.
If an in-memory filesystem is available, it is used. Otherwise, the local workflow directory, which may be on a shared network filesystem, is used.
- Parameters:
- Returns:
Path to the local workflow coordination directory on this machine.
- Return type:
- class toil.test.utils.utilsTest.Job(memory=None, cores=None, disk=None, accelerators=None, preemptible=None, preemptable=None, unitName='', checkpoint=False, displayName='', descriptionClass=None, local=None)¶
Class represents a unit of work in toil.
- Parameters:
memory (Optional[ParseableIndivisibleResource])
cores (Optional[ParseableDivisibleResource])
disk (Optional[ParseableIndivisibleResource])
accelerators (Optional[ParseableAcceleratorRequirement])
preemptible (Optional[ParseableFlag])
preemptable (Optional[ParseableFlag])
unitName (Optional[str])
checkpoint (Optional[bool])
displayName (Optional[str])
descriptionClass (Optional[type])
local (Optional[bool])
- __str__()¶
Produce a useful logging string to identify this Job and distinguish it from its JobDescription.
- check_initialized()¶
Ensure that Job.__init__() has been called by any subclass __init__().
This uses the fact that the self._description instance variable should always be set after __init__().
If __init__() has not been called, raise an error.
- Return type:
None
- property jobStoreID: str | TemporaryID¶
Get the ID of this Job.
- Return type:
Union[str, TemporaryID]
- property description: JobDescription¶
Expose the JobDescription that describes this job.
- Return type:
- property memory¶
- The maximum number of bytes of memory the job will require to run.
- property accelerators: List[AcceleratorRequirement]¶
Any accelerators, such as GPUs, that are needed.
- Return type:
List[AcceleratorRequirement]
- preemptable()¶
- assignConfig(config)¶
Assign the given config object.
It will be used by various actions implemented inside the Job class.
- Parameters:
config (toil.common.Config) – Config object to query
- Return type:
None
- run(fileStore)¶
Override this function to perform work and dynamically create successor jobs.
- Parameters:
fileStore (toil.fileStores.abstractFileStore.AbstractFileStore) – Used to create local and globally sharable temporary files and to send log messages to the leader process.
- Returns:
The return value of the function can be passed to other jobs by means of
toil.job.Job.rv().- Return type:
Any
- addChild(childJob)¶
Add a childJob to be run as child of this job.
Child jobs will be run directly after this job’s
toil.job.Job.run()method has completed.
- hasChild(childJob)¶
Check if childJob is already a child of this job.
- addFollowOn(followOnJob)¶
Add a follow-on job.
Follow-on jobs will be run after the child jobs and their successors have been run.
- hasPredecessor(job)¶
Check if a given job is already a predecessor of this job.
- hasFollowOn(followOnJob)¶
Check if given job is already a follow-on of this job.
- addService(service, parentService=None)¶
Add a service.
The
toil.job.Job.Service.start()method of the service will be called after the run method has completed but before any successors are run. The service’stoil.job.Job.Service.stop()method will be called once the successors of the job have been run.Services allow things like databases and servers to be started and accessed by jobs in a workflow.
- Raises:
toil.job.JobException – If service has already been made the child of a job or another service.
- Parameters:
- Returns:
a promise that will be replaced with the return value from
toil.job.Job.Service.start()of service in any successor of the job.- Return type:
- hasService(service)¶
Return True if the given Service is a service of this job, and False otherwise.
- addChildFn(fn, *args, **kwargs)¶
Add a function as a child job.
- Parameters:
fn (Callable) – Function to be run as a child job with
*argsand**kwargsas arguments to this function. See toil.job.FunctionWrappingJob for reserved keyword arguments used to specify resource requirements.- Returns:
The new child job that wraps fn.
- Return type:
- addFollowOnFn(fn, *args, **kwargs)¶
Add a function as a follow-on job.
- Parameters:
fn (Callable) – Function to be run as a follow-on job with
*argsand**kwargsas arguments to this function. See toil.job.FunctionWrappingJob for reserved keyword arguments used to specify resource requirements.- Returns:
The new follow-on job that wraps fn.
- Return type:
- addChildJobFn(fn, *args, **kwargs)¶
Add a job function as a child job.
See
toil.job.JobFunctionWrappingJobfor a definition of a job function.- Parameters:
fn (Callable) – Job function to be run as a child job with
*argsand**kwargsas arguments to this function. See toil.job.JobFunctionWrappingJob for reserved keyword arguments used to specify resource requirements.- Returns:
The new child job that wraps fn.
- Return type:
- addFollowOnJobFn(fn, *args, **kwargs)¶
Add a follow-on job function.
See
toil.job.JobFunctionWrappingJobfor a definition of a job function.- Parameters:
fn (Callable) – Job function to be run as a follow-on job with
*argsand**kwargsas arguments to this function. See toil.job.JobFunctionWrappingJob for reserved keyword arguments used to specify resource requirements.- Returns:
The new follow-on job that wraps fn.
- Return type:
- property tempDir: str¶
Shortcut to calling
job.fileStore.getLocalTempDir().Temp dir is created on first call and will be returned for first and future calls :return: Path to tempDir. See job.fileStore.getLocalTempDir
- Return type:
- log(text, level=logging.INFO)¶
Log using
fileStore.log_to_leader().- Parameters:
text (str)
- Return type:
None
- static wrapFn(fn, *args, **kwargs)¶
Makes a Job out of a function.
Convenience function for constructor of
toil.job.FunctionWrappingJob.- Parameters:
fn – Function to be run with
*argsand**kwargsas arguments. See toil.job.JobFunctionWrappingJob for reserved keyword arguments used to specify resource requirements.- Returns:
The new function that wraps fn.
- Return type:
- static wrapJobFn(fn, *args, **kwargs)¶
Makes a Job out of a job function.
Convenience function for constructor of
toil.job.JobFunctionWrappingJob.- Parameters:
fn – Job function to be run with
*argsand**kwargsas arguments. See toil.job.JobFunctionWrappingJob for reserved keyword arguments used to specify resource requirements.- Returns:
The new job function that wraps fn.
- Return type:
- encapsulate(name=None)¶
Encapsulates the job, see
toil.job.EncapsulatedJob. Convenience function for constructor oftoil.job.EncapsulatedJob.- Parameters:
name (Optional[str]) – Human-readable name for the encapsulated job.
- Returns:
an encapsulated version of this job.
- Return type:
- rv(*path)¶
Create a promise (
toil.job.Promise).The “promise” representing a return value of the job’s run method, or, in case of a function-wrapping job, the wrapped function’s return value.
- Parameters:
path ((Any)) – Optional path for selecting a component of the promised return value. If absent or empty, the entire return value will be used. Otherwise, the first element of the path is used to select an individual item of the return value. For that to work, the return value must be a list, dictionary or of any other type implementing the __getitem__() magic method. If the selected item is yet another composite value, the second element of the path can be used to select an item from it, and so on. For example, if the return value is [6,{‘a’:42}], .rv(0) would select 6 , rv(1) would select {‘a’:3} while rv(1,’a’) would select 3. To select a slice from a return value that is slicable, e.g. tuple or list, the path element should be a slice object. For example, assuming that the return value is [6, 7, 8, 9] then .rv(slice(1, 3)) would select [7, 8]. Note that slicing really only makes sense at the end of path.
- Returns:
A promise representing the return value of this jobs
toil.job.Job.run()method.- Return type:
- registerPromise(path)¶
- prepareForPromiseRegistration(jobStore)¶
Set up to allow this job’s promises to register themselves.
Prepare this job (the promisor) so that its promises can register themselves with it, when the jobs they are promised to (promisees) are serialized.
The promissee holds the reference to the promise (usually as part of the job arguments) and when it is being pickled, so will the promises it refers to. Pickling a promise triggers it to be registered with the promissor.
- Parameters:
- Return type:
None
- checkJobGraphForDeadlocks()¶
Ensures that a graph of Jobs (that hasn’t yet been saved to the JobStore) doesn’t contain any pathological relationships between jobs that would result in deadlocks if we tried to run the jobs.
See
toil.job.Job.checkJobGraphConnected(),toil.job.Job.checkJobGraphAcyclic()andtoil.job.Job.checkNewCheckpointsAreLeafVertices()for more info.- Raises:
toil.job.JobGraphDeadlockException – if the job graph is cyclic, contains multiple roots or contains checkpoint jobs that are not leaf vertices when defined (see
toil.job.Job.checkNewCheckpointsAreLeaves()).
- getRootJobs()¶
Return the set of root job objects that contain this job.
A root job is a job with no predecessors (i.e. which are not children, follow-ons, or services).
Only deals with jobs created here, rather than loaded from the job store.
- Return type:
Set[Job]
- checkJobGraphConnected()¶
- Raises:
toil.job.JobGraphDeadlockException – if
toil.job.Job.getRootJobs()does not contain exactly one root job.
As execution always starts from one root job, having multiple root jobs will cause a deadlock to occur.
Only deals with jobs created here, rather than loaded from the job store.
- checkJobGraphAcylic()¶
- Raises:
toil.job.JobGraphDeadlockException – if the connected component of jobs containing this job contains any cycles of child/followOn dependencies in the augmented job graph (see below). Such cycles are not allowed in valid job graphs.
A follow-on edge (A, B) between two jobs A and B is equivalent to adding a child edge to B from (1) A, (2) from each child of A, and (3) from the successors of each child of A. We call each such edge an edge an “implied” edge. The augmented job graph is a job graph including all the implied edges.
For a job graph G = (V, E) the algorithm is
O(|V|^2). It isO(|V| + |E|)for a graph with no follow-ons. The former follow-on case could be improved!Only deals with jobs created here, rather than loaded from the job store.
- checkNewCheckpointsAreLeafVertices()¶
A checkpoint job is a job that is restarted if either it fails, or if any of its successors completely fails, exhausting their retries.
A job is a leaf it is has no successors.
A checkpoint job must be a leaf when initially added to the job graph. When its run method is invoked it can then create direct successors. This restriction is made to simplify implementation.
Only works on connected components of jobs not yet added to the JobStore.
- Raises:
toil.job.JobGraphDeadlockException – if there exists a job being added to the graph for which checkpoint=True and which is not a leaf.
- Return type:
None
- defer(function, *args, **kwargs)¶
Register a deferred function, i.e. a callable that will be invoked after the current attempt at running this job concludes. A job attempt is said to conclude when the job function (or the
toil.job.Job.run()method for class-based jobs) returns, raises an exception or after the process running it terminates abnormally. A deferred function will be called on the node that attempted to run the job, even if a subsequent attempt is made on another node. A deferred function should be idempotent because it may be called multiple times on the same node or even in the same process. More than one deferred function may be registered per job attempt by calling this method repeatedly with different arguments. If the same function is registered twice with the same or different arguments, it will be called twice per job attempt.Examples for deferred functions are ones that handle cleanup of resources external to Toil, like Docker containers, files outside the work directory, etc.
- class Runner¶
Used to setup and run Toil workflow.
- static getDefaultArgumentParser(jobstore_as_flag=False)¶
Get argument parser with added toil workflow options.
- Parameters:
jobstore_as_flag (bool) – make the job store option a –jobStore flag instead of a required jobStore positional argument.
- Returns:
The argument parser used by a toil workflow with added Toil options.
- Return type:
- static getDefaultOptions(jobStore=None, jobstore_as_flag=False)¶
Get default options for a toil workflow.
- Parameters:
- Returns:
The options used by a toil workflow.
- Return type:
- static addToilOptions(parser, jobstore_as_flag=False)¶
Adds the default toil options to an
optparseorargparseparser object.- Parameters:
parser (Union[optparse.OptionParser, argparse.ArgumentParser]) – Options object to add toil options to.
jobstore_as_flag (bool) – make the job store option a –jobStore flag instead of a required jobStore positional argument.
- Return type:
None
- static startToil(job, options)¶
Run the toil workflow using the given options.
Deprecated by toil.common.Toil.start.
(see Job.Runner.getDefaultOptions and Job.Runner.addToilOptions) starting with this job. :param job: root job of the workflow :raises: toil.exceptions.FailedJobsException if at the end of function there remain failed jobs. :return: The return value of the root job’s run function.
- Parameters:
job (Job)
- Return type:
Any
- class Service(memory=None, cores=None, disk=None, accelerators=None, preemptible=None, unitName=None)¶
Bases:
RequirerAbstract class used to define the interface to a service.
Should be subclassed by the user to define services.
Is not executed as a job; runs within a ServiceHostJob.
- abstract start(job)¶
Start the service.
- Parameters:
job (Job) – The underlying host job that the service is being run in. Can be used to register deferred functions, or to access the fileStore for creating temporary files.
- Returns:
An object describing how to access the service. The object must be pickleable and will be used by jobs to access the service (see
toil.job.Job.addService()).- Return type:
Any
- abstract stop(job)¶
Stops the service. Function can block until complete.
- Parameters:
job (Job) – The underlying host job that the service is being run in. Can be used to register deferred functions, or to access the fileStore for creating temporary files.
- Return type:
None
- check()¶
Checks the service is still running.
- Raises:
exceptions.RuntimeError – If the service failed, this will cause the service job to be labeled failed.
- Returns:
True if the service is still running, else False. If False then the service job will be terminated, and considered a success. Important point: if the service job exits due to a failure, it should raise a RuntimeError, not return False!
- Return type:
- getUserScript()¶
- Return type:
- getTopologicalOrderingOfJobs()¶
- Returns:
a list of jobs such that for all pairs of indices i, j for which i < j, the job at index i can be run before the job at index j.
- Return type:
List[Job]
Only considers jobs in this job’s subgraph that are newly added, not loaded from the job store.
Ignores service jobs.
- saveBody(jobStore)¶
Save the execution data for just this job to the JobStore, and fill in the JobDescription with the information needed to retrieve it.
The Job’s JobDescription must have already had a real jobStoreID assigned to it.
Does not save the JobDescription.
- Parameters:
jobStore (toil.jobStores.abstractJobStore.AbstractJobStore) – The job store to save the job body into.
- Return type:
None
- saveAsRootJob(jobStore)¶
Save this job to the given jobStore as the root job of the workflow.
- Returns:
the JobDescription describing this job.
- Parameters:
- Return type:
- classmethod loadJob(job_store, job_description)¶
Retrieves a
toil.job.Jobinstance from a JobStore- Parameters:
job_store (toil.jobStores.abstractJobStore.AbstractJobStore) – The job store.
job_description (JobDescription) – the JobDescription of the job to retrieve.
- Returns:
The job referenced by the JobDescription.
- Return type:
- set_debug_flag(flag)¶
Enable the given debug option on the job.
- Parameters:
flag (str)
- Return type:
None
- has_debug_flag(flag)¶
Return true if the given debug flag is set.
- files_downloaded_hook(host_and_job_paths=None)¶
Function that subclasses can call when they have downloaded their input files.
Will abort the job if the “download_only” debug flag is set.
Can be hinted a list of file path pairs outside and inside the job container, in which case the container environment can be reconstructed.
- toil.test.utils.utilsTest.system(command)¶
A convenience wrapper around subprocess.check_call that logs the command before passing it on. The command can be either a string or a sequence of strings. If it is a string shell=True will be passed to subprocess.check_call. :type command: str | sequence[string]
- class toil.test.utils.utilsTest.ToilTest(methodName='runTest')¶
Bases:
unittest.TestCaseA common base class for Toil tests.
Please have every test case directly or indirectly inherit this one.
When running tests you may optionally set the TOIL_TEST_TEMP environment variable to the path of a directory where you want temporary test files be placed. The directory will be created if it doesn’t exist. The path may be relative in which case it will be assumed to be relative to the project root. If TOIL_TEST_TEMP is not defined, temporary files and directories will be created in the system’s default location for such files and any temporary files or directories left over from tests will be removed automatically removed during tear down. Otherwise, left-over files will not be removed.
- setup_method(method)¶
- Parameters:
method (Any)
- Return type:
None
- classmethod setUpClass()¶
Hook method for setting up class fixture before running tests in the class.
- Return type:
None
- classmethod tearDownClass()¶
Hook method for deconstructing the class fixture after running all tests in the class.
- Return type:
None
- setUp()¶
Hook method for setting up the test fixture before exercising it.
- Return type:
None
- tearDown()¶
Hook method for deconstructing the test fixture after testing it.
- Return type:
None
- toil.test.utils.utilsTest.get_temp_file(suffix='', rootDir=None)¶
Return a string representing a temporary file, that must be manually deleted.
- toil.test.utils.utilsTest.integrative(test_item)¶
Use this to decorate integration tests so as to skip them during regular builds.
We define integration tests as A) involving other, non-Toil software components that we develop and/or B) having a higher cost (time or money).
- Parameters:
test_item (MT)
- Return type:
MT
- toil.test.utils.utilsTest.needs_aws_ec2(test_item)¶
Use as a decorator before test classes or methods to run only if AWS EC2 is usable.
- Parameters:
test_item (MT)
- Return type:
MT
- toil.test.utils.utilsTest.needs_cwl(test_item)¶
Use as a decorator before test classes or methods to only run them if CWLTool is installed and configured.
- Parameters:
test_item (MT)
- Return type:
MT
- toil.test.utils.utilsTest.needs_docker(test_item)¶
Use as a decorator before test classes or methods to only run them if docker is installed and docker-based tests are enabled.
- Parameters:
test_item (MT)
- Return type:
MT
- toil.test.utils.utilsTest.needs_rsync3(test_item)¶
Decorate classes or methods that depend on any features from rsync version 3.0.0+.
Necessary because
utilsTest.testAWSProvisionerUtils()uses option –protect-args which is only available in rsync 3- Parameters:
test_item (MT)
- Return type:
MT
- toil.test.utils.utilsTest.slow(test_item)¶
Use this decorator to identify tests that are slow and not critical. Skip if TOIL_TEST_QUICK is true.
- Parameters:
test_item (MT)
- Return type:
MT
- toil.test.utils.utilsTest.makeFileToSort(fileName, lines=defaultLines, lineLen=defaultLineLen)¶
- toil.test.utils.utilsTest.get_stats(jobStore)¶
Sum together all the stats information in the job store.
Produces one object containing lists of the values from all the summed objects.
- Parameters:
- Return type:
- toil.test.utils.utilsTest.process_data(config, stats)¶
Collate the stats and report
- Parameters:
config (toil.common.Config)
stats (toil.lib.expando.Expando)
- Return type:
- class toil.test.utils.utilsTest.ToilStatus(jobStoreName, specifiedJobs=None)¶
Tool for reporting on job status.
- print_dot_chart()¶
Print a dot output graph representing the workflow.
- Return type:
None
- printJobLog()¶
Takes a list of jobs, finds their log files, and prints them to the terminal.
- Return type:
None
- printJobChildren()¶
Takes a list of jobs, and prints their successors.
- Return type:
None
- printAggregateJobStats(properties, childNumber)¶
Prints each job’s ID, log file, remaining tries, and other properties.
- report_on_jobs()¶
Gathers information about jobs such as its child jobs and status.
- Returns jobStats:
Dict containing some lists of jobs by category, and some lists of job properties for each job in self.jobsToReport.
- Return type:
Dict[str, Any]
- static getPIDStatus(jobStoreName)¶
Determine the status of a process with a particular local pid.
Checks to see if a process exists or not.
- static getStatus(jobStoreName)¶
Determine the status of a workflow.
If the jobstore does not exist, this returns ‘QUEUED’, assuming it has not been created yet.
Checks for the existence of files created in the toil.Leader.run(). In toil.Leader.run(), if a workflow completes with failed jobs, ‘failed.log’ is created, otherwise ‘succeeded.log’ is written. If neither of these exist, the leader is still running jobs.
- print_bus_messages()¶
Goes through bus messages, returns a list of tuples which have correspondence between PID on assigned batch system and
Prints a list of the currently running jobs
- Return type:
None
- fetchRootJob()¶
Fetches the root job from the jobStore that provides context for all other jobs.
Exactly the same as the jobStore.loadRootJob() function, but with a different exit message if the root job is not found (indicating the workflow ran successfully to completion and certain stats cannot be gathered from it meaningfully such as which jobs are left to run).
- Raises:
JobException – if the root job does not exist.
- Return type:
- fetchUserJobs(jobs)¶
Takes a user input array of jobs, verifies that they are in the jobStore and returns the array of jobsToReport.
- Parameters:
jobs (list) – A list of jobs to be verified.
- Returns jobsToReport:
A list of jobs which are verified to be in the jobStore.
- Return type:
List[toil.job.JobDescription]
- traverseJobGraph(rootJob, jobsToReport=None, foundJobStoreIDs=None)¶
Find all current jobs in the jobStore and return them as an Array.
- Parameters:
rootJob (toil.job.JobDescription) – The root job of the workflow.
jobsToReport (list) – A list of jobNodes to be added to and returned.
foundJobStoreIDs (set) – A set of jobStoreIDs used to keep track of jobStoreIDs encountered in traversal.
- Returns jobsToReport:
The list of jobs currently in the job graph.
- Return type:
List[toil.job.JobDescription]
- toil.test.utils.utilsTest.python = 'python3.9'¶
- toil.test.utils.utilsTest.logger¶
- class toil.test.utils.utilsTest.UtilsTest(methodName='runTest')¶
Bases:
toil.test.ToilTestTests the utilities that toil ships with, e.g. stats and status, in conjunction with restart functionality.
- setUp()¶
Hook method for setting up the test fixture before exercising it.
- tearDown()¶
Hook method for deconstructing the test fixture after testing it.
- property toilMain¶
- property cleanCommand¶
- property statsCommand¶
- statusCommand(failIfNotComplete=False)¶
- test_config_functionality()¶
Ensure that creating and reading back the config file works
- testAWSProvisionerUtils()¶
Runs a number of the cluster utilities in sequence.
Launches a cluster with custom tags. Verifies the tags exist. ssh’s into the cluster. Does some weird string comparisons. Makes certain that TOIL_WORKDIR is set as expected in the ssh’ed cluster. Rsyncs a file and verifies it exists on the leader. Destroys the cluster.
- Returns:
- testUtilsSort()¶
Tests the status and stats commands of the toil command line utility using the sort example with the –restart flag.
- testUtilsStatsSort()¶
Tests the stats commands on a complete run of the stats test.
- testUnicodeSupport()¶
- testMultipleJobsPerWorkerStats()¶
Tests case where multiple jobs are run on 1 worker to ensure that all jobs report back their data
- check_status(status, status_fn, seconds=20)¶
- testGetPIDStatus()¶
Test that ToilStatus.getPIDStatus() behaves as expected.
- testGetStatusFailedToilWF()¶
Test that ToilStatus.getStatus() behaves as expected with a failing Toil workflow. While this workflow could be called by importing and evoking its main function, doing so would remove the opportunity to test the ‘RUNNING’ functionality of getStatus().
- testGetStatusFailedCWLWF()¶
Test that ToilStatus.getStatus() behaves as expected with a failing CWL workflow.
- testGetStatusSuccessfulCWLWF()¶
Test that ToilStatus.getStatus() behaves as expected with a successful CWL workflow.
- testPrintJobLog(mock_print)¶
Test that ToilStatus.printJobLog() reads the log from a failed command without error.
- testRestartAttribute()¶
Test that the job store is only destroyed when we observe a successful workflow run. The following simulates a failing workflow that attempts to resume without restart(). In this case, the job store should not be destroyed until restart() is called.
- toil.test.utils.utilsTest.printUnicodeCharacter()¶
- class toil.test.utils.utilsTest.RunTwoJobsPerWorker¶
Bases:
toil.job.JobRuns child job with same resources as self in an attempt to chain the jobs on the same worker
- run(fileStore)¶
Override this function to perform work and dynamically create successor jobs.
- Parameters:
fileStore – Used to create local and globally sharable temporary files and to send log messages to the leader process.
- Returns:
The return value of the function can be passed to other jobs by means of
toil.job.Job.rv().