App-Ikaros
view release on metacpan or search on metacpan
lib/App/Ikaros.pm view on Meta::CPAN
sub new {
my ($class, $options) = @_;
my $loaded_conf = App::Ikaros::Config::Loader->new({
config => $options->{config},
config_type => $options->{config_type},
config_options => $options->{config_options}
})->load;
my $ikaros = $class->SUPER::new({
config => $loaded_conf,
hosts => [],
verbose => $options->{verbose},
enable_profile => $options->{enable_profile},
output_filename => $options->{output_filename}
});
$ikaros->__setup_landing_points;
$ikaros->__planning;
return $ikaros;
lib/App/Ikaros/Builder.pm view on Meta::CPAN
use Coro::Select;
use Capture::Tiny ':all';
use App::Ikaros::Util qw/run_command_on_remote/;
use App::Ikaros::Installer;
use constant { DEBUG => 0 };
__PACKAGE__->mk_accessors(qw/installer/);
sub new {
my ($class) = @_;
return $class->SUPER::new({
installer => App::Ikaros::Installer->new
});
}
sub rsync {
my ($self, $hosts, $rsync_params) = @_;
return unless $rsync_params;
my @coros;
foreach my $host (@$hosts) {
lib/App/Ikaros/Installer.pm view on Meta::CPAN
App/Prove.pm
App/ForkProve.pm
XML/Simple.pm
TAP/Harness/JUnit.pm
IPC/Run.pm
};
sub new {
my ($class) = @_;
my $code = do { local $/; <DATA> };
return $class->SUPER::new({ code => $code });
}
sub install_all {
my ($self, $host) = @_;
$self->__install_libraries($host);
$self->__install_devel_cover($host) if ($host->coverage);
$self->__install_trigger_script($host);
}
sub __install_libraries {
lib/App/Ikaros/LandingPoint.pm view on Meta::CPAN
my @ssh_opt = ($key) ? (key_path => $key) : ();
my $ssh = Net::OpenSSH->new($user . '@' . $hostname, @ssh_opt);
$ssh->error and die 'unable to connect to remote host: ' . $ssh->error;
my $trigger_filename = __unique_name($workdir, $hostname, 'build_kicker.pl');
my $output_filename = __unique_name($workdir, $hostname, 'output.xml');
my $dot_prove_filename = __unique_name($workdir, $hostname, 'dot_prove.yaml');
my $cover_db_name = __unique_name($workdir, $hostname, 'cover_db');
return $class->SUPER::new({
user => $user,
hostname => $hostname,
connection => $ssh,
workdir => $workdir,
runner => $runner,
coverage => $coverage,
perlbrew => $perlbrew,
trigger_filename => $trigger_filename,
output_filename => $output_filename,
dot_prove_filename => $dot_prove_filename,
lib/App/Ikaros/Planner.pm view on Meta::CPAN
forkprove_tests
saved_tests
sorted_tests
/);
sub new {
my ($class, $hosts, $args) = @_;
unless ($args->{prove_tests} || $args->{forkprove_tests}) {
die "must be set 'prove_tests' and 'forkprove_tests(optional)'";
}
my $self = $class->SUPER::new({ %$args });
$self->__load_prove_state([ @{$args->{prove_tests}}, @{$args->{forkprove_tests}} ])
if (-f PROVE_STATE_FILE);
$self->__setup_testing_cluster($hosts);
return $self;
}
sub planning {
my ($self, $host, $args) = @_;
my $commands = $self->__make_command($args, $host);
$host->plan($commands);
lib/App/Ikaros/Reporter.pm view on Meta::CPAN
recovery_testing_command
enable_profile
profiler
output_filename
verbose
tests
/);
sub new {
my ($class, $options) = @_;
my $reporter = $class->SUPER::new({
recovery_testing_command => $options->{recovery_testing_command},
enable_profile => $options->{enable_profile} || 0,
profiler => App::Ikaros::Profiler->new,
output_filename => $options->{output_filename} || 'ikaros_output.xml',
verbose => $options->{verbose} || 0,
tests => +{}
});
$reporter->__setup_mangled_name_for_junit($options->{tests});
return $reporter;
}
( run in 1.063 second using v1.01-cache-2.11-cpan-49f99fa48dc )