The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

P2::Scheduler - This module helps organizing monthly tests at component level.

SYNOPSIS

    use P2::Scheduler;

    my $scheduler = P2::Scheduler->new(
        resources       => [][],        # resources ordered by priority (mandatory)
        context         => ...,         # the K8s context
        label           => ...,         # a fixed label to be added to each resource name to compose the experiment name
        action          => ...,         # a description of what is happening to the resource, it will appear as title
        weight          => [3,2,1],     # the weight of each priority, basically how many tests to run for a 
                                        # given priority (defaults to [3,2,1])
        hour_slots      => [1,2,3,4,5], # hours of the day at which tests can run (mandatory)
        spare_days_per_month => 2,      # number of business days to leave as spare at the end of the month
        starting_from   => 6,           # index of the day of the month to start from (defaults to 1)
        year            => ...          # mandatory
        num_week_days   => 3            # number of business days to count starting from Monday, defaults to 5
        pri_per_month' => [3,3,3,3,3,3,3,3,3,3,3,3] # an array for the minimum priority to take into consideration when scheduling 
                                        # experiments for each month. Default to all
                                        # priorities for all months. This is meant to be
                                        # used in case we want to limit priority 2/3
                                        # experiments only to specific months.
        selected_week_days => [3,4],    # list of business days ids to consider:
                                        # 1 => Monday,..., 5 => Friday
                                        # for example the string '2,3,4' would set tests to run only
                                        # between Tuesdays and Thursdays
        fixed_intervals => 1            # if experiments times should be strictly scheduled in 
                                        # fixed intervals or randomly allocated

    );

    # getting the schedule for January...
    my @schedule = $scheduler->month_schedule(1);

    # or for the whole year...
    my @schedule = $scheduler->year_schedule();

AUTHOR

Marco Masetti, <marco.masetti at sky.uk>

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc P2::Scheduler

LICENSE AND COPYRIGHT

Copyright 2020 Marco Masetti.

This program is free software; you can redistribute it and/or modify it under the terms of the the BSD 3-Clause License.