| #!/usr/bin/perl -T |
| use Test::More tests => 26; |
| use Slurm qw(:constant); |
| use POSIX qw(:signal_h); |
| use Devel::Peek; |
| |
| # 1 |
| my $slurm = Slurm::new(); |
| ok(defined $slurm, "create slurm object with default configuration"); |
| |
| my ($resp, $rc, $type, $select_type, $jobid, $jobinfo, $nodeinfo, $data); |
| |
| # 2 |
| $resp = $slurm->load_ctl_conf(); |
| ok(ref($resp) eq "HASH", "load ctl conf"); |
| $select_type = substr($resp->{select_type}, 7); |
| |
| |
| # 3 |
| my $job_desc = { |
| min_nodes => 1, |
| num_tasks => 1, |
| user_id => $>, |
| script => "#!/bin/sh\nsleep 1000\n", |
| name => "perlapi_test", |
| stdout => "/dev/null", |
| stderr => "/dev/null", |
| }; |
| $resp = $slurm->submit_batch_job($job_desc); |
| ok($resp, "submit batch job") or diag ("submit_batch_job: " . $slurm->strerror()); |
| $jobid = $resp->{job_id} if $resp; |
| |
| |
| # 4 |
| SKIP: { |
| skip "job submit failure", 1 unless $jobid; |
| $resp = $slurm->load_job($jobid); |
| ok($resp, "load job info") or diag("load_job: " . $slurm->strerror()); |
| $jobinfo = $resp->{job_array}->[0]->{select_jobinfo}; |
| } |
| |
| |
| my $jobinfo_data = { |
| SELECT_JOBDATA_GEOMETRY() => [ "ARRAY", [qw(bluegene)] ], |
| SELECT_JOBDATA_ROTATE() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_CONN_TYPE() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_ALTERED() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_REBOOT() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_NODE_CNT() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_RESV_ID() => ["", [qw(cray)]], |
| SELECT_JOBDATA_BLOCK_ID() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_NODES() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_IONODES() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_BLRTS_IMAGE() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_LINUX_IMAGE() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_MLOADER_IMAGE() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_RAMDISK_IMAGE() => ["", [qw(bluegene)]], |
| SELECT_JOBDATA_PTR() => ["Slurm::select_jobinfo_t", [qw(cray)]], |
| }; |
| |
| |
| # 5 - 19 |
| foreach $type (0 .. SELECT_JOBDATA_PTR) { |
| SKIP: { |
| skip "job submit failure", 1 unless $jobinfo; |
| skip "plugin not support", 1 unless grep {$select_type eq $_} @{$jobinfo_data->{$type}->[1]}; |
| $rc = $slurm->get_select_jobinfo($jobinfo, $type, $data); |
| ok($rc == SLURM_SUCCESS && ref($data) eq $jobinfo_data->{$type}->[0], "get select jobinfo $type") |
| or diag("get select jobinfo $type: $rc, " . ref($data)); |
| } |
| } |
| $slurm->kill_job($jobid, SIGKILL) if $jobid; |
| |
| |
| |
| # 20 |
| $resp = $slurm->load_node(); |
| ok(ref($resp) eq "HASH", "load node"); |
| $nodeinfo = $resp->{node_array}->[0]->{select_nodeinfo}; |
| |
| |
| my $nodeinfo_data = { |
| SELECT_NODEDATA_BITMAP_SIZE() => ["", [qw(bluegene)]], |
| SELECT_NODEDATA_SUBGRP_SIZE() => ["", [qw(bluegene linear cons_res)]], |
| SELECT_NODEDATA_SUBCNT() => ["", [qw(bluegene linear cons_res)]], |
| SELECT_NODEDATA_BITMAP() => ["Slurm::Bitstr", [qw(bluegene)]], |
| SELECT_NODEDATA_STR() => ["", [qw(bluegene)]], |
| SELECT_NODEDATA_PTR() => ["Slurm::select_nodeinfo_t", [qw(linear cray cons_res)]], |
| }; |
| |
| |
| # 21 - 26 |
| foreach $type (0 .. SELECT_NODEDATA_PTR) { |
| SKIP: { |
| skip "pluing not support", 1 unless grep {$select_type eq $_} @{$nodeinfo_data->{$type}->[1]}; |
| $rc = $slurm->get_select_nodeinfo($nodeinfo, $type, NODE_STATE_ALLOCATED, $data); |
| ok ($rc == SLURM_SUCCESS && ref($data) eq $nodeinfo_data->{$type}->[0], "get select nodeinfo $type") |
| or diag("get select nodeinfo $type: $rc, " . ref($data)); |
| } |
| } |
| |