Added additional unit flexibility for download/upload speeds.
This commit is contained in:
		
							parent
							
								
									22210ca352
								
							
						
					
					
						commit
						8fcd4a019e
					
				
							
								
								
									
										46
									
								
								speedtest.py
								
								
								
								
							
							
						
						
									
										46
									
								
								speedtest.py
								
								
								
								
							| 
						 | 
					@ -59,6 +59,18 @@ PY25PLUS = sys.version_info[:2] >= (2, 5)
 | 
				
			||||||
PY26PLUS = sys.version_info[:2] >= (2, 6)
 | 
					PY26PLUS = sys.version_info[:2] >= (2, 6)
 | 
				
			||||||
PY32PLUS = sys.version_info[:2] >= (3, 2)
 | 
					PY32PLUS = sys.version_info[:2] >= (3, 2)
 | 
				
			||||||
PY310PLUS = sys.version_info[:2] >= (3, 10)
 | 
					PY310PLUS = sys.version_info[:2] >= (3, 10)
 | 
				
			||||||
 | 
					SIZEMAP = {
 | 
				
			||||||
 | 
					    "Mibyte": 8. * 1024 * 1024,
 | 
				
			||||||
 | 
					    "Mbyte": 8. * 1000 * 1000,
 | 
				
			||||||
 | 
					    "Mibit": 1. * 1024 * 1024,
 | 
				
			||||||
 | 
					    "Mbit": 1. * 1000 * 1000,
 | 
				
			||||||
 | 
					    "Kibyte": 8. * 1024,
 | 
				
			||||||
 | 
					    "Kbyte": 8. * 1000,
 | 
				
			||||||
 | 
					    "Kibit": 1. * 1024,
 | 
				
			||||||
 | 
					    "Kbit": 1. * 1000,
 | 
				
			||||||
 | 
					    "byte": 8.,
 | 
				
			||||||
 | 
					    "bit": 1.,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Begin import game to handle Python 2 and Python 3
 | 
					# Begin import game to handle Python 2 and Python 3
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
| 
						 | 
					@ -1733,11 +1745,14 @@ def parse_args():
 | 
				
			||||||
                        help='Only use a single connection instead of '
 | 
					                        help='Only use a single connection instead of '
 | 
				
			||||||
                             'multiple. This simulates a typical file '
 | 
					                             'multiple. This simulates a typical file '
 | 
				
			||||||
                             'transfer.')
 | 
					                             'transfer.')
 | 
				
			||||||
    parser.add_argument('--bytes', dest='units', action='store_const',
 | 
					    parser.add_argument('--bytes', default=False, action='store_true',
 | 
				
			||||||
                        const=('byte', 8), default=('bit', 1),
 | 
					 | 
				
			||||||
                        help='Display values in bytes instead of bits. Does '
 | 
					                        help='Display values in bytes instead of bits. Does '
 | 
				
			||||||
                             'not affect the image generated by --share, nor '
 | 
					                             'not affect the image generated by --share, nor '
 | 
				
			||||||
                             'output from --json or --csv')
 | 
					                             'output from --json or --csv')
 | 
				
			||||||
 | 
					    parser.add_argument('--units', choices=tuple(SIZEMAP),
 | 
				
			||||||
 | 
					                        help='Determines which units to display values in. Does '
 | 
				
			||||||
 | 
					                             'not affect the image generated by --share, nor '
 | 
				
			||||||
 | 
					                             'output from --json or --csv')
 | 
				
			||||||
    parser.add_argument('--share', action='store_true',
 | 
					    parser.add_argument('--share', action='store_true',
 | 
				
			||||||
                        help='Generate and provide a URL to the speedtest.net '
 | 
					                        help='Generate and provide a URL to the speedtest.net '
 | 
				
			||||||
                             'share results image, not displayed with --csv')
 | 
					                             'share results image, not displayed with --csv')
 | 
				
			||||||
| 
						 | 
					@ -1747,7 +1762,7 @@ def parse_args():
 | 
				
			||||||
    parser.add_argument('--csv', action='store_true', default=False,
 | 
					    parser.add_argument('--csv', action='store_true', default=False,
 | 
				
			||||||
                        help='Suppress verbose output, only show basic '
 | 
					                        help='Suppress verbose output, only show basic '
 | 
				
			||||||
                             'information in CSV format. Speeds listed in '
 | 
					                             'information in CSV format. Speeds listed in '
 | 
				
			||||||
                             'bit/s and not affected by --bytes')
 | 
					                             'bit/s and not affected by --bytes or --units')
 | 
				
			||||||
    parser.add_argument('--csv-delimiter', default=',', type=PARSER_TYPE_STR,
 | 
					    parser.add_argument('--csv-delimiter', default=',', type=PARSER_TYPE_STR,
 | 
				
			||||||
                        help='Single character delimiter to use in CSV '
 | 
					                        help='Single character delimiter to use in CSV '
 | 
				
			||||||
                             'output. Default ","')
 | 
					                             'output. Default ","')
 | 
				
			||||||
