def test_check_queue(self, mock_check_output, mock_which): combinations = ([[' 0\n'], 2, 'express'], [[' 2\n'], 0, 'express'], [[' 100\n'], 900, 'short'], [['1100\n'], -100, 'short'], [['2000\n', '1000\n'], 1000, 'generic'], [['3600\n', '1000\n'], 400, 'generic'], [[' 200\n', ' 100\n'], 400, 'long'], [[' 620\n', ' 100\n'], 380, 'long']) for taken, available, queue in combinations: mock_check_output.side_effect = cycle(taken) self.assertEqual(qsub.check_queue(queue), available)
def test_queues(self, mock_check_output, mock_which): for queue in ['express', 'short', 'generic', 'long']: qsub.check_queue(queue) last_two_calls = mock_check_output.call_args_list[-2:] for call in last_two_calls: self.assertTrue(queue in call[0][0])
import os from sapphire import CorsikaQuery, qsub OVERVIEW = '/data/hisparc/corsika/corsika_overview.h5' SCRIPT = """\ #!/usr/bin/env bash python /data/hisparc/adelaat/corsika_accuracy/simulation_station_time.py {seeds} """ if __name__ == "__main__": cq = CorsikaQuery(OVERVIEW) for e in [15, 15.5, 16, 16.5, 17]: sims = cq.simulations(zenith=0, energy=e, particle='proton') seeds_set = set(cq.seeds(sims)) print e for n in range(min(20, len(seeds_set), qsub.check_queue('generic'))): seeds = seeds_set.pop() if os.path.exists('%s.h5' % seeds): continue print seeds, qsub.submit_job(SCRIPT.format(seeds=seeds), 'cors_accu_%s' % seeds, 'generic') cq.finish()