Beispiel #1
0
    def setup_speedtest(self, server=None):
        """
        Initializes the Speed Test client with the provided server
        :param server: Int
        :return: None
        """
        speedtest.build_user_agent()

        log.debug('Setting up SpeedTest.net client')

        if server is None:
            server = []
        else:
            server = server.split()  # Single server to list

        try:
            self.speedtest = speedtest.Speedtest()
        except speedtest.ConfigRetrievalError:
            log.critical(
                'Failed to get speedtest.net configuration.  Aborting')
            sys.exit(1)

        self.speedtest.get_servers(server)

        log.debug('Picking the closest server')

        self.speedtest.get_best_server()

        log.info('Selected Server %s in %s', self.speedtest.best['id'],
                 self.speedtest.best['name'])

        self.results = self.speedtest.results
Beispiel #2
0
    def run(self):

        while True:
            if not config.servers:
                self.run_speed_test()
            else:
                for server in config.servers:
                    self.run_speed_test(server)
            log.info('Waiting %s seconds until next test', config.delay)
            time.sleep(config.delay)
 def run(self):
     if config.delay < 0:
         self.single_test()
     else:
         while True:
             self.single_test()
             if config.delay > 0:
                 log.info('Waiting %s seconds until next test',
                          config.delay)
                 time.sleep(config.delay)
Beispiel #4
0
    def run(self):

        while True:
            if config.mode != 'all' or not config.servers:
                self.run_speed_test(config.servers, config.share, config.mode)

            elif config.mode == 'all' and config.servers:
                for server in config.servers:
                    self.run_speed_test([server], config.share, 'select')

            log.info(f'Waiting {config.delay} seconds until next test')
            time.sleep(config.delay)
Beispiel #5
0
    def run_speed_test(self, server=None):
        """
        Performs the speed test with the provided server
        :param server: Server to test against
        """
        log.info('Starting Speed Test For Server %s', server)

        try:
            self.setup_speedtest(server)
        except speedtest.NoMatchedServers:
            log.error('No matched servers: %s', server)
            return
        except speedtest.ServersRetrievalError:
            log.critical('Cannot retrieve speedtest.net server list. Aborting')
            return
        except speedtest.InvalidServerIDType:
            log.error('%s is an invalid server type, must be int', server)
            return

        log.info('Starting download test')
        self.speedtest.download()
        log.info('Starting upload test')
        self.speedtest.upload()
        self.send_results()

        results = self.results.dict()
        log.info('Download: %sMbps - Upload: %sMbps - Latency: %sms',
                 round(results['download'] / 1000000, 2),
                 round(results['upload'] / 1000000, 2),
                 results['server']['latency'])
Beispiel #6
0
    def setup_speedtest(self, servers=None, mode='select'):
        """
        Initializes the Speed Test client with the provided server
        :param server: Int
        :return: None
        """
        speedtest.build_user_agent()

        log.debug('Setting up Speedtest.net client')

        if servers:
            log.info(
                f"Selecting server {('excluding','from')[mode!='exclude']}: {servers}"
            )

        try:
            self.speedtest = speedtest.Speedtest(secure=config.secure)
        except speedtest.ConfigRetrievalError:
            log.critical(
                'Failed to get speedtest.net configuration.  Aborting')
            sys.exit(1)

        servers_in = None
        servers_ex = None

        if mode == 'select':
            servers_in = servers
        else:
            servers_ex = servers

        self.speedtest.get_servers(servers_in, servers_ex)

        # log.debug(self.speedtest.servers)

        if len(self.speedtest.servers) != 1:
            log.debug('Selecting the closest server')
            self.speedtest.get_best_server()

            log.info(
                f"Selected server {self.speedtest.best['name']} (id:{self.speedtest.best['id']})"
            )
Beispiel #7
0
    def run_speed_test(self, servers=None, share=False, mode='select'):
        """
        Performs the speed test with the provided server
        :param server: Server to test against
        """
        log.info('Starting Speedtest')
        #ensure previous results are removed
        self.speedtest = None

        try:
            self.setup_speedtest(servers, mode)
        except speedtest.NoMatchedServers:
            log.error(f'No servers matched: {servers}')
            return
        except speedtest.ServersRetrievalError:
            log.critical('Cannot retrieve speedtest.net server list. Aborting')
            return
        except speedtest.InvalidServerIDType:
            log.error(f'{servers} is an invalid server type, must be int')
            return

        log.info('Starting download test')
        self.speedtest.download()
        log.info('Starting upload test')
        self.speedtest.upload()

        if (share):
            self.speedtest.results.share()

        self.send_results()

        results = self.speedtest.results.dict()
        log.info(
            'Download: %sMbps - Upload: %sMbps - Latency: %sms - Share: %s',
            round(results['download'] / 1000000, 2),
            round(results['upload'] / 1000000, 2), results['ping'],
            results['share'])