Changeset bb0e69


Ignore:
Timestamp:
05/08/2016 11:00:44 AM (9 years ago)
Author:
Calum Lind <calumlind+deluge@gmail.com>
Branches:
2.0.x, develop, master
Children:
616523c
Parents:
d5294d
git-author:
bendikro <bro.devel+deluge@gmail.com> (04/28/2016 10:13:28 PM)
git-committer:
Calum Lind <calumlind+deluge@gmail.com> (05/08/2016 11:00:44 AM)
Message:

[UI] Add tests for ui_entry

Location:
deluge
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • deluge/plugins/WebUi/deluge/plugins/webui/core.py

    rd5294d rbb0e69  
    6767                self.server = component.get("DelugeWeb")
    6868            except KeyError:
    69                 self.server = server.DelugeWeb()
     69                self.server = server.DelugeWeb(daemon=False)
    7070
    7171        self.server.port = self.config["port"]
    7272        self.server.https = self.config["ssl"]
    7373        try:
    74             self.server.start(standalone=False)
     74            self.server.start()
    7575        except CannotListenError as ex:
    7676            log.warn("Failed to start WebUI server: %s", ex)
  • deluge/tests/test_web_api.py

    rd5294d rbb0e69  
    6565        self.config = configmanager.ConfigManager("web.conf", config_defaults)
    6666
    67         self.deluge_web = DelugeWeb()
     67        self.deluge_web = DelugeWeb(daemon=False)
    6868
    6969        host = list(self.deluge_web.web_api.host_list["hosts"][0])
  • deluge/ui/gtkui/gtkui.py

    rd5294d rbb0e69  
    2929except ReactorAlreadyInstalledError as ex:
    3030    # Running unit tests so trial already installed a rector
    31     pass
     31    from twisted.internet import reactor
    3232
    3333import deluge.common
     
    152152        def run(options):
    153153            try:
    154                 GtkUI(options)
     154                gtkui = GtkUI(options)
     155                gtkui.start()
    155156            except Exception as ex:
    156157                log.exception(ex)
     
    251252        self.daemon_bps = (0, 0, 0)
    252253        self.rpc_stats = LoopingCall(self.print_rpc_stats)
     254        self.closing = False
    253255
    254256        # Twisted catches signals to terminate, so have it call a pre_shutdown method.
    255257        reactor.addSystemEventTrigger("before", "gtkui_close", self.close)
    256 
    257         reactor.callWhenRunning(self._on_reactor_start)
    258         self.closing = False
    259258
    260259        def gtkui_sigint_handler(num, frame):
     
    263262
    264263        signal.signal(signal.SIGINT, gtkui_sigint_handler)
     264
     265    def start(self):
     266        reactor.callWhenRunning(self._on_reactor_start)
    265267
    266268        # Initialize gdk threading
  • deluge/ui/gtkui/ipcinterface.py

    rd5294d rbb0e69  
    7575    def __init__(self, args):
    7676        component.Component.__init__(self, "IPCInterface")
     77        self.listener = None
    7778        ipc_dir = get_config_dir("ipc")
    7879        if not os.path.exists(ipc_dir):
     
    9293                import random
    9394                port = random.randrange(20000, 65535)
    94                 reactor.listenTCP(port, self.factory)
     95                self.listener = reactor.listenTCP(port, self.factory)
    9596                # Store the port number in the socket file
    9697                open(socket, "w").write(str(port))
     
    133134                self.factory = Factory()
    134135                self.factory.protocol = IPCProtocolServer
    135                 reactor.listenUNIX(socket, self.factory, wantPID=True)
     136                self.listener = reactor.listenUNIX(socket, self.factory, wantPID=True)
    136137            except twisted.internet.error.CannotListenError as ex:
    137138                log.info("Deluge is already running! Sending arguments to running instance...")
     
    161162            import win32api
    162163            win32api.CloseHandle(self.mutex)
     164        if self.listener:
     165            return self.listener.stopListening()
    163166
    164167
  • deluge/ui/web/server.py

    rd5294d rbb0e69  
    533533class DelugeWeb(component.Component):
    534534
    535     def __init__(self, options=None):
    536         super(DelugeWeb, self).__init__("DelugeWeb")
     535    def __init__(self, options=None, daemon=True):
     536        """
     537        Setup the DelugeWeb server.
     538
     539        Args:
     540            options (argparse.Namespace): The web server options.
     541            daemon (bool): If True run web server as a seperate daemon process (starts a twisted
     542                reactor). If False shares the process and twisted reactor from WebUI plugin or tests.
     543
     544        """
     545        component.Component.__init__(self, "DelugeWeb", depend=["Web"])
    537546        self.config = configmanager.ConfigManager("web.conf", CONFIG_DEFAULTS)
    538547        self.config.run_converter((0, 1), 2, self._migrate_config_1_to_2)
     
    568577
    569578        self.auth = Auth(self.config)
    570         self.standalone = True
     579        self.daemon = daemon
    571580        # Initalize the plugins
    572581        self.plugins = PluginManager()
     
    595604            SetConsoleCtrlHandler(win_handler)
    596605
    597     def start(self, standalone=True):
     606    def start(self):
    598607        """
    599608        Start the DelugeWeb server
    600 
    601         When running WebUI plugin, the server must not try to start
    602         the twisted reactor.
    603 
    604         Args:
    605             standalone (bool): Whether the server runs as a standalone process
    606                                If standalone, start twisted reactor.
    607609        """
    608610        if self.socket:
     
    610612            return
    611613
    612         self.standalone = standalone
    613614        log.info("Starting webui server at PID %s", os.getpid())
    614615        if self.https:
     
    619620        component.get("Web").enable()
    620621
    621         if self.standalone:
     622        if self.daemon:
    622623            reactor.run()
    623624
     
    642643    def stop(self):
    643644        log.info("Shutting down webserver")
    644         component.get("Web").disable()
     645        try:
     646            component.get("Web").disable()
     647        except KeyError:
     648            pass
    645649
    646650        self.plugins.disable_plugins()
     
    658662    def shutdown(self, *args):
    659663        self.stop()
    660         if self.standalone and reactor.running:
     664        if self.daemon and reactor.running:
    661665            reactor.stop()
    662666
  • deluge/ui/web/web.py

    rd5294d rbb0e69  
    6161                self.server.start()
    6262            except CannotListenError as ex:
    63                 log.error("%s \nCheck that deluge-web or webui plugin are not already running.", ex)
     63                log.error("%s \nCheck that deluge-web or webui plugin is not already running.", ex)
    6464            except Exception as ex:
    6565                log.exception(ex)
Note: See TracChangeset for help on using the changeset viewer.