API-Docker
view release on metacpan or search on metacpan
t/containers.t view on Meta::CPAN
'POST /containers/mock123/start' => undef,
'GET /containers/mock123/json' => load_fixture('container_inspect'),
'GET /containers/mock123/top' => {
Titles => ['UID', 'PID', 'PPID', 'C', 'STIME', 'TTY', 'TIME', 'CMD'],
Processes => [
['root', '12345', '1', '0', '08:00', '?', '00:00:00', 'sleep'],
],
},
'GET /containers/mock123/stats' => {
cpu_stats => { cpu_usage => { total_usage => 1000 } },
memory_stats => { usage => 50000000 },
},
'POST /containers/mock123/pause' => undef,
'POST /containers/mock123/unpause' => undef,
'POST /containers/mock123/stop' => undef,
'DELETE /containers/mock123' => undef,
);
my $name = 'api-docker-test-' . $$;
my $created = $docker->containers->create(
name => $name,
Image => 'alpine:latest',
Cmd => ['sleep', '10'],
);
ok($created->{Id}, 'created container has Id');
my $id = is_live() ? $created->{Id} : 'mock123';
register_cleanup(sub { $docker->containers->remove($id, force => 1) }) if is_live();
$docker->containers->start($id);
pass('container started');
my $container = $docker->containers->inspect($id);
isa_ok($container, 'API::Docker::Container');
ok($container->is_running, 'container is running');
my $top = $docker->containers->top($id);
is(ref $top->{Processes}, 'ARRAY', 'top has processes');
my $stats = $docker->containers->stats($id);
ok($stats->{cpu_stats}, 'has cpu_stats');
ok($stats->{memory_stats}, 'has memory_stats');
$docker->containers->pause($id);
pass('container paused');
$docker->containers->unpause($id);
pass('container unpaused');
$docker->containers->stop($id, timeout => 3);
pass('container stopped');
$docker->containers->remove($id);
pass('container removed');
};
# --- Validation Tests (always run, no Docker needed) ---
subtest 'container ID required' => sub {
my $docker = test_docker();
eval { $docker->containers->inspect(undef) };
like($@, qr/Container ID required/, 'croak on missing ID for inspect');
eval { $docker->containers->start(undef) };
like($@, qr/Container ID required/, 'croak on missing ID for start');
eval { $docker->containers->stop(undef) };
like($@, qr/Container ID required/, 'croak on missing ID for stop');
};
done_testing;
( run in 0.597 second using v1.01-cache-2.11-cpan-5a3173703d6 )