FailureTest_conf.pm 4.11 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

=pod

=head1 NAME

  Bio::EnsEMBL::Hive::PipeConfig::FailureTest_conf

=head1 SYNOPSIS

    init_pipeline.pl Bio::EnsEMBL::Hive::PipeConfig::FailureTest_conf -password <your_password>

    init_pipeline.pl FailureTest_conf.pm -pipeline_db -host=localhost -password <your_password> -job_count 100 -failure_rate 3

=head1 DESCRIPTION

    This is an example pipeline built around FailureTest.pm RunnableDB. It consists of two analyses:

    Analysis_1: JobFactory.pm is used to create an array of jobs -

        these jobs are sent down the branch #2 into the second analysis

    Analysis_2: FailureTest.pm either succeeds or dies, depending on the parameters.

=head1 CONTACT

  Please contact ehive-users@ebi.ac.uk mailing list with questions/suggestions.

=cut

package Bio::EnsEMBL::Hive::PipeConfig::FailureTest_conf;

use strict;
use warnings;

use base ('Bio::EnsEMBL::Hive::PipeConfig::HiveGeneric_conf');  # All Hive databases configuration files should inherit from HiveGeneric, directly or indirectly

=head2 default_options

    Description : Implements default_options() interface method of Bio::EnsEMBL::Hive::PipeConfig::HiveGeneric_conf that is used to initialize default options.
                  In addition to the standard things it defines three options:
                    o('job_count')          controls the total number of FailureTest jobs
                    o('failure_rate')       controls the rate of jobs that are programmed to fail
43 44
                    o('state')              controls the state in which the jobs will be failing
                    o('lethal_after')       when job_number is above this (nonzero) threshold, job's death becomes lethal to the Worker
45 46 47 48 49 50 51 52 53

                  There is a rule dependent on one option that does not have a default (this makes it mandatory):
                    o('password')           your read-write password for creation and maintenance of the hive database

=cut

sub default_options {
    my ($self) = @_;
    return {
54
        %{ $self->SUPER::default_options() },               # inherit other stuff from the base class
55 56 57

        'pipeline_name' => 'failure_test',                  # name used by the beekeeper to prefix job names on the farm

58 59 60
        'job_count'         => 20,                          # controls the total number of FailureTest jobs
        'failure_rate'      =>  3,                          # controls the rate of jobs that are programmed to fail
        'state'             => 'RUN',                       # controls in which state the jobs are programmed to fail
61
        'lethal_after'      => 0,
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
    };
}

=head2 pipeline_analyses

    Description : Implements pipeline_analyses() interface method of Bio::EnsEMBL::Hive::PipeConfig::HiveGeneric_conf that defines the structure of the pipeline: analyses, jobs, rules, etc.
                  Here it defines two analyses:

                    * 'generate_jobs'       generates a list of jobs

                    * 'failure_test'        either succeeds or fails, depending on parameters

=cut

sub pipeline_analyses {
    my ($self) = @_;
    return [
        {   -logic_name => 'generate_jobs',
            -module     => 'Bio::EnsEMBL::Hive::RunnableDB::JobFactory',
            -parameters => {
82
                'inputlist'    => '#expr([0..$job_count-1])expr#',    # this expression will evaluate into a listref
83
                'column_names' => [ 'value' ],
84 85 86 87
            },
            -input_ids => [
                {
                    'job_count'    => $self->o('job_count'),            # turn this option into a passable parameter
88 89 90 91 92 93
                    'input_id' => {
                        'value'         => '#value#',
                        'divisor'       => $self->o('failure_rate'),
                        'state'         => $self->o('state'),
                        'lethal_after'  => $self->o('lethal_after'),
                    },
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
                },
            ],
            -flow_into => {
                2 => [ 'failure_test' ],   # will create a fan of jobs
            },
        },

        {   -logic_name    => 'failure_test',
            -module        => 'Bio::EnsEMBL::Hive::RunnableDB::FailureTest',
        },
    ];
}

1;