Example #1
0
    def test_DotDict(self):
        """Test DotDict class"""
        res = {u"zip": {u"code": u"14850"}}
        mdict = DotDict(res)
        mdict["zip.code"] = 14850
        expect = {u"zip": {u"code": 14850}}
        self.assertEqual(expect, mdict)

        res = {"a": {"b": {"c": 10}, "d": 10}}
        mdict = DotDict(res)
        mdict["x.y.z"] = 10
        expect = {"a": {"b": {"c": 10}, "d": 10}, "x": {"y": {"z": 10}}}
        self.assertEqual(expect, mdict)

        mdict["a.b.k.m"] = 10
        expect = {"a": {"b": {"c": 10, "k": {"m": 10}}, "d": 10}, "x": {"y": {"z": 10}}}
        self.assertEqual(expect, mdict)
        expect = 10
        result = mdict.get("a.b.k.m")
        self.assertEqual(expect, result)

        res = {"a": {"b": {"c": 10}, "d": [{"x": 1}, {"x": 2}]}}
        mdict = DotDict(res)
        expect = 1
        result = mdict.get("a.d.x")
        self.assertEqual(expect, result)
        expect = None
        result = mdict.get("a.M.Z")
        self.assertEqual(expect, result)

        res = {"a": {"b": {"c": 1, "d": 2}}}
        mdict = DotDict(res)
        expect = {"a": {"b": {"c": 1}}}
        mdict.delete("a.b.d")
        self.assertEqual(expect, mdict)
Example #2
0
    def test_DotDict_list(self):
        """Test DotDict class"""
        res = {'a': [{'b': 1, 'c': 1}, {'c': 1}]}
        mdict = DotDict(res)
        expect = 1
        result = mdict.get('a.b')
        self.assertEqual(expect, result)

        res = {'a': [{'c': 1}, {'b': 1, 'c': 1}]}
        mdict = DotDict(res)
        expect = 1
        result = mdict.get('a.b')
        self.assertEqual(expect, result)
Example #3
0
    def test_DotDict_list(self):
        """Test DotDict class"""
        res = {"a": [{"b": 1, "c": 1}, {"c": 1}]}
        mdict = DotDict(res)
        expect = 1
        result = mdict.get("a.b")
        self.assertEqual(expect, result)

        res = {"a": [{"c": 1}, {"b": 1, "c": 1}]}
        mdict = DotDict(res)
        expect = 1
        result = mdict.get("a.b")
        self.assertEqual(expect, result)
Example #4
0
    def test_DotDict(self):
        """Test DotDict class"""
        res = {u'zip': {u'code': u'14850'}}
        mdict = DotDict(res)
        mdict['zip.code'] = 14850
        expect = {u'zip': {u'code': 14850}}
        self.assertEqual(expect, mdict)

        res = {'a': {'b': {'c': 10}, 'd': 10}}
        mdict = DotDict(res)
        mdict['x.y.z'] = 10
        expect = {'a': {'b': {'c': 10}, 'd': 10}, 'x': {'y': {'z': 10}}}
        self.assertEqual(expect, mdict)

        mdict['a.b.k.m'] = 10
        expect = {
            'a': {
                'b': {
                    'c': 10,
                    'k': {
                        'm': 10
                    }
                },
                'd': 10
            },
            'x': {
                'y': {
                    'z': 10
                }
            }
        }
        self.assertEqual(expect, mdict)
        expect = 10
        result = mdict.get('a.b.k.m')
        self.assertEqual(expect, result)

        res = {'a': {'b': {'c': 10}, 'd': [{'x': 1}, {'x': 2}]}}
        mdict = DotDict(res)
        expect = 1
        result = mdict.get('a.d.x')
        self.assertEqual(expect, result)
        expect = None
        result = mdict.get('a.M.Z')
        self.assertEqual(expect, result)

        res = {'a': {'b': {'c': 1, 'd': 2}}}
        mdict = DotDict(res)
        expect = {'a': {'b': {'c': 1}}}
        mdict.delete('a.b.d')
        self.assertEqual(expect, mdict)
Example #5
0
 def test_get(self):
     """test get method"""
     rec = DotDict(self.rec1)
     expect = [1, 2]
     result = rec.get('a.c')
     self.assertEqual(expect, result)
     self.assertEqual(expect, rec['a.c'])
Example #6
0
 def test_get(self):
     """test get method"""
     rec = DotDict(self.rec1)
     expect = [1, 2]
     result = rec.get("a.c")
     self.assertEqual(expect, result)
     self.assertEqual(expect, rec["a.c"])
Example #7
0
class UfoJob(UfoJob, LogMixin):
    def __init__(self, profiling=False, schedfixed=False, deviceCPU=False):
        self._profiling = profiling
        self._schedfixed = schedfixed
        self._deviceCPU = deviceCPU
        self.pm = PluginManager()
        self.graph = TaskGraph()
        self.tasks = DotDict()

    def init_scheduler(self):
        if self._deviceCPU:
            self.logger.debug('run on cpu')
            self.resource = Ufo.Resources(device_type=Ufo.DeviceType.CPU)
        else:
            self.logger.debug('run on gpu')
            self.resource = Ufo.Resources(device_type=Ufo.DeviceType.GPU)
        if self._schedfixed:
            self.logger.debug('fixed Scheduler')
            self.sched = Ufo.FixedScheduler()
        else:
            self.logger.debug('normal Scheduler')
            self.sched = Ufo.Scheduler()
        self.sched.set_resources(self.resource)
        self.sched.set_property('enable_tracing', self._profiling)

    def run_t(self, n=1):
        self.init_scheduler() 
        def timer_function():
            self.sched.run(self.graph)
        tm = Timer(timer_function)
        t = tm.timeit(n)
        # print self.sched
        # print self.resource
        return t

    @property
    def profiling(self):
        return self._profiling
    @profiling.setter
    def profiling(self, value):
        self._profiling = value

    @property
    def schedfixed(self):
        return self._schedfixed
    @schedfixed.setter
    def schedfixed(self, value):
        self._schedfixed = value

    @property
    def deviceCPU(self):
        return self._deviceCPU
    @deviceCPU.setter
    def deviceCPU(self, value):
        self._deviceCPU = value

    def branch(self, *args):
        try:
            b = [self.tasks.get(n) for n in args]
            self.graph.connect_branch(b)
        except KeyError:
            sys.exit("task %s does not exists" % n)
        return b

    def add_copy_task(self, taskname):
        task = Ufo.CopyTask()
        self.tasks[taskname] = task

    def add_task(self, taskname, plugin=None, **kargs):
        if self.tasks.get('taskname'):
            print 'Warning: %s already exists' % taskname
        if plugin is None:
            plugin = taskname
        task = self.pm.get_task(plugin, **kargs)
        self.tasks[taskname] = task