11from nose .tools import assert_true , assert_false , assert_equal , assert_raises
22
33import os
4- from smartdispatch .queue import Queue
5- from smartdispatch .job_generator import JobGenerator , GuilliminJobGenerator , MammouthJobGenerator , HeliosJobGenerator
6- from smartdispatch .job_generator import job_generator_factory
74import unittest
85import tempfile
96import shutil
7+ from smartdispatch .queue import Queue
8+ from smartdispatch .job_generator import JobGenerator , job_generator_factory
9+ from smartdispatch .job_generator import HeliosJobGenerator , HadesJobGenerator
10+ from smartdispatch .job_generator import GuilliminJobGenerator , MammouthJobGenerator
1011
1112
1213class TestJobGenerator (unittest .TestCase ):
@@ -165,6 +166,36 @@ def test_generate_pbs_odd_nb_commands(self):
165166 assert_true ("gpus=6" in job_generator .generate_pbs ()[0 ].__str__ ())
166167
167168
169+ class TestHadesQueue (unittest .TestCase ):
170+
171+ def setUp (self ):
172+ self .queue = Queue ("@hades" , "hades" )
173+
174+ self .commands4 = ["echo 1" , "echo 2" , "echo 3" , "echo 4" ]
175+ self .pbs4 = HadesJobGenerator (self .queue , self .commands4 ).generate_pbs ()
176+
177+ # 8 commands chosen because there is 8 cores but still should be split because there is 6 gpu
178+ self .commands8 = ["echo 1" , "echo 2" , "echo 3" , "echo 4" , "echo 5" , "echo 6" , "echo 7" , "echo 8" ]
179+ self .pbs8 = HadesJobGenerator (self .queue , self .commands8 ).generate_pbs ()
180+
181+ def test_generate_pbs_ppn (self ):
182+ assert_true ("ppn={}" .format (len (self .commands4 )) in self .pbs4 [0 ].__str__ ())
183+
184+ def test_generate_pbs_no_gpus_used (self ):
185+ # Hades use ppn instead og the gpus flag and breaks if gpus is there
186+ assert_false ("gpus=" in self .pbs4 [0 ].__str__ ())
187+
188+ def test_pbs_split_1_job (self ):
189+ assert_equal (len (self .pbs4 ), 1 )
190+
191+ def test_pbs_split_2_job (self ):
192+ assert_equal (len (self .pbs8 ), 2 )
193+
194+ def test_pbs_split_2_job_nb_commands (self ):
195+ assert_true ("ppn=6" in self .pbs8 [0 ].__str__ ())
196+ assert_true ("ppn=2" in self .pbs8 [1 ].__str__ ())
197+
198+
168199def test_job_generator_factory ():
169200 queue = {"queue_name" : "qtest" }
170201 commands = []
@@ -177,8 +208,12 @@ def test_job_generator_factory():
177208 job_generator = job_generator_factory (queue , commands , cluster_name = "helios" )
178209 assert_true (isinstance (job_generator , HeliosJobGenerator ))
179210
211+ job_generator = job_generator_factory (queue , commands , cluster_name = "hades" )
212+ assert_true (isinstance (job_generator , HadesJobGenerator ))
213+
180214 job_generator = job_generator_factory (queue , commands , cluster_name = None )
181215 assert_true (isinstance (job_generator , JobGenerator ))
182216 assert_true (not isinstance (job_generator , GuilliminJobGenerator ))
183217 assert_true (not isinstance (job_generator , MammouthJobGenerator ))
184218 assert_true (not isinstance (job_generator , HeliosJobGenerator ))
219+ assert_true (not isinstance (job_generator , HadesJobGenerator ))
0 commit comments