#! /usr/bin/env perl
use strict;
use warnings;
# get rid of warnings
use Class::C3;
use MRO::Compat;
use Test::Fixture::DBIC::Schema;
use Tapper::Schema::TestTools;
use aliased 'Tapper::MCP::Scheduler::Controller';
use aliased 'Tapper::MCP::Scheduler::Algorithm';
use aliased 'Tapper::MCP::Scheduler::Algorithm::DummyAlgorithm';
use Tapper::Model 'model';
use Data::Dumper;
use Test::More;
use Test::Deep;
# --------------------------------------------------------------------------------
construct_fixture( schema => testrundb_schema, fixture => 't/fixtures/testrundb/testrun_with_scheduling_run4.yml' );
# --------------------------------------------------------------------------------
# --------------------------------------------------
my $algorithm = Algorithm->new_with_traits ( traits => [DummyAlgorithm] );
my $scheduler = Controller->new (algorithm => $algorithm);
# --------------------------------------------------
my $free_hosts;
my $next_job;
my @free_host_names;
my $testrun_rs = model('TestrunDB')->resultset('Testrun');
while (my $tr = $testrun_rs->next()) {
my $feature=model('TestrunDB')->resultset('TestrunRequestedFeature')->new({testrun_id => $tr->id, feature => 'hostname ne bullock'});
$feature->insert;
};
$free_hosts = model("TestrunDB")->resultset("Host")->free_hosts;
@free_host_names = map { $_->name } $free_hosts->all;
cmp_bag(\@free_host_names, [qw(iring bullock)], "free hosts");
{
local $^W;
$next_job = $scheduler->get_next_job();
}
is($next_job->host->name, "iring", "fitting host iring");
$scheduler->mark_job_as_running($next_job);
my $job1=$next_job;
{
local $^W;
$next_job = $scheduler->get_next_job();
}
is($next_job, undef, "no job since only bullock free");
$scheduler->mark_job_as_finished($job1);
done_testing();