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
							 |