initial commit
This commit is contained in:
commit
3bb55168df
55
conftest.py
Normal file
55
conftest.py
Normal file
@ -0,0 +1,55 @@
|
||||
import subprocess as sp
|
||||
import paramiko
|
||||
import pytest
|
||||
|
||||
from os import getenv
|
||||
|
||||
@pytest.fixture
|
||||
def server():
|
||||
try:
|
||||
s = paramiko.SSHClient()
|
||||
s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
|
||||
s.connect(hostname = getenv("host"),
|
||||
username = getenv("user"),
|
||||
password = getenv("pass"))
|
||||
|
||||
print("con suc")
|
||||
|
||||
_, _, _ = s.exec_command("iperf3 -s")
|
||||
|
||||
yield True
|
||||
|
||||
except paramiko.AuthenticationException:
|
||||
print("aut fal")
|
||||
yield False
|
||||
except paramiko.SSHException as e:
|
||||
print(f"err {e}")
|
||||
yield False
|
||||
finally:
|
||||
s.close()
|
||||
|
||||
@pytest.fixture
|
||||
def client(server):
|
||||
assert server
|
||||
|
||||
res = ""
|
||||
|
||||
p = sp.Popen(
|
||||
["iperf3", "--forceflush", "-i", "1", "-c", getenv("host")],
|
||||
stdout = sp.PIPE,
|
||||
stderr = sp.PIPE)
|
||||
|
||||
while True:
|
||||
l = p.stdout.readline()
|
||||
|
||||
if l:
|
||||
res += l.decode("UTF-8")
|
||||
|
||||
if p.poll() != None:
|
||||
break
|
||||
|
||||
if p.stderr.read():
|
||||
return False
|
||||
else:
|
||||
return res
|
||||
12
iperf_test.py
Normal file
12
iperf_test.py
Normal file
@ -0,0 +1,12 @@
|
||||
from parser import get_iperf3_stats
|
||||
|
||||
class TestSuite():
|
||||
def test_conn_speed(self, client):
|
||||
assert client != False
|
||||
|
||||
s = get_iperf3_stats(client)
|
||||
|
||||
assert len(s) == 10
|
||||
|
||||
for i in s:
|
||||
assert i['bitrate'] >= 80_000_000 # 80+ Mbit/s
|
||||
31
parser.py
Normal file
31
parser.py
Normal file
@ -0,0 +1,31 @@
|
||||
def get_iperf3_stats(s):
|
||||
pool = s.split("\n")
|
||||
|
||||
stats = []
|
||||
|
||||
interpret_stats = False
|
||||
|
||||
for i in pool:
|
||||
c = i.split()
|
||||
|
||||
if 'ID]' in c:
|
||||
interpret_stats = True
|
||||
continue
|
||||
|
||||
if '-' in c:
|
||||
interpret_stats = False
|
||||
break
|
||||
|
||||
if interpret_stats:
|
||||
if len(c) < 8:
|
||||
continue
|
||||
|
||||
stat = {}
|
||||
|
||||
stat['int_start'], stat['int_end'] = list(map(float, c[2].split('-')))
|
||||
stat['transfer'] = float(c[4]) * 1024 ** ['B', 'K', 'M', 'G'].index(c[5][0])
|
||||
stat['bitrate'] = float(c[6]) * 1024 ** ['b', 'K', 'M', 'G'].index(c[7][0])
|
||||
|
||||
stats.append(stat)
|
||||
|
||||
return stats
|
||||
Loading…
x
Reference in New Issue
Block a user