コード例 #1
0
ファイル: persistent.py プロジェクト: mcruse/monotone
 def _read(self):
     if not os.path.exists(self.filename):
         return {}
     self._lock.acquire()
     file = None
     try:
         file = open(self.filename, 'r')
         r = RExec()
         r.update_global_names(self._context)
         dict = r.r_eval(file.read())
     finally:
         if file: file.close()
         self._lock.release()
     return dict
コード例 #2
0
 def _read(self):
     if not os.path.exists(self.filename):
         return {}
     self._lock.acquire()
     file = None
     try:
         file = open(self.filename, 'r')
         r = RExec()
         r.update_global_names(self._context)
         dict = r.r_eval(file.read())
     finally:
         if file: file.close()
         self._lock.release()
     return dict
コード例 #3
0
def _create_shared_env():
    import mpx.lib.node

    class Temp:
        __module__ = __name__

    stub = Temp()
    stub.lib = Temp()
    stub.lib.node = Temp()
    stub.lib.node.as_node = mpx.lib.node.as_node
    stub.lib.node.as_internal_node = mpx.lib.node.as_internal_node
    rexec = RExec()
    rexec.update_global_names(
        {"mpx": stub, "as_node": mpx.lib.node.as_node, "as_internal_node": mpx.lib.node.as_internal_node}
    )
    return rexec
コード例 #4
0
    def __init__(self, name):
        _logs_lock.acquire()
        try:
            if _logs.has_key(name):
                from mpx.lib.msglog import types
                raise ENameInUse(name, logtype=types.ERR)
            self._lock = threading.Lock()
            self._lock.acquire()
            _logs[name] = self
        finally:
            _logs_lock.release()
        try:
            self.name = name
            self.eval = RExec().r_eval
            self.path = properties.LOGFILE_DIRECTORY
            self.filename = os.path.join(self.path, self.name + ".log")
            self.data_manager = _LogDataManager(self.filename)

            self._slice_position = 0
            self.max_return_length = 100000
            self.last_values = self._get_last_row()
            # It is likely that the log contains a higher seq number than
            #  the one that was last saved by DataManager, if so, update it.
            # NOTE: the data manager will have a higher number if a trim_g* was
            #       done and then the log was closed.
            if self.last_values:
                if self.last_values[-1] >= self.data_manager.inspect_seq():
                    self.data_manager.set_seq(self.last_values[-1] + 1)
                else:
                    self.last_values = []
        finally:
            self._lock.release()
コード例 #5
0
ファイル: periodic_log.py プロジェクト: ed-aicradle/monotone
def _create_shared_env():
    import mpx.lib.node

    class Temp:
        __module__ = __name__

    stub = Temp()
    stub.lib = Temp()
    stub.lib.node = Temp()
    stub.lib.node.as_node = mpx.lib.node.as_node
    stub.lib.node.as_internal_node = mpx.lib.node.as_internal_node
    rexec = RExec()
    rexec.update_global_names({
        'mpx': stub,
        'as_node': mpx.lib.node.as_node,
        'as_internal_node': mpx.lib.node.as_internal_node
    })
    return rexec
コード例 #6
0
class TestCase(DefaultTestFixture):
    def _setUp(self):
        warnings.resetwarnings()
        self.rexec = RExec()
        return
    def _tearDown(self):
        if hasattr(self, 'rexec'):
            del self.rexec
        return
    def setUp(self):
        DefaultTestFixture.setUp(self)
        self._setUp()
        return
    def tearDown(self):
        try:
            self._tearDown()
        finally:
            DefaultTestFixture.tearDown(self)
        return
    def test_create(self):
        return
    def test_simple_reval(self):
        result = self.rexec.r_eval('1 + 1')
        if result != 2:
            raise 'Failed simple r_eval.'
        return
    def test_ok_python_imports(self):
        self._tearDown()
        for m in ('audioop', 'array', 'binascii', 'cmath', 'errno', 'imageop',
                  'marshal', 'math', 'md5', 'operator', 'parser', 're',
                  'select', 'strop', 'struct', 'time',
                  'marshal', '__builtin__', '__main__', 'sys', 'posix',
                  ):
            self._setUp()
            warnings.filterwarnings("ignore", '.*', DeprecationWarning)
            self.rexec.r_exec('import %s' % m)
    def test_scary_python_imports(self):
        self._tearDown()
        for m in ('socket', 'msglog', 'signal', 'SocketServer', 'mmap'):
            self._setUp()
            try: self.rexec.r_exec('import %s' % m)
            except ImportError: pass
            else: raise 'Failed to recognize a dangerous module: %s' % m
コード例 #7
0
 def _read(self):
     if not os.path.exists(self.filename):
         return {}
     self._lock.acquire()
     file = None
     try:
         file = open(self.filename, 'r')
         dict = RExec().r_eval(file.read())
     finally:
         if file: file.close()
         self._lock.release()
     return dict
コード例 #8
0
def _unpackage_dict(dict):
    r = RExec()
    for key in dict.keys():
        dict[key] = r.r_eval(dict[key])
    return dict
コード例 #9
0
 def _setUp(self):
     warnings.resetwarnings()
     self.rexec = RExec()
     return
コード例 #10
0
class TestCase(DefaultTestFixture):
    def _setUp(self):
        warnings.resetwarnings()
        self.rexec = RExec()
        return

    def _tearDown(self):
        if hasattr(self, 'rexec'):
            del self.rexec
        return

    def setUp(self):
        DefaultTestFixture.setUp(self)
        self._setUp()
        return

    def tearDown(self):
        try:
            self._tearDown()
        finally:
            DefaultTestFixture.tearDown(self)
        return

    def test_create(self):
        return

    def test_simple_reval(self):
        result = self.rexec.r_eval('1 + 1')
        if result != 2:
            raise 'Failed simple r_eval.'
        return

    def test_ok_python_imports(self):
        self._tearDown()
        for m in (
                'audioop',
                'array',
                'binascii',
                'cmath',
                'errno',
                'imageop',
                'marshal',
                'math',
                'md5',
                'operator',
                'parser',
                're',
                'select',
                'strop',
                'struct',
                'time',
                'marshal',
                '__builtin__',
                '__main__',
                'sys',
                'posix',
        ):
            self._setUp()
            warnings.filterwarnings("ignore", '.*', DeprecationWarning)
            self.rexec.r_exec('import %s' % m)

    def test_scary_python_imports(self):
        self._tearDown()
        for m in ('socket', 'msglog', 'signal', 'SocketServer', 'mmap'):
            self._setUp()
            try:
                self.rexec.r_exec('import %s' % m)
            except ImportError:
                pass
            else:
                raise 'Failed to recognize a dangerous module: %s' % m
コード例 #11
0
 def _setUp(self):
     warnings.resetwarnings()
     self.rexec = RExec()
     return
コード例 #12
0
ファイル: persistent.py プロジェクト: mcruse/monotone
def _unpackage_dict(dict, context):
    r = RExec()
    r.update_global_names(context)
    for key in dict.keys():
        dict[key] = r.r_eval(dict[key])
    return dict
コード例 #13
0
def _unpackage_dict(dict, context):
    r = RExec()
    r.update_global_names(context)
    for key in dict.keys():
        dict[key] = r.r_eval(dict[key])
    return dict