56 lines
1.1 KiB
Python
56 lines
1.1 KiB
Python
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
|