osc-reservations 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +103 -0
- data/Rakefile +7 -0
- data/config/batch.yml +13 -0
- data/config/websvcs08.osc.edu.yml +13 -0
- data/lib/osc/reservations.rb +47 -0
- data/lib/osc/reservations/adapter.rb +38 -0
- data/lib/osc/reservations/adapters/osc_moab.rb +167 -0
- data/lib/osc/reservations/batch.rb +39 -0
- data/lib/osc/reservations/node.rb +42 -0
- data/lib/osc/reservations/query.rb +60 -0
- data/lib/osc/reservations/reservation.rb +53 -0
- data/lib/osc/reservations/version.rb +6 -0
- data/osc-reservations.gemspec +26 -0
- data/test/adapters/test_osc_moab.rb +115 -0
- data/test/files/batch.yml +4 -0
- data/test/files/osc_oakley_job_4691489.oak-batch.osc.edu.yml +47 -0
- data/test/files/osc_oakley_job_4691490.oak-batch.osc.edu.yml +47 -0
- data/test/files/osc_oakley_job_4691491.oak-batch.osc.edu.yml +47 -0
- data/test/files/osc_oakley_node_n0609.yml +14 -0
- data/test/files/osc_oakley_node_n0611.yml +15 -0
- data/test/files/osc_oakley_node_n0612.yml +13 -0
- data/test/files/osc_oakley_node_n0613.yml +13 -0
- data/test/files/osc_rsv.xml +18 -0
- data/test/files/osc_rsvs.xml +97 -0
- data/test/test_adapter.rb +14 -0
- data/test/test_batch.rb +23 -0
- data/test/test_node.rb +21 -0
- data/test/test_query.rb +62 -0
- data/test/test_reservation.rb +33 -0
- data/test/test_reservations.rb +28 -0
- metadata +150 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
---
|
2
|
+
- :name: 4691489.oak-batch.osc.edu
|
3
|
+
:attribs:
|
4
|
+
:Job_Name: TestJob
|
5
|
+
:Job_Owner: jnicklas@oakley01.osc.edu
|
6
|
+
:resources_used:
|
7
|
+
:cput: '00:00:00'
|
8
|
+
:energy_used: '0'
|
9
|
+
:mem: 2208kb
|
10
|
+
:vmem: 211332kb
|
11
|
+
:walltime: '00:00:14'
|
12
|
+
:job_state: R
|
13
|
+
:queue: serial
|
14
|
+
:server: oak-batch.osc.edu:15001
|
15
|
+
:Checkpoint: u
|
16
|
+
:ctime: '1443626884'
|
17
|
+
:Error_Path: oakley01.osc.edu:/nfs/17/jnicklas/ttt/TestJob.e4845720
|
18
|
+
:exec_host: n0675/0-11
|
19
|
+
:exec_port: '15003'
|
20
|
+
:Hold_Types: n
|
21
|
+
:Join_Path: n
|
22
|
+
:Keep_Files: n
|
23
|
+
:Mail_Points: a
|
24
|
+
:mtime: '1443626959'
|
25
|
+
:Output_Path: oakley01.osc.edu:/nfs/17/jnicklas/ttt/TestJob.o4845720
|
26
|
+
:Priority: '0'
|
27
|
+
:qtime: '1443626884'
|
28
|
+
:Rerunable: 'True'
|
29
|
+
:Resource_List:
|
30
|
+
:gattr: fs17
|
31
|
+
:nodect: '1'
|
32
|
+
:nodes: 1:ppn=12
|
33
|
+
:walltime: '03:00:00'
|
34
|
+
:session_id: '22136'
|
35
|
+
:Variable_List: PBS_O_QUEUE=batch,PBS_O_HOME=/nfs/17/jnicklas,PBS_O_LOGNAME=jnicklas,PBS_O_PATH=/nfs/gpfs/PZS0645/local-oakley/tree/1.7.0/bin:/nfs/gpfs/PZS0645/local-oakley/git/2.3.6/bin:/nfs/gpfs/PZS0645/local-oakley/vim/7.4/bin:/nfs/17/jnicklas/bin:/usr/lib64/qt-3.3/bin:/usr/local/mvapich2/intel/15/2.1/bin:/usr/local/intel/vtune_amplifier_xe_2015.3.0.403110/bin64:/usr/local/intel/inspector_xe_2015.1.2.379161/bin64:/usr/local/intel/composer_xe_2015.3.187/bin/intel64:/usr/local/moab/8.1.1.2-2015080516-eb28ad0-el6/bin:/usr/local/torque/5.1.1-1_fba25d92/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin,PBS_O_MAIL=/var/spool/mail/jnicklas,PBS_O_SHELL=/bin/bash,PBS_O_LANG=en_US.UTF-8,PBS_O_SUBMIT_FILTER=/usr/local/sbin/torque_submitfilter,PBS_O_WORKDIR=/nfs/17/jnicklas/ttt,PBS_O_HOST=oakley01.osc.edu,PBS_O_SERVER=oak-batch.osc.edu
|
36
|
+
:euser: jnicklas
|
37
|
+
:egroup: appl
|
38
|
+
:queue_type: E
|
39
|
+
:etime: '1443626884'
|
40
|
+
:submit_args: -l nodes=1:ppn=12 -l walltime=03:00:00 -N TestJob
|
41
|
+
:start_time: '1443626959'
|
42
|
+
:Walltime:
|
43
|
+
:Remaining: '10756'
|
44
|
+
:start_count: '1'
|
45
|
+
:fault_tolerant: 'False'
|
46
|
+
:job_radix: '0'
|
47
|
+
:submit_host: oakley01.osc.edu
|
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
- :name: n0609
|
3
|
+
:attribs:
|
4
|
+
:state: job-exclusive
|
5
|
+
:power_state: Running
|
6
|
+
:np: '12'
|
7
|
+
:properties: cbb15,partdual,udapl
|
8
|
+
:ntype: cluster
|
9
|
+
:jobs: 0-11/4691489.oak-batch.osc.edu
|
10
|
+
:status: 'rectime=1443628199,macaddr=78:e7:d1:24:0c:48,cpuclock=Fixed,varattr=,jobs=4691489.oak-batch.osc.edu(cput=84158,energy_used=0,mem=7605064kb,vmem=17512224kb,walltime=7316,session_id=23155),state=free,size=851670964kb:851799524kb,netload=517894350841,gres=,loadave=12.00,ncpus=12,physmem=49547224kb,availmem=87458364kb,totmem=97547220kb,idletime=1275445,nusers=1,nsessions=1,sessions=23155,uname=Linux
|
11
|
+
n0609.ten.osc.edu 2.6.32-573.3.1.el6.x86_64 #1 SMP Mon Aug 10 09:44:54 EDT 2015
|
12
|
+
x86_64,opsys=linux'
|
13
|
+
:mom_service_port: '15002'
|
14
|
+
:mom_manager_port: '15003'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
- :name: n0611
|
3
|
+
:attribs:
|
4
|
+
:state: job-exclusive
|
5
|
+
:power_state: Running
|
6
|
+
:np: '12'
|
7
|
+
:properties: cbb15,partdual
|
8
|
+
:ntype: cluster
|
9
|
+
:jobs: 0-5/4691490.oak-batch.osc.edu,6-11/4691491.oak-batch.osc.edu
|
10
|
+
:status: 'rectime=1443628199,macaddr=78:e7:d1:24:0c:48,cpuclock=Fixed,varattr=,jobs=4691490.oak-batch.osc.edu(cput=84158,energy_used=0,mem=7605064kb,vmem=17512224kb,walltime=7316,session_id=23155)
|
11
|
+
4691491.oak-batch.osc.edu(cput=84158,energy_used=0,mem=7605064kb,vmem=17512224kb,walltime=7316,session_id=23155),state=free,size=851670964kb:851799524kb,netload=517894350841,gres=,loadave=12.00,ncpus=12,physmem=49547224kb,availmem=87458364kb,totmem=97547220kb,idletime=1275445,nusers=1,nsessions=1,sessions=23155,uname=Linux
|
12
|
+
n0611.ten.osc.edu 2.6.32-573.3.1.el6.x86_64 #1 SMP Mon Aug 10 09:44:54 EDT 2015
|
13
|
+
x86_64,opsys=linux'
|
14
|
+
:mom_service_port: '15002'
|
15
|
+
:mom_manager_port: '15003'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
---
|
2
|
+
- :name: n0612
|
3
|
+
:attribs:
|
4
|
+
:state: job-exclusive
|
5
|
+
:power_state: Running
|
6
|
+
:np: '12'
|
7
|
+
:properties: cbb15,partdual,udapl
|
8
|
+
:ntype: cluster
|
9
|
+
:status: 'rectime=1443628517,macaddr=78:e7:d1:22:e9:28,cpuclock=Fixed,varattr=,jobs=,state=free,size=850672204kb:851799524kb,netload=809762478607,gres=,loadave=0.00,ncpus=12,physmem=49547224kb,availmem=96383676kb,totmem=97547220kb,idletime=485292,nusers=0,nsessions=0,uname=Linux
|
10
|
+
n0612.ten.osc.edu 2.6.32-573.3.1.el6.x86_64 #1 SMP Mon Aug 10 09:44:54 EDT 2015
|
11
|
+
x86_64,opsys=linux'
|
12
|
+
:mom_service_port: '15002'
|
13
|
+
:mom_manager_port: '15003'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
---
|
2
|
+
- :name: n0613
|
3
|
+
:attribs:
|
4
|
+
:state: free
|
5
|
+
:power_state: Running
|
6
|
+
:np: '12'
|
7
|
+
:properties: cbb15,partdual,udapl
|
8
|
+
:ntype: cluster
|
9
|
+
:status: 'rectime=1443628517,macaddr=78:e7:d1:22:e9:28,cpuclock=Fixed,varattr=,jobs=,state=free,size=850672204kb:851799524kb,netload=809762478607,gres=,loadave=0.00,ncpus=12,physmem=49547224kb,availmem=96383676kb,totmem=97547220kb,idletime=485292,nusers=0,nsessions=0,uname=Linux
|
10
|
+
n0613.ten.osc.edu 2.6.32-573.3.1.el6.x86_64 #1 SMP Mon Aug 10 09:44:54 EDT 2015
|
11
|
+
x86_64,opsys=linux'
|
12
|
+
:mom_service_port: '15002'
|
13
|
+
:mom_manager_port: '15003'
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<Data>
|
3
|
+
<rsv AUser="judithg" AllocNodeCount="4" AllocNodeList="n0613,n0612,n0611,n0609" AllocProcCount="48" AllocTaskCount="4" Name="wiag.1809" Partition="oakley01" ReqNodeList="n0613:1,n0612:1,n0611:1,n0609:1" ReqTaskCount="4" Resources="PROCS=[ALL]" StatCAPS="12891160.62" StatCIPS="369507295.86" SubType="Other" Type="User" endtime="1633854480" flags="DEDICATEDRESOURCE,IGNJOBRSV,ISACTIVE,REQFULL" starttime="1433854480">
|
4
|
+
<ACL aff="neutral" cmp="%=" name="wiag.1809" type="RSV"/>
|
5
|
+
<ACL aff="positive" cmp="%=" name="bmcmichael" type="USER"/>
|
6
|
+
<ACL aff="positive" cmp="%=" name="jnicklas" type="USER"/>
|
7
|
+
<ACL aff="positive" cmp="%=" name="awe0011" type="USER"/>
|
8
|
+
<ACL aff="positive" cmp="%=" name="ndem0009" type="USER"/>
|
9
|
+
<ACL aff="positive" cmp="%=" name="efranz" type="USER"/>
|
10
|
+
<ACL aff="positive" cmp="%=" name="ndem0010" type="USER"/>
|
11
|
+
<ACL aff="positive" cmp="%=" name="bgohar" type="USER"/>
|
12
|
+
<CL aff="neutral" cmp="%=" name="wiag.1809" type="RSV"/>
|
13
|
+
<CL aff="unavailable" cmp="%=" name="judithg" type="USER"/>
|
14
|
+
<History>
|
15
|
+
<event state="PROCS=48" time="1433854480"/>
|
16
|
+
</History>
|
17
|
+
</rsv>
|
18
|
+
</Data>
|
@@ -0,0 +1,97 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<Data>
|
3
|
+
<!-- Oakley example -->
|
4
|
+
<rsv AllocNodeCount="1" AllocNodeList="n0609" AllocProcCount="12" AllocTaskCount="1" Name="4691489" Partition="oakley01" Resources="PROCS=12;MEM=49152;gres=ippn:12" RsvGroup="4691489" SubType="JobReservation" Type="Job" endtime="1441820663" flags="ISACTIVE" starttime="1441809863">
|
5
|
+
<ACL aff="neutral" cmp="%=" name="4691489" type="JOB"/>
|
6
|
+
<CL aff="positive" cmp="%=" name="4691489" type="JOB"/>
|
7
|
+
<CL aff="positive" cmp="%=" name="jnicklas" type="USER"/>
|
8
|
+
<CL aff="positive" cmp="%=" name="appl" type="GROUP"/>
|
9
|
+
<CL aff="positive" cmp="%=" name="serial" type="CLASS"/>
|
10
|
+
<CL aff="positive" cmp="==" type="DURATION" val="10800"/>
|
11
|
+
<CL aff="positive" cmp="==" type="PROC" val="12"/>
|
12
|
+
<CL aff="positive" cmp="==" type="MEMORY" val="49152"/>
|
13
|
+
<CL aff="positive" cmp="==" type="PS" val="129600"/>
|
14
|
+
<CL aff="positive" cmp="%=" name="Moab" type="CLUSTER"/>
|
15
|
+
<CL aff="positive" cmp="%=" name="checkpoint" type="JATTR"/>
|
16
|
+
<CL aff="positive" cmp="%=" name="fs17" type="JATTR"/>
|
17
|
+
<CL aff="positive" cmp="<=" type="JPRIORITY"/>
|
18
|
+
</rsv>
|
19
|
+
<rsv AllocNodeCount="1" AllocNodeList="n0611" AllocProcCount="1" AllocTaskCount="1" Name="4691490" Partition="oakley01" Resources="PROCS=1;MEM=4096;gres=ippn:1" RsvGroup="4691490" SubType="JobReservation" Type="Job" endtime="1441820663" flags="ISACTIVE" starttime="1441809863">
|
20
|
+
<ACL aff="neutral" cmp="%=" name="4691490" type="JOB"/>
|
21
|
+
<CL aff="positive" cmp="%=" name="4691490" type="JOB"/>
|
22
|
+
<CL aff="positive" cmp="%=" name="jnicklas" type="USER"/>
|
23
|
+
<CL aff="positive" cmp="%=" name="appl" type="GROUP"/>
|
24
|
+
<CL aff="positive" cmp="%=" name="serial" type="CLASS"/>
|
25
|
+
<CL aff="positive" cmp="==" type="DURATION" val="10800"/>
|
26
|
+
<CL aff="positive" cmp="==" type="PROC" val="1"/>
|
27
|
+
<CL aff="positive" cmp="==" type="MEMORY" val="4096"/>
|
28
|
+
<CL aff="positive" cmp="==" type="PS" val="10800"/>
|
29
|
+
<CL aff="positive" cmp="%=" name="Moab" type="CLUSTER"/>
|
30
|
+
<CL aff="positive" cmp="%=" name="checkpoint" type="JATTR"/>
|
31
|
+
<CL aff="positive" cmp="%=" name="fs17" type="JATTR"/>
|
32
|
+
<CL aff="positive" cmp="<=" type="JPRIORITY"/>
|
33
|
+
</rsv>
|
34
|
+
<rsv AllocNodeCount="1" AllocNodeList="n0611" AllocProcCount="1" AllocTaskCount="1" Name="4691491" Partition="oakley01" Resources="PROCS=1;MEM=4096;gres=ippn:1" RsvGroup="4691491" SubType="JobReservation" Type="Job" endtime="1441820663" flags="ISACTIVE" starttime="1441809863">
|
35
|
+
<ACL aff="neutral" cmp="%=" name="4691491" type="JOB"/>
|
36
|
+
<CL aff="positive" cmp="%=" name="4691491" type="JOB"/>
|
37
|
+
<CL aff="positive" cmp="%=" name="jnicklas" type="USER"/>
|
38
|
+
<CL aff="positive" cmp="%=" name="appl" type="GROUP"/>
|
39
|
+
<CL aff="positive" cmp="%=" name="serial" type="CLASS"/>
|
40
|
+
<CL aff="positive" cmp="==" type="DURATION" val="10800"/>
|
41
|
+
<CL aff="positive" cmp="==" type="PROC" val="1"/>
|
42
|
+
<CL aff="positive" cmp="==" type="MEMORY" val="4096"/>
|
43
|
+
<CL aff="positive" cmp="==" type="PS" val="10800"/>
|
44
|
+
<CL aff="positive" cmp="%=" name="Moab" type="CLUSTER"/>
|
45
|
+
<CL aff="positive" cmp="%=" name="checkpoint" type="JATTR"/>
|
46
|
+
<CL aff="positive" cmp="%=" name="fs17" type="JATTR"/>
|
47
|
+
<CL aff="positive" cmp="<=" type="JPRIORITY"/>
|
48
|
+
</rsv>
|
49
|
+
<rsv AllocNodeCount="1" AllocNodeList="n0611" AllocProcCount="1" AllocTaskCount="1" Name="4691492" Partition="oakley01" Resources="PROCS=1;MEM=4096;gres=ippn:1" RsvGroup="4691492" SubType="JobReservation" Type="Job" endtime="1441820663" flags="ISACTIVE" starttime="1441809863">
|
50
|
+
<ACL aff="neutral" cmp="%=" name="4691492" type="JOB"/>
|
51
|
+
<CL aff="positive" cmp="%=" name="4691492" type="JOB"/>
|
52
|
+
<CL aff="positive" cmp="%=" name="jnicklas" type="USER"/>
|
53
|
+
<CL aff="positive" cmp="%=" name="appl" type="GROUP"/>
|
54
|
+
<CL aff="positive" cmp="%=" name="serial" type="CLASS"/>
|
55
|
+
<CL aff="positive" cmp="==" type="DURATION" val="10800"/>
|
56
|
+
<CL aff="positive" cmp="==" type="PROC" val="1"/>
|
57
|
+
<CL aff="positive" cmp="==" type="MEMORY" val="4096"/>
|
58
|
+
<CL aff="positive" cmp="==" type="PS" val="10800"/>
|
59
|
+
<CL aff="positive" cmp="%=" name="Moab" type="CLUSTER"/>
|
60
|
+
<CL aff="positive" cmp="%=" name="checkpoint" type="JATTR"/>
|
61
|
+
<CL aff="positive" cmp="%=" name="fs17" type="JATTR"/>
|
62
|
+
<CL aff="positive" cmp="<=" type="JPRIORITY"/>
|
63
|
+
</rsv>
|
64
|
+
<!-- currently started reservation -->
|
65
|
+
<rsv AUser="judithg" AllocNodeCount="4" AllocNodeList="n0613,n0612,n0611,n0609" AllocProcCount="48" AllocTaskCount="4" Name="wiag.1809" Partition="oakley01" ReqNodeList="n0613:1,n0612:1,n0611:1,n0609:1" ReqTaskCount="4" Resources="PROCS=[ALL]" StatCAPS="12884060.22" StatCIPS="368963259.30" SubType="Other" Type="User" endtime="1633854480" flags="DEDICATEDRESOURCE,IGNJOBRSV,ISACTIVE,REQFULL" starttime="1433854480">
|
66
|
+
<ACL aff="neutral" cmp="%=" name="wiag.1809" type="RSV"/>
|
67
|
+
<ACL aff="positive" cmp="%=" name="bmcmichael" type="USER"/>
|
68
|
+
<ACL aff="positive" cmp="%=" name="jnicklas" type="USER"/>
|
69
|
+
<ACL aff="positive" cmp="%=" name="awe0011" type="USER"/>
|
70
|
+
<ACL aff="positive" cmp="%=" name="ndem0009" type="USER"/>
|
71
|
+
<ACL aff="positive" cmp="%=" name="efranz" type="USER"/>
|
72
|
+
<ACL aff="positive" cmp="%=" name="ndem0010" type="USER"/>
|
73
|
+
<ACL aff="positive" cmp="%=" name="bgohar" type="USER"/>
|
74
|
+
<CL aff="neutral" cmp="%=" name="wiag.1809" type="RSV"/>
|
75
|
+
<CL aff="unavailable" cmp="%=" name="judithg" type="USER"/>
|
76
|
+
<History>
|
77
|
+
<event state="PROCS=48" time="1433854480"/>
|
78
|
+
</History>
|
79
|
+
</rsv>
|
80
|
+
<!-- future reservation -->
|
81
|
+
<rsv AUser="judithg" AllocNodeCount="4" AllocNodeList="n0613,n0612,n0611,n0609" AllocProcCount="48" AllocTaskCount="4" Name="wiag.1810" Partition="oakley01" ReqNodeList="n0613:1,n0612:1,n0611:1,n0609:1" ReqTaskCount="4" Resources="PROCS=[ALL]" StatCAPS="12884060.22" StatCIPS="368963259.30" SubType="Other" Type="User" endtime="1633854480" flags="DEDICATEDRESOURCE,IGNJOBRSV,ISACTIVE,REQFULL" starttime="99991433854480">
|
82
|
+
<ACL aff="neutral" cmp="%=" name="wiag.1809" type="RSV"/>
|
83
|
+
<ACL aff="positive" cmp="%=" name="bmcmichael" type="USER"/>
|
84
|
+
<ACL aff="positive" cmp="%=" name="jnicklas" type="USER"/>
|
85
|
+
<ACL aff="positive" cmp="%=" name="awe0011" type="USER"/>
|
86
|
+
<ACL aff="positive" cmp="%=" name="ndem0009" type="USER"/>
|
87
|
+
<ACL aff="positive" cmp="%=" name="efranz" type="USER"/>
|
88
|
+
<ACL aff="positive" cmp="%=" name="ndem0010" type="USER"/>
|
89
|
+
<ACL aff="positive" cmp="%=" name="bgohar" type="USER"/>
|
90
|
+
<CL aff="neutral" cmp="%=" name="wiag.1809" type="RSV"/>
|
91
|
+
<CL aff="unavailable" cmp="%=" name="judithg" type="USER"/>
|
92
|
+
<History>
|
93
|
+
<event state="PROCS=48" time="1433854480"/>
|
94
|
+
</History>
|
95
|
+
</rsv>
|
96
|
+
<!-- /Oakley example -->
|
97
|
+
</Data>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'osc/reservations'
|
3
|
+
|
4
|
+
class TestAdapter < Minitest::Test
|
5
|
+
def test_adapter
|
6
|
+
adapter = OSC::Reservations::Adapter.new
|
7
|
+
assert_respond_to adapter, :query_reservation
|
8
|
+
assert_raises(NotImplementedError) {adapter.query_reservation 'BATCH', 123}
|
9
|
+
assert_respond_to adapter, :query_reservations
|
10
|
+
assert_raises(NotImplementedError) {adapter.query_reservations 'BATCH'}
|
11
|
+
assert_respond_to adapter, :submit_reservation
|
12
|
+
assert_raises(NotImplementedError) {adapter.submit_reservation 'BATCH', 'RSV'}
|
13
|
+
end
|
14
|
+
end
|
data/test/test_batch.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'osc/reservations'
|
3
|
+
|
4
|
+
class TestBatch < Minitest::Test
|
5
|
+
def setup
|
6
|
+
@batch = OSC::Reservations::Batch.new 'a.b.c', a: 'A', b: 2, 'q?' => true
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_server
|
10
|
+
assert_respond_to @batch, :server
|
11
|
+
assert_equal 'a.b.c', @batch.server
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_context
|
15
|
+
assert_respond_to @batch, :a
|
16
|
+
assert_equal 'A', @batch.a
|
17
|
+
assert_respond_to @batch, :b
|
18
|
+
assert_equal 2, @batch.b
|
19
|
+
refute_respond_to @batch, :c
|
20
|
+
assert_respond_to @batch, :'q?'
|
21
|
+
assert @batch.q?
|
22
|
+
end
|
23
|
+
end
|
data/test/test_node.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'osc/reservations'
|
3
|
+
|
4
|
+
class TestNode < Minitest::Test
|
5
|
+
def test_node
|
6
|
+
node = OSC::Reservations::Node.new({})
|
7
|
+
assert_respond_to node, :id
|
8
|
+
assert_respond_to node, :np
|
9
|
+
assert_respond_to node, :props
|
10
|
+
assert_respond_to node, :jobs
|
11
|
+
assert_respond_to node, :users
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_free?
|
15
|
+
node = OSC::Reservations::Node.new({jobs: ["123.job"]})
|
16
|
+
refute node.free?
|
17
|
+
|
18
|
+
node = OSC::Reservations::Node.new({jobs: []})
|
19
|
+
assert node.free?
|
20
|
+
end
|
21
|
+
end
|
data/test/test_query.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'osc/reservations'
|
3
|
+
|
4
|
+
BATCH_CONFIG = {
|
5
|
+
'batch1' => {
|
6
|
+
'adapter' => {
|
7
|
+
'type' => 'FakeAdapter'
|
8
|
+
},
|
9
|
+
'batch' => {
|
10
|
+
'server' => 'batch1.domain.com',
|
11
|
+
'extra1' => 'EXTRA1'
|
12
|
+
}
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
class FakeAdapter
|
17
|
+
end
|
18
|
+
|
19
|
+
class TestQuery < Minitest::Test
|
20
|
+
def test_query
|
21
|
+
query = OSC::Reservations::Query.new 'ADAPTER', 'BATCH'
|
22
|
+
assert_respond_to query, :reservation
|
23
|
+
assert_respond_to query, :reservations
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_reservation
|
27
|
+
adapter = Minitest::Mock.new
|
28
|
+
adapter.expect(:query_reservation, 'RSV', ['BATCH', 123])
|
29
|
+
query = OSC::Reservations::Query.new adapter, 'BATCH'
|
30
|
+
rsv = query.reservation 123
|
31
|
+
assert_equal 'RSV', rsv
|
32
|
+
adapter.verify
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_reservations
|
36
|
+
adapter = Minitest::Mock.new
|
37
|
+
adapter.expect(:query_reservations, ['RSV1', 'RSV2'], ['BATCH'])
|
38
|
+
query = OSC::Reservations::Query.new adapter, 'BATCH'
|
39
|
+
rsv_list = query.reservations
|
40
|
+
assert_equal ['RSV1', 'RSV2'], rsv_list
|
41
|
+
adapter.verify
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_predefined_batch_servers
|
45
|
+
OSC::Reservations.stub :batch_config, BATCH_CONFIG do
|
46
|
+
assert_respond_to OSC::Reservations::Query, :batch1
|
47
|
+
refute_respond_to OSC::Reservations::Query, :batch_unknown
|
48
|
+
|
49
|
+
mock_adapter = Minitest::Mock.new
|
50
|
+
mock_adapter.expect(:call, nil)
|
51
|
+
mock_batch = Minitest::Mock.new
|
52
|
+
mock_batch.expect(:call, nil, ['batch1.domain.com', {'extra1' => 'EXTRA1'}])
|
53
|
+
FakeAdapter.stub :new, mock_adapter do
|
54
|
+
OSC::Reservations::Batch.stub :new, mock_batch do
|
55
|
+
assert_instance_of OSC::Reservations::Query, OSC::Reservations::Query.batch1
|
56
|
+
end
|
57
|
+
end
|
58
|
+
mock_batch.verify
|
59
|
+
mock_adapter.verify
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'osc/reservations'
|
3
|
+
|
4
|
+
class TestReservation < Minitest::Test
|
5
|
+
def test_reservation
|
6
|
+
rsv = OSC::Reservations::Reservation.new({})
|
7
|
+
assert_respond_to rsv, :id
|
8
|
+
assert_respond_to rsv, :starttime
|
9
|
+
assert_respond_to rsv, :endtime
|
10
|
+
assert_respond_to rsv, :nodes
|
11
|
+
assert_respond_to rsv, :auser
|
12
|
+
assert_respond_to rsv, :users
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_free_nodes
|
16
|
+
node1 = Minitest::Mock.new
|
17
|
+
node1.expect(:'free?', false)
|
18
|
+
node2 = Minitest::Mock.new
|
19
|
+
node2.expect(:'free?', true)
|
20
|
+
rsv = OSC::Reservations::Reservation.new({nodes: [node1, node2]})
|
21
|
+
assert_equal [node2], rsv.free_nodes
|
22
|
+
node1.verify
|
23
|
+
node2.verify
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_started?
|
27
|
+
rsv = OSC::Reservations::Reservation.new(starttime: Time.now - 60)
|
28
|
+
assert rsv.started?
|
29
|
+
|
30
|
+
rsv = OSC::Reservations::Reservation.new(starttime: Time.now + 60)
|
31
|
+
refute rsv.started?
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'osc/reservations'
|
3
|
+
|
4
|
+
class TestReservations < Minitest::Test
|
5
|
+
def test_reservations
|
6
|
+
assert_respond_to OSC::Reservations, :batch_config_path
|
7
|
+
assert_respond_to OSC::Reservations, :batch_config_path=
|
8
|
+
assert_respond_to OSC::Reservations, :batch_config
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_batch_config_path
|
12
|
+
assert File.exist?(OSC::Reservations.batch_config_path)
|
13
|
+
OSC::Reservations.batch_config_path = "/path/to/config.yml"
|
14
|
+
assert_equal "/path/to/config.yml", OSC::Reservations.batch_config_path
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_batch_config
|
18
|
+
hash = {
|
19
|
+
'batch1' => {
|
20
|
+
'adapter' => 'FakeAdapter',
|
21
|
+
'server' => 'batch1.domain.com',
|
22
|
+
'extra1' => 'EXTRA1'
|
23
|
+
}
|
24
|
+
}
|
25
|
+
OSC::Reservations.batch_config_path = "test/files/batch.yml"
|
26
|
+
assert_equal hash, OSC::Reservations.batch_config
|
27
|
+
end
|
28
|
+
end
|
metadata
ADDED
@@ -0,0 +1,150 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: osc-reservations
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jeremy Nicklas
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-06-07 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: nokogiri
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.6'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.6'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pbs
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.7'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.7'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
description: This library queries active OSC reservations for the running user.
|
70
|
+
email:
|
71
|
+
- jnicklas@osc.edu
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- Gemfile
|
78
|
+
- LICENSE.txt
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- config/batch.yml
|
82
|
+
- config/websvcs08.osc.edu.yml
|
83
|
+
- lib/osc/reservations.rb
|
84
|
+
- lib/osc/reservations/adapter.rb
|
85
|
+
- lib/osc/reservations/adapters/osc_moab.rb
|
86
|
+
- lib/osc/reservations/batch.rb
|
87
|
+
- lib/osc/reservations/node.rb
|
88
|
+
- lib/osc/reservations/query.rb
|
89
|
+
- lib/osc/reservations/reservation.rb
|
90
|
+
- lib/osc/reservations/version.rb
|
91
|
+
- osc-reservations.gemspec
|
92
|
+
- test/adapters/test_osc_moab.rb
|
93
|
+
- test/files/batch.yml
|
94
|
+
- test/files/osc_oakley_job_4691489.oak-batch.osc.edu.yml
|
95
|
+
- test/files/osc_oakley_job_4691490.oak-batch.osc.edu.yml
|
96
|
+
- test/files/osc_oakley_job_4691491.oak-batch.osc.edu.yml
|
97
|
+
- test/files/osc_oakley_node_n0609.yml
|
98
|
+
- test/files/osc_oakley_node_n0611.yml
|
99
|
+
- test/files/osc_oakley_node_n0612.yml
|
100
|
+
- test/files/osc_oakley_node_n0613.yml
|
101
|
+
- test/files/osc_rsv.xml
|
102
|
+
- test/files/osc_rsvs.xml
|
103
|
+
- test/test_adapter.rb
|
104
|
+
- test/test_batch.rb
|
105
|
+
- test/test_node.rb
|
106
|
+
- test/test_query.rb
|
107
|
+
- test/test_reservation.rb
|
108
|
+
- test/test_reservations.rb
|
109
|
+
homepage: https://github.com/OSC/osc-reservations
|
110
|
+
licenses:
|
111
|
+
- MIT
|
112
|
+
metadata: {}
|
113
|
+
post_install_message:
|
114
|
+
rdoc_options: []
|
115
|
+
require_paths:
|
116
|
+
- lib
|
117
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - ">="
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
requirements: []
|
128
|
+
rubyforge_project:
|
129
|
+
rubygems_version: 2.4.8
|
130
|
+
signing_key:
|
131
|
+
specification_version: 4
|
132
|
+
summary: Query current OSC reservations for running user
|
133
|
+
test_files:
|
134
|
+
- test/adapters/test_osc_moab.rb
|
135
|
+
- test/files/batch.yml
|
136
|
+
- test/files/osc_oakley_job_4691489.oak-batch.osc.edu.yml
|
137
|
+
- test/files/osc_oakley_job_4691490.oak-batch.osc.edu.yml
|
138
|
+
- test/files/osc_oakley_job_4691491.oak-batch.osc.edu.yml
|
139
|
+
- test/files/osc_oakley_node_n0609.yml
|
140
|
+
- test/files/osc_oakley_node_n0611.yml
|
141
|
+
- test/files/osc_oakley_node_n0612.yml
|
142
|
+
- test/files/osc_oakley_node_n0613.yml
|
143
|
+
- test/files/osc_rsv.xml
|
144
|
+
- test/files/osc_rsvs.xml
|
145
|
+
- test/test_adapter.rb
|
146
|
+
- test/test_batch.rb
|
147
|
+
- test/test_node.rb
|
148
|
+
- test/test_query.rb
|
149
|
+
- test/test_reservation.rb
|
150
|
+
- test/test_reservations.rb
|