| 
						 | 
					@ -1756,7 +1771,7 @@ def parse_args():
 | 
				
			||||||
    parser.add_argument('--json', action='store_true', default=False,
 | 
					    parser.add_argument('--json', action='store_true', default=False,
 | 
				
			||||||
                        help='Suppress verbose output, only show basic '
 | 
					                        help='Suppress verbose output, only show basic '
 | 
				
			||||||
                             'information in JSON format. Speeds listed in '
 | 
					                             'information in JSON format. Speeds listed in '
 | 
				
			||||||
                             'bit/s and not affected by --bytes')
 | 
					                             'bit/s and not affected by --bytes or --units')
 | 
				
			||||||
    parser.add_argument('--list', action='store_true',
 | 
					    parser.add_argument('--list', action='store_true',
 | 
				
			||||||
                        help='Display a list of speedtest.net servers '
 | 
					                        help='Display a list of speedtest.net servers '
 | 
				
			||||||
                             'sorted by distance')
 | 
					                             'sorted by distance')
 | 
				
			||||||
| 
						 | 
					@ -1850,6 +1865,10 @@ def shell():
 | 
				
			||||||
        raise SpeedtestCLIError('Cannot supply both --no-download and '
 | 
					        raise SpeedtestCLIError('Cannot supply both --no-download and '
 | 
				
			||||||
                                '--no-upload')
 | 
					                                '--no-upload')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if not args.bytes and not args.units:
 | 
				
			||||||
 | 
					        raise SpeedtestCLIError('Cannot supply both --bytes and '
 | 
				
			||||||
 | 
					                                '--units')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if len(args.csv_delimiter) != 1:
 | 
					    if len(args.csv_delimiter) != 1:
 | 
				
			||||||
        raise SpeedtestCLIError('--csv-delimiter must be a single character')
 | 
					        raise SpeedtestCLIError('--csv-delimiter must be a single character')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1864,6 +1883,13 @@ def shell():
 | 
				
			||||||
    if debug:
 | 
					    if debug:
 | 
				
			||||||
        DEBUG = True
 | 
					        DEBUG = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if args.bytes:
 | 
				
			||||||
 | 
					        units = 'Mbyte'
 | 
				
			||||||
 | 
					    elif args.units:
 | 
				
			||||||
 | 
					        units = args.units
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        units = 'Mbit'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if args.simple or args.csv or args.json:
 | 
					    if args.simple or args.csv or args.json:
 | 
				
			||||||
        quiet = True
 | 
					        quiet = True
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
| 
						 | 
					@ -1951,9 +1977,9 @@ def shell():
 | 
				
			||||||
            callback=callback,
 | 
					            callback=callback,
 | 
				
			||||||
            threads=(None, 1)[args.single]
 | 
					            threads=(None, 1)[args.single]
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        printer('Download: %0.2f M%s/s' %
 | 
					        printer('Download: %0.2f %s/s' %
 | 
				
			||||||
                ((results.download / 1000.0 / 1000.0) / args.units[1],
 | 
					                (results.download / SIZEMAP[units],
 | 
				
			||||||
                 args.units[0]),
 | 
					                 units),
 | 
				
			||||||
                quiet)
 | 
					                quiet)
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        printer('Skipping download test', quiet)
 | 
					        printer('Skipping download test', quiet)
 | 
				
			||||||
| 
						 | 
					@ -1966,9 +1992,9 @@ def shell():
 | 
				
			||||||
            pre_allocate=args.pre_allocate,
 | 
					            pre_allocate=args.pre_allocate,
 | 
				
			||||||
            threads=(None, 1)[args.single]
 | 
					            threads=(None, 1)[args.single]
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        printer('Upload: %0.2f M%s/s' %
 | 
					        printer('Upload: %0.2f %s/s' %
 | 
				
			||||||
                ((results.upload / 1000.0 / 1000.0) / args.units[1],
 | 
					                (results.upload / SIZEMAP[units],
 | 
				
			||||||
                 args.units[0]),
 | 
					                 units),
 | 
				
			||||||
                quiet)
 | 
					                quiet)
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        printer('Skipping upload test', quiet)
 | 
					        printer('Skipping upload test', quiet)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue