Author: andar

Revision: 5546

Log:
        Change core.test_listen_port to use twisted instead of urllib
Add test for test_listen_port
Remove some unncessary code

Diff:
Modified: trunk/deluge/core/core.py
===================================================================
--- trunk/deluge/core/core.py   2009-07-24 23:40:03 UTC (rev 5545)
+++ trunk/deluge/core/core.py   2009-07-25 00:30:45 UTC (rev 5546)
@@ -71,16 +71,6 @@
 from deluge.core.eventmanager import EventManager
 from deluge.core.rpcserver import export
 
-STATUS_KEYS = ['active_time', 'compact', 'distributed_copies', 
'download_payload_rate', 'eta',
-    'file_priorities', 'file_progress', 'files', 'hash', 'is_auto_managed', 
'is_seed', 'max_connections',
-    'max_download_speed', 'max_upload_slots', 'max_upload_speed', 'message', 
'move_on_completed',
-    'move_on_completed_path', 'name', 'next_announce', 'num_files', 
'num_peers', 'num_pieces',
-    'num_seeds', 'paused', 'peers', 'piece_length', 'prioritize_first_last', 
'private', 'progress',
-    'queue', 'ratio', 'remove_at_ratio', 'save_path', 'seed_rank', 
'seeding_time', 'state', 'stop_at_ratio',
-    'stop_ratio', 'time_added', 'total_done', 'total_payload_download', 
'total_payload_upload', 'total_peers',
-    'total_seeds', 'total_size', 'total_uploaded', 'total_wanted', 'tracker', 
'tracker_host',
-    'tracker_status', 'trackers', 'upload_payload_rate']
-
 class Core(component.Component):
     def __init__(self, listen_interface=None):
         log.debug("Core init..")
@@ -107,13 +97,6 @@
         self.settings.send_redundant_have = True
         self.session.set_settings(self.settings)
 
-        # Create an ip filter
-        self.ip_filter = lt.ip_filter()
-
-        # This keeps track of the timer to set the ip filter.. We do this a few
-        # seconds aftering adding a rule so that 'batch' adding of rules isn't 
slow.
-        self.__set_ip_filter_timer = None
-
         # Load metadata extension
         self.session.add_extension(lt.create_metadata_plugin)
         self.session.add_extension(lt.create_ut_metadata_plugin)
@@ -124,7 +107,7 @@
         self.preferencesmanager = PreferencesManager()
         self.alertmanager = AlertManager()
         self.pluginmanager = PluginManager(self)
-        self.torrentmanager = TorrentManager(self.session, self.alertmanager)
+        self.torrentmanager = TorrentManager()
         self.filtermanager = FilterManager(self)
         self.autoadd = AutoAdd()
         self.authmanager = AuthManager()
@@ -454,13 +437,6 @@
             self.torrentmanager[torrent_id].resume()
 
     @export
-    def get_status_keys(self):
-        """
-        returns all possible keys for the keys argument in 
get_torrent(s)_status.
-        """
-        return STATUS_KEYS + self.pluginmanager.status_fields.keys()
-
-    @export
     def get_torrent_status(self, torrent_id, keys):
         # Build the status dictionary
         status = self.torrentmanager[torrent_id].get_status(keys)
@@ -790,17 +766,27 @@
 
     @export
     def test_listen_port(self):
-        """ Checks if active port is open """
-        import urllib
-        port = self.get_listen_port()
-        try:
-            status = 
urllib.urlopen("http://deluge-torrent.org/test_port.php?port=%s"; % port).read()
-        except IOError:
-            log.debug("Network error while trying to check status of port %s", 
port)
-            return 0
-        else:
-            return int(status)
+        """
+        Checks if the active port is open
+        
+        :returns: True if the port is open, False if not
+        :rtype: bool
+        
+        """
+        from twisted.web.client import getPage
+        d = defer.Deferred()
+        
+        gp = getPage("http://deluge-torrent.org/test_port.php?port=%s"; % 
self.get_listen_port())
 
+        def on_get_page(result):
+            d.callback(bool(int(result)))
+        def on_get_page_failure(result):
+            d.errback(result)
+
+        gp.addCallbacks(on_get_page, on_get_page_failure)
+
+        return d
+
     @export
     def get_free_space(self, path):
         """

Modified: trunk/deluge/core/torrentmanager.py
===================================================================
--- trunk/deluge/core/torrentmanager.py 2009-07-24 23:40:03 UTC (rev 5545)
+++ trunk/deluge/core/torrentmanager.py 2009-07-25 00:30:45 UTC (rev 5546)
@@ -121,17 +121,19 @@
         self.torrents = []
 
 class TorrentManager(component.Component):
-    """TorrentManager contains a list of torrents in the current libtorrent
+    """
+    TorrentManager contains a list of torrents in the current libtorrent
     session.  This object is also responsible for saving the state of the
-    session for use on restart."""
+    session for use on restart.
+    """
 
-    def __init__(self, session, alerts):
+    def __init__(self):
         component.Component.__init__(self, "TorrentManager", interval=5, 
depend=["CorePluginManager"])
         log.debug("TorrentManager init..")
         # Set the libtorrent session
-        self.session = session
+        self.session = component.get("Core").session
         # Set the alertmanager
-        self.alerts = alerts
+        self.alerts = component.get("AlertManager")
         # Get the core config
         self.config = ConfigManager("core.conf")
 

Modified: trunk/tests/test_core.py
===================================================================
--- trunk/tests/test_core.py    2009-07-24 23:40:03 UTC (rev 5545)
+++ trunk/tests/test_core.py    2009-07-25 00:30:45 UTC (rev 5546)
@@ -100,4 +100,13 @@
         self.assertTrue(space >= 0)
         self.assertRaises(deluge.error.InvalidPathError, 
self.core.get_free_space, "/someinvalidpath")
         
-
+    def test_test_listen_port(self):
+        d = self.core.test_listen_port()
+        
+        def result(r):
+            self.assertTrue(r in (True, False))
+        
+        d.addCallback(result)
+        return d
+        
+            



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to