コード例 #1
0
ファイル: flowdump10.py プロジェクト: sinofeng/vlcp
                table_id = currdef.OFPTT_ALL,
                out_port = currdef.OFPP_NONE,
                match = currdef.ofp_match.new(wildcards=currdef.OFPFW_ALL))
        openflow_reply = await of_proto.querymultipart(req, connection, self)
        for msg in openflow_reply:
            pprint(common.dump(msg, dumpextra = True, typeinfo = common.DUMPTYPE_FLAT, tostr=True))
        req = currdef.nx_flow_stats_request.new(table_id = currdef.OFPTT_ALL, out_port = currdef.OFPP_NONE)
        openflow_reply = await of_proto.querymultipart(req, connection, self)
        for msg in openflow_reply:
            pprint(common.dump(msg, dumpextra = True, typeinfo = common.DUMPTYPE_FLAT, tostr=True))
        req = currdef.ofp_msg.new()
        req.header.type = currdef.OFPT_GET_CONFIG_REQUEST
        openflow_reply = await of_proto.querywithreply(req, connection, self)
        pprint(common.dump(openflow_reply, tostr=True))
        await mgt_conn.shutdown(False)

if __name__ == '__main__':
    logging.basicConfig()
    s = Server()
    #s.scheduler.logger.setLevel(logging.DEBUG)
    #of_proto._logger.setLevel(logging.DEBUG)
    #of_proto.debugging = True
    #NamedStruct._logger.setLevel(logging.DEBUG)
    bridge = sys.argv[1]
    routine = MainRoutine(s.scheduler)
    routine.start()
    mgt_conn = Client('unix:/var/run/openvswitch/' + bridge + '.mgmt', of_proto, s.scheduler)
    mgt_conn.start()
    s.serve()
    
コード例 #2
0
ファイル: testStream.py プロジェクト: vtanrun/vlcp
 def setUp(self):
     self.server = Server()
     self.rc = RoutineContainer(self.server.scheduler)
コード例 #3
0
ファイル: testModule.py プロジェクト: sinofeng/vlcp
    def testModuleLoad(self):
        logging.basicConfig()
        manager['server.startup'] = ('tests.gensrc.testmodule1.TestModule1',
                                     'tests.gensrc.testmodule2.TestModule2')
        s = Server()
        import tests.gensrc
        basedir = tests.gensrc.__path__[0]
        with open(os.path.join(basedir, 'testmodule1.py'), 'wb') as f:
            f.write(module1)
        with open(os.path.join(basedir, 'testmodule2.py'), 'wb') as f:
            f.write(module2)
        # Run unittest discover may already load the module, reload it
        import tests.gensrc.testmodule1
        import tests.gensrc.testmodule2
        remove_cache(tests.gensrc.testmodule1)
        remove_cache(tests.gensrc.testmodule2)
        reload(tests.gensrc.testmodule1)
        reload(tests.gensrc.testmodule2)
        # Sometimes the timestamp is not working, make sure python re-compile the source file
        r = RoutineContainer(s.scheduler)
        apiResults = []

        async def testproc():
            await ModuleLoadStateChanged.createMatcher()
            apiResults.append(await call_api(r, "testmodule1", "method1", {}))
            apiResults.append(await call_api(r, "testmodule1", "method2", {
                'a': 1,
                'b': 2
            }))
            try:
                await call_api(r, "testmodule1", "method4", {})
                apiResults.append(None)
            except ValueError as exc:
                apiResults.append(exc.args[0])
            from .gensrc.testmodule2 import ModuleTestEvent2
            matcher = ModuleTestEvent2.createMatcher()
            self.event = False

            async def proc2():
                return await call_api(r, "testmodule1", "method3", {
                    'a': 1,
                    'b': 2
                })

            def callback(event, matcher):
                self.event = event

            await r.with_callback(proc2(), callback, matcher)
            if not self.event:
                timeout, ev, m = await r.wait_with_timeout(0.1, matcher)
                if not timeout:
                    self.event = ev
            if self.event:
                apiResults.append((self.event.result, self.event.version))
            else:
                apiResults.append(False)
            apiResults.append(await call_api(r, "testmodule1", "discover", {}))
            with open(os.path.join(basedir, 'testmodule1.py'), 'wb') as f:
                f.write(module1v2)
            await s.moduleloader.reload_modules(
                ['tests.gensrc.testmodule1.TestModule1'])
            apiResults.append(await call_api(r, "testmodule1", "method1", {}))
            matcher = ModuleTestEvent2.createMatcher()
            self.event = False

            async def proc2_2():
                return await call_api(r, "testmodule1", "method3", {
                    'a': 1,
                    'b': 2
                })

            def callback_2(event, matcher):
                self.event = event

            await r.with_callback(proc2_2(), callback_2, matcher)
            if not self.event:
                timeout, ev, m = await r.wait_with_timeout(0.1, matcher)
                if not timeout:
                    self.event = ev
            if self.event:
                apiResults.append((self.event.result, self.event.version))
            else:
                apiResults.append(False)
            with open(os.path.join(basedir, 'testmodule2.py'), 'wb') as f:
                f.write(module2v2)
            await s.moduleloader.reload_modules(
                ['tests.gensrc.testmodule2.TestModule2'])
            matcher = ModuleTestEvent2.createMatcher()
            self.event = False

            async def proc2_3():
                return await call_api(r, "testmodule1", "method3", {
                    'a': 1,
                    'b': 2
                })

            def callback_3(event, matcher):
                self.event = event

            await r.with_callback(proc2_3(), callback_3, matcher)
            if not self.event:
                timeout, ev, m = await r.wait_with_timeout(0.1, matcher)
                if not timeout:
                    self.event = ev
            if self.event:
                apiResults.append((self.event.result, self.event.version))
            else:
                apiResults.append(False)
            with open(os.path.join(basedir, 'testmodule1.py'), 'wb') as f:
                f.write(module1v3)
            with open(os.path.join(basedir, 'testmodule2.py'), 'wb') as f:
                f.write(module2v3)
            await s.moduleloader.reload_modules([
                'tests.gensrc.testmodule1.TestModule1',
                'tests.gensrc.testmodule2.TestModule2'
            ])
            apiResults.append(await call_api(r, "testmodule1", "method1", {}))
            matcher = ModuleTestEvent2.createMatcher()
            self.event = False

            async def proc2_4():
                return await call_api(r, "testmodule1", "method3", {
                    'a': 1,
                    'b': 2
                })

            def callback_4(event, matcher):
                self.event = event

            await r.with_callback(proc2_4(), callback_4, matcher)
            if not self.event:
                timeout, ev, m = await r.wait_with_timeout(0.1, matcher)
                if not timeout:
                    self.event = ev
            if self.event:
                apiResults.append((self.event.result, self.event.version))
            else:
                apiResults.append(False)
            try:
                await r.execute_with_timeout(
                    1.0, call_api(r, "testmodule1", "notexists", {}))
            except APIRejectedException:
                apiResults.append(True)
            except Exception:
                apiResults.append(False)
            else:
                apiResults.append(False)
            await s.moduleloader.unload_by_path(
                "tests.gensrc.testmodule1.TestModule1")

        r.main = testproc
        r.start()
        s.serve()
        print(repr(apiResults))
        self.assertEqual(apiResults, [
            'version1', 3, 'test', (3, 'version1'), {
                'method1':
                'Run method1',
                'method2':
                'Run method2',
                'method3':
                'Run method3',
                'method4':
                'Run method4',
                'discover':
                'Discover API definitions. Set details=true to show details'
            }, 'version2', (3, 'version1'), (3, 'version2'), 'version3',
            (3, 'version3'), True
        ])
