@@ -1568,8 +1568,15 @@ def testSelectedItemPingLatency(self):
15681568 references = list (AS_UserServers ()[index ] for index in indexes )
15691569
15701570 for index , reference in zip (indexes , references ):
1571- worker = TestPingLatencyWorker (reference )
1571+ if APP ().isExiting ():
1572+ break
1573+
1574+ assert isinstance (reference , ConfigurationFactory )
1575+
1576+ if reference .deleted :
1577+ continue
15721578
1579+ worker = TestPingLatencyWorker (reference )
15731580 worker .setAutoDelete (True )
15741581 worker .finished .connect (
15751582 functools .partial (
@@ -1593,8 +1600,15 @@ def testSelectedItemTcpingLatency(self):
15931600 references = list (AS_UserServers ()[index ] for index in indexes )
15941601
15951602 for index , reference in zip (indexes , references ):
1596- worker = TestTcpingLatencyWorker (reference )
1603+ if APP ().isExiting ():
1604+ break
15971605
1606+ assert isinstance (reference , ConfigurationFactory )
1607+
1608+ if reference .deleted :
1609+ continue
1610+
1611+ worker = TestTcpingLatencyWorker (reference )
15981612 worker .setAutoDelete (True )
15991613 worker .finished .connect (
16001614 functools .partial (
@@ -1660,10 +1674,15 @@ def handleTestDownloadSpeedJobXXX(
16601674 jobTimer : QtCore .QTimer ,
16611675 isMulti : bool ,
16621676 ):
1663- try :
1664- if isMulti and not self .testDownloadSpeedMultiSema .tryAcquire (1 ):
1665- return
1677+ if APP ().isExiting ():
1678+ jobTimer .stop ()
16661679
1680+ return
1681+
1682+ if isMulti and not self .testDownloadSpeedMultiSema .tryAcquire (1 ):
1683+ return
1684+
1685+ try :
16671686 index , factory , timeout = jobQueue .get_nowait ()
16681687 except queue .Empty :
16691688 # Queue is empty
@@ -1675,20 +1694,31 @@ def handleTestDownloadSpeedJobXXX(
16751694 jobTimer .stop ()
16761695
16771696 return
1678- else :
1679- if isMulti :
1680- if self .testDownloadSpeedMultiPort >= 40000 :
1681- self .testDownloadSpeedMultiPort = 30000
16821697
1683- testDownloadSpeedPort = self .testDownloadSpeedMultiPort
1684-
1685- self .testDownloadSpeedMultiPort += 1
1698+ def fetchNextJob ():
1699+ if not APP ().isExiting ():
1700+ # Fetch next job.
1701+ if self .isVisible ():
1702+ interval = max (1.0 , 1000 / len (AS_UserServers ()))
1703+ interval = min (interval , 50 )
16861704
1687- if not APP (). isExiting ():
1688- # Fetch next job.
1689- jobTimer .start (1 )
1705+ jobTimer . start ( int ( interval ))
1706+ else :
1707+ jobTimer .start (50 )
16901708 else :
1691- testDownloadSpeedPort = 20809
1709+ jobTimer .stop ()
1710+
1711+ if isMulti :
1712+ if self .testDownloadSpeedMultiPort >= 40000 :
1713+ self .testDownloadSpeedMultiPort = 30000
1714+
1715+ testDownloadSpeedPort = self .testDownloadSpeedMultiPort
1716+
1717+ self .testDownloadSpeedMultiPort += 1
1718+
1719+ fetchNextJob ()
1720+ else :
1721+ testDownloadSpeedPort = 20809
16921722
16931723 assert isinstance (factory , ConfigurationFactory )
16941724
@@ -1697,21 +1727,18 @@ def handleTestDownloadSpeedJobXXX(
16971727 if isMulti :
16981728 self .testDownloadSpeedMultiSema .release (1 )
16991729
1700- if not APP ().isExiting ():
1701- # Fetch next job.
1702- jobTimer .start (1 )
1730+ fetchNextJob ()
17031731 else :
1704- self .testDownloadSpeedByFactory (
1705- index ,
1706- factory ,
1707- testDownloadSpeedPort ,
1708- timeout ,
1709- isMulti ,
1710- )
1711-
17121732 if not APP ().isExiting ():
1713- # Fetch next job.
1714- jobTimer .start (1 )
1733+ self .testDownloadSpeedByFactory (
1734+ index ,
1735+ factory ,
1736+ testDownloadSpeedPort ,
1737+ timeout ,
1738+ isMulti ,
1739+ )
1740+
1741+ fetchNextJob ()
17151742
17161743 @QtCore .Slot ()
17171744 def handleTestDownloadSpeedJob (self ):
0 commit comments