1- from nose .tools import assert_true , assert_equal , assert_raises
1+ from nose .tools import assert_true , assert_false , assert_equal , assert_raises
22
33import os
44from smartdispatch .queue import Queue
5- from smartdispatch .job_generator import JobGenerator , GuilliminJobGenerator , MammouthJobGenerator
5+ from smartdispatch .job_generator import JobGenerator , GuilliminJobGenerator , MammouthJobGenerator , HeliosJobGenerator
66from smartdispatch .job_generator import job_generator_factory
77import unittest
88import tempfile
@@ -112,6 +112,7 @@ def test_generate_pbs(self):
112112
113113
114114class TestMammouthQueue (unittest .TestCase ):
115+
115116 def setUp (self ):
116117 self .commands = ["echo 1" , "echo 2" , "echo 3" , "echo 4" ]
117118 self .queue = Queue ("qtest@mp2" , "mammouth" )
@@ -122,6 +123,48 @@ def test_generate_pbs(self):
122123 assert_true ("ppn=1" in job_generator .generate_pbs ()[0 ].__str__ ())
123124
124125
126+ class TestHeliosQueue (unittest .TestCase ):
127+
128+ def setUp (self ):
129+ self .commands = ["echo 1" , "echo 2" , "echo 3" , "echo 4" ]
130+ self .queue = Queue ("maint" , "helios" )
131+
132+ self .env_val = 'RAP'
133+
134+ self .bak_env_home_group = os .environ .get (self .env_val )
135+ if self .bak_env_home_group is not None :
136+ del os .environ [self .env_val ]
137+ os .environ [self .env_val ] = "/rap/group/"
138+
139+ self .job_generator = HeliosJobGenerator (self .queue , self .commands )
140+
141+ def tearDown (self ):
142+ if self .bak_env_home_group is not None :
143+ os .environ [self .env_val ] = self .bak_env_home_group
144+
145+ def test_generate_pbs_invalid_group (self ):
146+ del os .environ [self .env_val ]
147+
148+ assert_raises (ValueError , self .job_generator .generate_pbs )
149+
150+ def test_generate_pbs_valid_group (self ):
151+ pbs = self .job_generator .generate_pbs ()[0 ]
152+
153+ assert_equal (pbs .options ['-A' ], "group" )
154+
155+ def test_generate_pbs_ppn_is_absent (self ):
156+ assert_false ("ppn=" in self .job_generator .generate_pbs ()[0 ].__str__ ())
157+
158+ def test_generate_pbs_even_nb_commands (self ):
159+ assert_true ("gpus=4" in self .job_generator .generate_pbs ()[0 ].__str__ ())
160+
161+ def test_generate_pbs_odd_nb_commands (self ):
162+ commands = ["echo 1" , "echo 2" , "echo 3" , "echo 4" , "echo 5" ]
163+ job_generator = HeliosJobGenerator (self .queue , commands )
164+
165+ assert_true ("gpus=6" in job_generator .generate_pbs ()[0 ].__str__ ())
166+
167+
125168def test_job_generator_factory ():
126169 queue = {"queue_name" : "qtest" }
127170 commands = []
@@ -131,6 +174,11 @@ def test_job_generator_factory():
131174 job_generator = job_generator_factory (queue , commands , cluster_name = "mammouth" )
132175 assert_true (isinstance (job_generator , MammouthJobGenerator ))
133176
177+ job_generator = job_generator_factory (queue , commands , cluster_name = "helios" )
178+ assert_true (isinstance (job_generator , HeliosJobGenerator ))
179+
134180 job_generator = job_generator_factory (queue , commands , cluster_name = None )
135181 assert_true (isinstance (job_generator , JobGenerator ))
136182 assert_true (not isinstance (job_generator , GuilliminJobGenerator ))
183+ assert_true (not isinstance (job_generator , MammouthJobGenerator ))
184+ assert_true (not isinstance (job_generator , HeliosJobGenerator ))
0 commit comments