예제 #1
0
 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())
예제 #2
0
 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())
예제 #3
0
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))
예제 #4
0
 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)
예제 #6
0
 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())
예제 #7
0
 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())
예제 #8
0
 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())
예제 #9
0
 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()
예제 #10
0
 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())
예제 #11
0
 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())
예제 #12
0
 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())
예제 #13
0
 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))
예제 #14
0
 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())
예제 #15
0
 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())
예제 #16
0
 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())
예제 #17
0
 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())
예제 #18
0
 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())
예제 #20
0
 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)
예제 #21
0
 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)
예제 #22
0
 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)
예제 #23
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)
예제 #24
0
 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)
예제 #25
0
 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())
예제 #26
0
 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))
예제 #28
0
 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())
예제 #29
0
 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)