Source code for adam.testing.fake_lidar
import os
import logging
[docs]
class FakeSFTP:
"""
A fake SFTP client for testing purposes. It simulates the behavior of an SFTP client by storing files in the current directory.
"""
[docs]
def __init__(self):
self.wd = os.path.dirname(__file__)
logging.info(f"Working directory for fake SFTP: {self.wd}")
scan_params_path = os.path.join(self.wd, "C:/Lidar/System/Scan parameters/")
dynscan_path = os.path.join(self.wd, "C:/Users/End User/DynScan/")
os.makedirs(scan_params_path, exist_ok=True)
os.makedirs(dynscan_path, exist_ok=True)
self.files = []
def listdir(self, path): return os.listdir(os.path.join(self.wd, path))
def get(self, remote, local):
remote_path = os.path.join(self.wd, remote)
with open(remote_path, "rb") as f:
data = f.read()
with open(local, "wb") as f:
f.write(data)
def put(self, local, remote):
logging.info(f"Putting file {local} to {remote} in fake SFTP at {self.wd}.")
if remote.startswith("/"):
remote = remote[1:]
remote_path = os.path.join(self.wd, remote)
with open(remote_path, "wb") as f:
f.write(open(local, "rb").read())
self.files.append(remote_path)
def close(self):
for file in self.files:
os.remove(file)
logging.info("Removed files from fake SFTP.")
os.removedirs(os.path.join(self.wd, "C:/Lidar/System/Scan parameters/"))
logging.info("Removed scan parameters directory from fake SFTP.")
os.removedirs(os.path.join(self.wd, "C:/Users/End User/DynScan/"))
def __enter__(self): return self
def __exit__(self, exc_type, exc_val, exc_tb): self.close()
[docs]
class FakeSSHClient:
"""
A fake SSH client for testing purposes. It simulates the behavior of an SSH client by providing a context manager that returns a FakeSFTP instance.
"""
[docs]
def __init__(self):
self.sftp = FakeSFTP()
def set_missing_host_key_policy(self, policy): pass
def connect(self, ip_addr, username, password): print(f"Connected to {ip_addr} with username {username}")
def open_sftp(self): return self.sftp
def close(self): self.sftp.close()
def __enter__(self): return self
def __exit__(self, exc_type, exc_val, exc_tb): self.close()