コード例 #4
0
ファイル: testModule.py プロジェクト: vtanrun/vlcp
    def testModuleLoad(self):
        logging.basicConfig()
        manager['server.startup'] = ('tests.gensrc.testmodule1.TestModule1',
                                     'tests.gensrc.testmodule2.TestModule2')
        s = Server()
        import tests.gensrc
        basedir = tests.gensrc.__path__[0]
        with open(os.path.join(basedir, 'testmodule1.py'), 'wb') as f:
            f.write(module1)
        with open(os.path.join(basedir, 'testmodule2.py'), 'wb') as f:
            f.write(module2)
        # Run unittest discover may already load the module, reload it
        import tests.gensrc.testmodule1
        import tests.gensrc.testmodule2
        removeCache(tests.gensrc.testmodule1)
        removeCache(tests.gensrc.testmodule2)
        reload(tests.gensrc.testmodule1)
        reload(tests.gensrc.testmodule2)
        # Sometimes the timestamp is not working, make sure python re-compile the source file
        r = RoutineContainer(s.scheduler)
        apiResults = []

        def testproc():
            yield (ModuleLoadStateChanged.createMatcher(), )
            for m in callAPI(r, "testmodule1", "method1", {}):
                yield m
            apiResults.append(r.retvalue)
            for m in callAPI(r, "testmodule1", "method2", {'a': 1, 'b': 2}):
                yield m
            apiResults.append(r.retvalue)
            try:
                for m in callAPI(r, "testmodule1", "method4", {}):
                    yield m
                apiResults.append(None)
            except ValueError as exc:
                apiResults.append(exc.args[0])
            from .gensrc.testmodule2 import ModuleTestEvent2
            matcher = ModuleTestEvent2.createMatcher()
            self.event = False

            def proc2():
                for m in callAPI(r, "testmodule1", "method3", {
                        'a': 1,
                        'b': 2
                }):
                    yield m

            def callback(event, matcher):
                self.event = event
                if False:
                    yield

            for m in r.withCallback(proc2(), callback, matcher):
                yield m
            if not self.event:
                for m in r.waitWithTimeout(0.1, matcher):
                    yield m
                if not r.timeout:
                    self.event = r.event
            if self.event:
                apiResults.append((self.event.result, self.event.version))
            else:
                apiResults.append(False)
            for m in callAPI(r, "testmodule1", "discover", {}):
                yield m
            apiResults.append(r.retvalue)
            with open(os.path.join(basedir, 'testmodule1.py'), 'wb') as f:
                f.write(module1v2)
            for m in s.moduleloader.delegate(
                    s.moduleloader.reloadModules(
                        ['tests.gensrc.testmodule1.TestModule1'])):
                yield m
            for m in callAPI(r, "testmodule1", "method1", {}):
                yield m
            apiResults.append(r.retvalue)
            matcher = ModuleTestEvent2.createMatcher()
            self.event = False

            def proc2_2():
                for m in callAPI(r, "testmodule1", "method3", {
                        'a': 1,
                        'b': 2
                }):
                    yield m

            def callback_2(event, matcher):
                self.event = event
                if False:
                    yield

            for m in r.withCallback(proc2_2(), callback_2, matcher):
                yield m
            if not self.event:
                for m in r.waitWithTimeout(0.1, matcher):
                    yield m
                if not r.timeout:
                    self.event = r.event
            if self.event:
                apiResults.append((self.event.result, self.event.version))
            else:
                apiResults.append(False)
            with open(os.path.join(basedir, 'testmodule2.py'), 'wb') as f:
                f.write(module2v2)
            for m in s.moduleloader.delegate(
                    s.moduleloader.reloadModules(
                        ['tests.gensrc.testmodule2.TestModule2'])):
                yield m
            matcher = ModuleTestEvent2.createMatcher()
            self.event = False

            def proc2_3():
                for m in callAPI(r, "testmodule1", "method3", {
                        'a': 1,
                        'b': 2
                }):
                    yield m

            def callback_3(event, matcher):
                self.event = event
                if False:
                    yield

            for m in r.withCallback(proc2_3(), callback_3, matcher):
                yield m
            if not self.event:
                for m in r.waitWithTimeout(0.1, matcher):
                    yield m
                if not r.timeout:
                    self.event = r.event
            if self.event:
                apiResults.append((self.event.result, self.event.version))
            else:
                apiResults.append(False)
            with open(os.path.join(basedir, 'testmodule1.py'), 'wb') as f:
                f.write(module1v3)
            with open(os.path.join(basedir, 'testmodule2.py'), 'wb') as f:
                f.write(module2v3)
            for m in s.moduleloader.delegate(
                    s.moduleloader.reloadModules([
                        'tests.gensrc.testmodule1.TestModule1',
                        'tests.gensrc.testmodule2.TestModule2'
                    ])):
                yield m
            for m in callAPI(r, "testmodule1", "method1", {}):
                yield m
            apiResults.append(r.retvalue)
            matcher = ModuleTestEvent2.createMatcher()
            self.event = False

            def proc2_4():
                for m in callAPI(r, "testmodule1", "method3", {
                        'a': 1,
                        'b': 2
                }):
                    yield m

            def callback_4(event, matcher):
                self.event = event
                if False:
                    yield

            for m in r.withCallback(proc2_4(), callback_4, matcher):
                yield m
            if not self.event:
                for m in r.waitWithTimeout(0.1, matcher):
                    yield m
                if not r.timeout:
                    self.event = r.event
            if self.event:
                apiResults.append((self.event.result, self.event.version))
            else:
                apiResults.append(False)
            try:
                for m in r.executeWithTimeout(
                        1.0, callAPI(r, "testmodule1", "notexists", {})):
                    yield m
            except ValueError:
                apiResults.append(True)
            except Exception:
                apiResults.append(False)
            else:
                apiResults.append(False)
            for m in s.moduleloader.delegate(
                    s.moduleloader.unloadByPath(
                        "tests.gensrc.testmodule1.TestModule1")):
                yield m

        r.main = testproc
        r.start()
        s.serve()
        print(repr(apiResults))
        self.assertEqual(apiResults, [
            'version1', 3, 'test', (3, 'version1'), {
                'method1':
                'Run method1',
                'method2':
                'Run method2',
                'method3':
                'Run method3',
                'method4':
                'Run method4',
                'discover':
                'Discover API definitions. Set details=true to show details'
            }, 'version2', (3, 'version1'), (3, 'version2'), 'version3',
            (3, 'version3'), True
        ])
コード例 #5
0
    def main(self):
        while True:

            connectEventMatcher = OpenflowConnectionStateEvent.createMatcher()
            yield (connectEventMatcher,)
           
            # here event must be connect event
            self.connectStateHandler(self.event)

if __name__ == '__main__':

   
    #logging.basicConfig(format='%(asctime)s-%(name)s-%(levelname)s : %(message)s',level=logging.DEBUG)
    logging.basicConfig(format='%(asctime)s-%(name)s-%(levelname)s : %(message)s')
    log = logging.getLogger('l2switch')
    log.setLevel(logging.DEBUG)

    of_proto.debuging = True
    
    #manager['server.debugging']=True
    loopServer = Server()
    loopServer.scheduler.logger.setLevel(logging.DEBUG)

    tcpServer = TcpServer("tcp://127.0.0.1",of_proto,loopServer.scheduler)
    tcpServer.start()
    
    switch = l2switch(loopServer.scheduler)
    switch.start()

    loopServer.serve()