def test_cputime5(self): rm = taskrun.ResourceManager(taskrun.CpuTimeResource('time', 20)) ob = OrderCheckObserver(['@t1', '+t1', '-t1'], verbose=False) tm = taskrun.TaskManager(resource_manager=rm, observers=[ob]) t1 = taskrun.FunctionTask(tm, 't1', myfunc, 'jimbo', 5) tm.run_tasks() self.assertTrue(ob.ok())
def test_active_single(self): ob = OrderCheckObserver(['@t1', '+t1', '!t1']) tm = taskrun.TaskManager(observers=[ob], failure_mode='active_continue') t1 = taskrun.ProcessTask(tm, 't1', 'false') tm.run_tasks() self.assertTrue(ob.ok())
def main(args): lock = threading.Lock() results = {} if args.verbose and args.cores > 1: print('verbose mode forces cores to 1') args.cores = 1 if args.verbose: print('using {0} cores for execution'.format(args.cores)) rm = taskrun.ResourceManager( taskrun.CounterResource('cores', 1, args.cores)) tm = taskrun.TaskManager(resource_manager=rm, observers=[]) for radix in range(args.minradix, args.maxradix + 1, 1): task = taskrun.FunctionTask(tm, 'radix_{0}'.format(radix), largestNetwork, args.hyperxsearch, radix, args.minbandwidth, None, args.maxdimensions, args.minconcentration, args.maxconcentration, lock, results, args.verbose) task.priority = radix tm.run_tasks() grid = [] grid.append([ '#', 'Dimensions', 'Widths', 'Weights', 'Concentration', 'Terminals', 'Routers', 'Radix', 'Channels', 'Bisections', 'Cost' ]) for radix in range(args.minradix, args.maxradix + 1, 1): grid.append(results[radix]) print(search_util.makeGrid(grid))
def test_aggressive_none(self): ob = OrderCheckObserver(['@t1', '+t1', '-t1']) tm = taskrun.TaskManager(observers=[ob], failure_mode='aggressive_fail') t1 = taskrun.ProcessTask(tm, 't1', 'true') tm.run_tasks() self.assertTrue(ob.ok())
def test_nooutputfiles(self): fd, file1 = tempfile.mkstemp() fd, file2 = tempfile.mkstemp() fd, file3 = tempfile.mkstemp() os.remove(file3) with open(file1, 'w') as fd: print('hello file1', file=fd) with open(file2, 'w') as fd: print('hello file2', file=fd) time.sleep(0.01) ob = taskrun.FileCleanupObserver() tm = taskrun.TaskManager(observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', 'false'.format(file1, file2, file3)) t1.add_condition( taskrun.FileModificationCondition([file1, file2], [file3])) tm.run_tasks() self.assertTrue(os.path.isfile(file1)) self.assertTrue(os.path.isfile(file2)) self.assertFalse(os.path.isfile(file3)) # remove all files os.remove(file1) os.remove(file2)
def test_active_multiroottree_narrow(self): ob = ComparisonCheckObserver(8, [ '+t1 < -t1 +t2 -t2 +t3 !t3 +t4 -t4', '-t1 > +t1', '-t1 < +t2 -t2 +t3 !t3 +t4 -t4', '+t2 > -t1 +t1', '+t2 < -t2 +t3 !t3 +t4 -t4', '-t2 > +t2 -t1 +t1', '-t2 < +t3 !t3 +t4 -t4', '+t3 > -t2 +t2 -t1 +t1', '+t3 < !t3 +t4 -t4', '!t3 > +t3 -t2 +t2 -t1 +t1', '!t3 < +t4 -t4', '+t4 > !t3 +t3 -t2 +t2 -t1 +t1', '+t4 < -t4', '-t4 > +t4 !t3 +t3 -t2 +t2 -t1 +t1' ], verbose=False) rm = taskrun.ResourceManager(taskrun.CounterResource('slot', 1, 1)) tm = taskrun.TaskManager(observers=[ob], resource_manager=rm, failure_mode='active_continue') t1 = taskrun.ProcessTask(tm, 't1', '') t1.priority = 4 t2 = taskrun.ProcessTask(tm, 't2', '') t2.priority = 3 t3 = taskrun.ProcessTask(tm, 't3', 'false') t3.priority = 2 t4 = taskrun.ProcessTask(tm, 't4', '') t4.priority = 1 t3a = taskrun.ProcessTask(tm, 't3a', '') t3a.add_dependency(t3) t3b = taskrun.ProcessTask(tm, 't3b', '') t3b.add_dependency(t3) t3ba = taskrun.ProcessTask(tm, 't3ba', '') t3ba.add_dependency(t3b) tm.run_tasks() self.assertTrue(ob.ok())
def test_res7(self): rm = taskrun.ResourceManager( taskrun.CounterResource('core', 9999, 4), taskrun.CounterResource('mem', 9999, 8000)) ob = ComparisonCheckObserver(8, [ '+t1 < +t2 +t3 +t4 -t4 -t3 -t2 -t1', '+t2 < +t3 +t4 -t4 -t3 -t2 -t1', '+t3 < +t4 -t4 -t3 -t2 -t1', '+t4 < -t4 -t3 -t2 -t1' ], verbose=False) tm = taskrun.TaskManager(resource_manager=rm, observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', 'sleep 0.01') t1.resources = {'core': 1, 'mem': 0} t1.priority = 4 t2 = taskrun.ProcessTask(tm, 't2', 'sleep 0.02') t2.resources = {'core': 1, 'mem': 0} t2.priority = 3 t3 = taskrun.ProcessTask(tm, 't3', 'sleep 0.03') t3.resources = {'core': 1, 'mem': 0} t3.priority = 2 t4 = taskrun.ProcessTask(tm, 't4', 'sleep 0.04') t4.resources = {'core': 1, 'mem': 0} t4.priority = 1 tm.run_tasks() self.assertTrue(ob.ok())
def test_passive_multiroottree_wide(self): ob = ComparisonCheckObserver(8, [ '+t1 < +t2 +t3 +t4 !t3 -t4 -t2 -t1', '+t2 > +t1', '+t2 < +t3 +t4 !t3 -t4 -t2 -t1', '+t3 > +t2 +t1', '+t3 < +t4 !t3 -t4 -t2 -t1', '+t4 > +t3 +t2 +t1', '+t4 < !t3 -t4 -t2 -t1', '!t3 > +t4 +t3 +t2 +t1', '!t3 < -t4 -t2 -t1', '-t4 > !t3 +t4 +t3 +t2 +t1', '-t2 > !t3 +t4 +t3 +t2 +t1', '-t1 > !t3 +t4 +t3 +t2 +t1' ], verbose=False) rm = taskrun.ResourceManager(taskrun.CounterResource('slot', 1, 1000)) tm = taskrun.TaskManager(observers=[ob], resource_manager=rm, failure_mode='passive_fail') t1 = taskrun.ProcessTask(tm, 't1', 'sleep 0.04') t1.priority = 4 t2 = taskrun.ProcessTask(tm, 't2', 'sleep 0.03') t2.priority = 3 t3 = taskrun.ProcessTask(tm, 't3', 'sleep 0.01; false') t3.priority = 2 t4 = taskrun.ProcessTask(tm, 't4', 'sleep 0.02') t4.priority = 1 t3a = taskrun.ProcessTask(tm, 't3a', '') t3a.add_dependency(t3) t3b = taskrun.ProcessTask(tm, 't3b', '') t3b.add_dependency(t3) t3ba = taskrun.ProcessTask(tm, 't3ba', '') t3ba.add_dependency(t3b) tm.run_tasks() self.assertTrue(ob.ok())
def test_res1(self): rm = taskrun.ResourceManager( taskrun.CounterResource('core', 9999, 4), taskrun.CounterResource('mem', 9999, 8000)) tm = taskrun.TaskManager(resource_manager=rm) t1 = taskrun.ProcessTask(tm, 't1', '') with self.assertRaises(ValueError): tm.run_tasks()
def test_blind_sequence(self): ob = OrderCheckObserver(['@t1', '@t2', '+t1', '!t1', '+t2', '!t2']) tm = taskrun.TaskManager(observers=[ob], failure_mode='blind_continue') t1 = taskrun.ProcessTask(tm, 't1', 'false') t2 = taskrun.ProcessTask(tm, 't2', 'false') t2.add_dependency(t1) tm.run_tasks() self.assertTrue(ob.ok())
def test_mem1(self): rm = taskrun.ResourceManager(taskrun.MemoryResource('ram', 9999, 1)) ob = OrderCheckObserver(['@t1', '+t1', '-t1'], verbose=False) tm = taskrun.TaskManager(resource_manager=rm, observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', 'sleep 0.01') t1.resources = {'ram': 1} tm.run_tasks() self.assertTrue(ob.ok())
def test_dep3(self): ob = OrderCheckObserver(['@t1', '@t2', '+t2', '-t2', '+t1', '-t1']) tm = taskrun.TaskManager(observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', 'sleep 0.01') t2 = taskrun.ProcessTask(tm, 't2', 'sleep 0.01') t1.add_dependency(t2) tm.run_tasks() self.assertTrue(ob.ok())
def test_proc1(self): fd, filename = tempfile.mkstemp() tm = taskrun.TaskManager() t1 = taskrun.ProcessTask(tm, 't1', 'rm {0}'.format(filename)) with open(filename, 'w') as fd: print('hello world!\n', file=fd) self.assertTrue(os.path.isfile(filename)) tm.run_tasks() self.assertFalse(os.path.isfile(filename))
def test_cputime2(self): rm = taskrun.ResourceManager(taskrun.CpuTimeResource('time', 10)) ob = OrderCheckObserver(['@t1', '+t1', '-t1'], verbose=False) tm = taskrun.TaskManager(resource_manager=rm, observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', 'test/testprogs/burncycles 1 0.1') t1.resources = {'time': 10} tm.run_tasks() self.assertTrue(t1.stdout.find('count=10') >= 0) self.assertTrue(t1.stdout.find('completed') >= 0) self.assertTrue(ob.ok())
def test_res2(self): rm = taskrun.ResourceManager( taskrun.CounterResource('core', 9999, 4), taskrun.CounterResource('mem', 9999, 8000)) ob = OrderCheckObserver(['@t1', '+t1', '-t1']) tm = taskrun.TaskManager(resource_manager=rm, observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', '') t1.resources = {'core': 1, 'mem': 5000} tm.run_tasks() self.assertTrue(ob.ok())
def test_pri2(self): ob = ComparisonCheckObserver(4, ['+t2 < -t2 +t1 -t1', '+t1 < -t1'], verbose=False) tm = taskrun.TaskManager(observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', 'sleep 0.01') t2 = taskrun.ProcessTask(tm, 't2', 'sleep 0.02') t1.priority = 1 t2.priority = 2 tm.run_tasks() self.assertTrue(ob.ok())
def test_mem5(self): rm = taskrun.ResourceManager(taskrun.MemoryResource('ram', 9999, 0.25)) ob = OrderCheckObserver(['@t1', '+t1', '!t1'], verbose=False) tm = taskrun.TaskManager(resource_manager=rm, observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', 'test/testprogs/alloclots 104857600 1000 5') t1.resources = {'ram': 0.25} tm.run_tasks() self.assertTrue(t1.stdout.find('+blocks=2') >= 0) self.assertTrue(t1.stdout.find('all allocated') < 0) self.assertTrue(ob.ok())
def test_complex_good(self): tm = taskrun.TaskManager( observers=[taskrun.VerboseObserver(summary=False)], resource_manager=taskrun.ResourceManager( taskrun.CounterResource('cpu', 10, 64), taskrun.CounterResource('mem', 1024 * 1024 * 1024, 256 * 1024 * 1024 * 1024), taskrun.CounterResource('net', 1000, 10000), taskrun.CounterResource('fds', 500, 50000)), failure_mode=taskrun.FailureMode.AGGRESSIVE_FAIL) tm.run_tasks()
def test_simple(self): obs = [ OrderCheckObserver(['@t1', '+t1', '-t1']), OrderCheckObserver(['@t1', '+t1', '-t1']), OrderCheckObserver(['@t1', '+t1', '-t1']) ] tm = taskrun.TaskManager(observers=obs) t1 = taskrun.ProcessTask(tm, 't1', '') tm.run_tasks() for ob in obs: self.assertTrue(ob.ok())
def test_nocycle1(self): tm = taskrun.TaskManager() t1 = taskrun.ProcessTask(tm, 't1', '') t2 = taskrun.ProcessTask(tm, 't2', '') t3 = taskrun.ProcessTask(tm, 't3', '') t4 = taskrun.ProcessTask(tm, 't4', '') t5 = taskrun.ProcessTask(tm, 't5', '') t1.add_dependency(t2) t2.add_dependency(t3) t3.add_dependency(t4) t4.add_dependency(t5)
def test_cputime6(self): rm = taskrun.ResourceManager(taskrun.CpuTimeResource('time', 20)) tm = taskrun.TaskManager(rm) t1 = taskrun.NopTask(tm, 't1') t1.resources = {'time': 20} error = False try: tm.run_tasks() except AssertionError: error = True self.assertTrue(error)
def test_res8(self): for div in [1, 2, 3, 10, 25, 50, 100, 187]: cr = taskrun.CounterResource('foo', 4.3 / div, 4.3) rm = taskrun.ResourceManager(cr) tm = taskrun.TaskManager(resource_manager=rm) rnd = random.Random(12345678) for t in range(10000): cmd = 'usleep {}'.format(rnd.gauss(1000, 500)) taskrun.ProcessTask(tm, str(t), cmd) tm.run_tasks() self.assertEqual(cr.total, 4.3) self.assertEqual(cr.used, 0)
def test_pri5(self): tm = taskrun.TaskManager(priority_levels=3) t1 = taskrun.ProcessTask(tm, 't1', 'sleep 0.01') t2 = taskrun.ProcessTask(tm, 't2', 'sleep 0.02') t1.priority = 2 t2.priority = 1 success = True try: tm.run_tasks() except AssertionError: success = False self.assertTrue(success)
def test_deepcyclic(self): tm = taskrun.TaskManager() t1 = taskrun.ProcessTask(tm, 't1', '') t2 = taskrun.ProcessTask(tm, 't2', '') t3 = taskrun.ProcessTask(tm, 't3', '') t4 = taskrun.ProcessTask(tm, 't4', '') t5 = taskrun.ProcessTask(tm, 't5', '') t1.add_dependency(t2) t2.add_dependency(t3) t3.add_dependency(t4) t4.add_dependency(t5) with self.assertRaises(ValueError): t5.add_dependency(t1)
def test_pri4(self): ob = ComparisonCheckObserver(8, [ '+t2 < -t2 +t1 -t1 +t4 -t4 +t3 -t3', '+t1 < -t1 +t4 -t4 +t3 -t3', '+t4 < -t4 +t3 -t3', '+t3 < -t3' ], verbose=False) tm = taskrun.TaskManager(observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', 'sleep 0.01') t2 = taskrun.ProcessTask(tm, 't2', 'sleep 0.02') t3 = taskrun.ProcessTask(tm, 't3', 'sleep 0.03') t4 = taskrun.ProcessTask(tm, 't4', 'sleep 0.04') t1.priority = 3 t2.priority = 4 t3.priority = 1 t4.priority = 2 tm.run_tasks() self.assertTrue(ob.ok())
def __randN(self, b, n): rm = taskrun.ResourceManager(taskrun.CounterResource( 'something', 1, 1)) order = [] for num in range(n): order.append('@t{}'.format(num)) for num in range(n): order.append('+t{}'.format(num)) order.append('-t{}'.format(num)) ob = OrderCheckObserver(order, verbose=False) tm = taskrun.TaskManager(observers=[ob], resource_manager=rm) for num in range(n): taskrun.NopTask(tm, 't{}'.format(num)) if b: tm.randomize() tm.run_tasks() if b and n > 1: self.assertFalse(ob.ok()) else: self.assertTrue(ob.ok())
def test_noinputfiles(self): fd, file1 = tempfile.mkstemp() fd, file2 = tempfile.mkstemp() fd, file3 = tempfile.mkstemp() os.remove(file1) os.remove(file2) os.remove(file3) time.sleep(0.01) ob = taskrun.FileCleanupObserver() tm = taskrun.TaskManager(observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', 'false'.format(file1, file2, file3)) t1.add_condition( taskrun.FileModificationCondition([file1, file2], [file3])) tm.run_tasks() self.assertFalse(os.path.isfile(file1)) self.assertFalse(os.path.isfile(file2)) self.assertFalse(os.path.isfile(file3))
def test_blind_4wide(self): ob = ComparisonCheckObserver(8, [ '+t1 < +t2 +t3 +t4 !t3 -t4 -t2 -t1', '+t2 > +t1', '+t2 < +t3 +t4 !t3 -t4 -t2 -t1', '+t3 > +t2 +t1', '+t3 < +t4 !t3 -t4 -t2 -t1', '+t4 > +t3 +t2 +t1', '+t4 < !t3 -t4 -t2 -t1', '!t3 > +t4 +t3 +t2 +t1', '!t3 < -t4 -t2 -t1', '-t4 > !t3 +t4 +t3 +t2 +t1', '-t2 > !t3 +t4 +t3 +t2 +t1', '-t1 > !t3 +t4 +t3 +t2 +t1' ], verbose=False) tm = taskrun.TaskManager(observers=[ob], failure_mode='blind_continue') t1 = taskrun.ProcessTask(tm, 't1', 'sleep 0.04') t1.priority = 4 t2 = taskrun.ProcessTask(tm, 't2', 'sleep 0.03') t2.priority = 3 t3 = taskrun.ProcessTask(tm, 't3', 'sleep 0.01; false') t3.priority = 2 t4 = taskrun.ProcessTask(tm, 't4', 'sleep 0.02') t4.priority = 1 tm.run_tasks() self.assertTrue(ob.ok())
def test_res4(self): rm = taskrun.ResourceManager( taskrun.CounterResource('core', 9999, 4), taskrun.CounterResource('mem', 9999, 8000)) ob = OrderCheckObserver([ '@t1', '@t2', '@t3', '@t4', '+t1', '-t1', '+t2', '-t2', '+t3', '-t3', '+t4', '-t4' ]) tm = taskrun.TaskManager(resource_manager=rm, observers=[ob]) t1 = taskrun.ProcessTask(tm, 't1', '') t1.resources = {'core': 1, 'mem': 0} t2 = taskrun.ProcessTask(tm, 't2', '') t2.resources = {'core': 1, 'mem': 0} t3 = taskrun.ProcessTask(tm, 't3', '') t3.resources = {'core': 1, 'mem': 0} t4 = taskrun.ProcessTask(tm, 't4', '') t4.resources = {'core': 1, 'mem': 0} t4.add_dependency(t3) t3.add_dependency(t2) t2.add_dependency(t1) tm.run_tasks() self.assertTrue(ob.ok())
def test_noexec(self): global total global thres total = 0 thres = 0 rm = taskrun.ResourceManager(taskrun.CounterResource('slot', 1, 1)) ob = OrderCheckObserver( ['@t1', '@t2', '@t3', '@t4', '*t1', '*t2', '*t3', '*t4']) tm = taskrun.TaskManager(resource_manager=rm, observers=[ob]) t1 = taskrun.FunctionTask(tm, 't1', myfunc, 'jimbo', 5) t1.add_condition(taskrun.FunctionCondition(cond)) t2 = taskrun.FunctionTask(tm, 't2', myfunc, 'gertrude', 6) t2.add_condition(taskrun.FunctionCondition(cond)) t3 = taskrun.FunctionTask(tm, 't3', myfunc, 'sally', 2) t3.add_condition(taskrun.FunctionCondition(cond)) t4 = taskrun.FunctionTask(tm, 't4', myfunc, 'william', 3) t4.add_condition(taskrun.FunctionCondition(cond)) tm.run_tasks() self.assertTrue(ob.ok()) self.assertEqual(total, 0)