2023-01-10 20:18:28 +01:00
|
|
|
import os
|
2023-01-10 17:24:35 +01:00
|
|
|
from pathlib import Path
|
|
|
|
|
2023-01-10 20:18:28 +01:00
|
|
|
from exec_capture import execute_capture
|
|
|
|
from exec_print_capture import execute_print_capture
|
|
|
|
from exec_print_transfer import execute_print_transfer_chunks
|
2023-01-10 19:12:12 +01:00
|
|
|
from rsync_inform import rsync_inform
|
2023-01-10 15:42:33 +01:00
|
|
|
|
|
|
|
|
|
|
|
def test():
|
2023-01-10 20:18:28 +01:00
|
|
|
# test1()
|
|
|
|
# test2()
|
|
|
|
# test3()
|
|
|
|
# test4()
|
|
|
|
test5()
|
2023-01-10 19:12:12 +01:00
|
|
|
|
|
|
|
|
|
|
|
def test1():
|
2023-01-10 20:18:28 +01:00
|
|
|
print("TEST 1")
|
2023-01-10 19:12:12 +01:00
|
|
|
returncode, out, err = execute_capture(['ls', '-la'])
|
|
|
|
print(f'stdout:\n{out}\nstderr:\n{err}')
|
|
|
|
print()
|
|
|
|
returncode, out, err = execute_capture(['ls', '/foo/bar'])
|
|
|
|
print(f'stdout:\n{out}\nstderr:\n{err}')
|
|
|
|
|
2023-01-10 17:24:35 +01:00
|
|
|
|
2023-01-10 19:12:12 +01:00
|
|
|
def test2():
|
2023-01-10 20:18:28 +01:00
|
|
|
print("TEST 2")
|
2023-01-10 15:42:33 +01:00
|
|
|
returncode, out, err = execute_print_capture(['ls', '-la'])
|
|
|
|
print()
|
|
|
|
returncode, out, err = execute_print_capture(['ls', '/foo/bar'])
|
|
|
|
|
2023-01-10 19:12:12 +01:00
|
|
|
|
|
|
|
def test3():
|
2023-01-10 20:18:28 +01:00
|
|
|
print("TEST 3-1")
|
|
|
|
execute_print_capture(['rm', '-rf', 'test/3-1', 'test/3-2', 'test/3-3'])
|
|
|
|
|
|
|
|
returncode = execute_print_transfer_chunks(['ls', '-la'], Path('test/3-1'))
|
|
|
|
print("TEST 3-2")
|
|
|
|
returncode = execute_print_transfer_chunks(['ls', '/foo/bar'], Path('test/3-2'))
|
|
|
|
print("TEST 3-3")
|
|
|
|
returncode = execute_print_transfer_chunks(['cat', 'rsync_inform.py'], Path('test/3-3'),
|
2023-01-10 19:12:12 +01:00
|
|
|
chunk_size=1024)
|
|
|
|
|
|
|
|
|
|
|
|
def test4():
|
2023-01-10 20:18:28 +01:00
|
|
|
print("TEST 4")
|
|
|
|
execute_print_capture(['rm', '-rf', 'test/4-rsync-error', 'test/4-ssh-error', 'test/4-UNIX-socket'])
|
|
|
|
|
2023-01-10 19:12:12 +01:00
|
|
|
rsync_inform(
|
2023-01-10 20:18:28 +01:00
|
|
|
['ls', 'test/4-rsync-error'], # rsync src to dst
|
|
|
|
['ls', 'test/4-ssh-error'], # ssh target-pc 'echo "OK" | nc -U "/path/to/unix-socket"'
|
|
|
|
Path('test/4-UNIX-socket')
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
def test5():
|
|
|
|
print("TEST 5")
|
|
|
|
source_file = Path('rsync_inform.py') # A python script file with some content to copy ;)
|
|
|
|
|
|
|
|
chunk_file = Path('test/5')
|
|
|
|
remote_target_file = Path(f'test/5-copy-of-{source_file}')
|
|
|
|
ssh_error_file = Path('test/5-ssh-error-while-informing-remote-pc')
|
|
|
|
user_input_file = Path('test/5-user-input')
|
|
|
|
concat_script = Path('test/5-concat')
|
|
|
|
execute_print_capture(['rm', '-rf',
|
|
|
|
str(chunk_file),
|
|
|
|
str(remote_target_file),
|
|
|
|
str(ssh_error_file),
|
|
|
|
str(user_input_file),
|
|
|
|
str(concat_script)])
|
|
|
|
|
|
|
|
concat_script.write_text(f'#!/usr/bin/bash\n'
|
|
|
|
f'echo "rsync {chunk_file} {remote_target_file} command output ..."\n'
|
|
|
|
f'cat "$1" >> "$2"')
|
|
|
|
os.chmod(concat_script, 0o0755)
|
|
|
|
|
|
|
|
rsync_cmd = [str(concat_script), str(chunk_file), str(remote_target_file)]
|
|
|
|
inform_cmd = ['ls', str(ssh_error_file)]
|
|
|
|
|
|
|
|
# TODO:
|
|
|
|
# When running this test:
|
|
|
|
# The intentionally generated error, can be fixed by executing
|
|
|
|
# f'touch str(ssh_error_file)'
|
|
|
|
|
|
|
|
execute_print_transfer_chunks(
|
|
|
|
command=['cat', str(source_file)],
|
|
|
|
chunk_file=chunk_file,
|
|
|
|
chunk_transfer_fun=rsync_inform,
|
|
|
|
chunk_transfer_args=(rsync_cmd, inform_cmd, user_input_file),
|
|
|
|
chunk_size=512,
|
2023-01-10 19:12:12 +01:00
|
|
|
)
|
2023-01-10 17:24:35 +01:00
|
|
|
|
2023-01-10 15:42:33 +01:00
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
test()
|