def main_setup_fixture(request, parser_of_client_password, dir_on_server_creation, dir_on_serv_permis_change, session_creation, dir_on_client_creation, etc_exports_on_serv_clean, perm_for_export_creation, file_perm_for_export_creation, file_perm_export_copy, update_etc_exports, mount_dir): """Manage the order of setup fixtures.""" log.info("I am in main_setup_fixture") def main_teardown_finalizer(): """Clean the environment which was created.""" log.info("I am in main_teardown_finalizer") ServerCmdExecution().run_cmd("sudo rm -rf {}".format(global_path)) log.info("/home/polina/dirForTest/ is removed on server") stdin, stdout, stderr = \ session_creation.exec_command('echo {} | sudo -S rm -rf' ' /home/$USER/dirForMount/'. format(parser_of_client_password)) log.info("{}".format(stderr.read())) log.info("/home/$USER/dirForMount/ is removed on client") log.info("client {}".format(session_creation)) def unmount_dir(): """Unmount a directory on a client.""" log.info("I am in unmount_dir") stdin, stdout, stderr = \ session_creation.exec_command("echo {} | sudo -S umount" " /home/$USER/dirForMount/". format(parser_of_client_password)) log.info("{}".format(stderr.read())) request.addfinalizer(main_teardown_finalizer) request.addfinalizer(unmount_dir) return 0
def perm_for_export_creation(request, parser_of_client_ip): """Create a variable with permissions on import on a server.""" dir_for_export_name = global_path log.info("I am in perm_for_export_creation") perm_for_export = "".\ join([dir_for_export_name, " ", parser_of_client_ip, request.param]) var = request.param return perm_for_export, var
def unmount_dir(): """Unmount a directory on a client.""" log.info("I am in unmount_dir") stdin, stdout, stderr = \ session_creation.exec_command("echo {} | sudo -S umount" " /home/$USER/dirForMount/". format(parser_of_client_password)) log.info("{}".format(stderr.read()))
def mount_dir(session_creation, parser_of_client_password, parser_of_server_ip): """Mount of a directory on a client.""" log.info("I am in mount_dir") session_creation.exec_command("echo {} | sudo -S mount {}:{} " "/home/$USER/dirForMount/".format( parser_of_client_password, parser_of_server_ip, global_path)) sleep(1)
def session_creation(parser_of_client_ip, parser_of_client_port, parser_of_client_name, parser_of_client_password): """Create a session with a client.""" log.info("I am in session_creation") client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname=parser_of_client_ip, port=int(parser_of_client_port), username=parser_of_client_name, password=parser_of_client_password) return client
def main_teardown_finalizer(): """Clean the environment which was created.""" log.info("I am in main_teardown_finalizer") ServerCmdExecution().run_cmd("sudo rm -rf {}".format(global_path)) log.info("/home/polina/dirForTest/ is removed on server") stdin, stdout, stderr = \ session_creation.exec_command('echo {} | sudo -S rm -rf' ' /home/$USER/dirForMount/'. format(parser_of_client_password)) log.info("{}".format(stderr.read())) log.info("/home/$USER/dirForMount/ is removed on client") log.info("client {}".format(session_creation))
def test_file_creation(parser_of_client_ip, parser_of_client_port, parser_of_client_name, parser_of_client_password, parser_of_server_ip, main_setup_fixture, perm_for_export_creation, session_creation): """Test function: creation of a file.""" log.info("I am in a test_file_creation: file creation") log.info("Here is what now is in /etc/exports {}".format( perm_for_export_creation[0])) stdin, stdout, stderr = session_creation.\ exec_command("echo {} | sudo -S touch /home/$USER" "/dirForMount/cinema".format(parser_of_client_password)) log.info("{}".format(stderr.read())) log.info("permForExportCreation[1] in test_file_creation: {}".format( perm_for_export_creation[1])) if "(ro)" == perm_for_export_creation[1]: log.info("exit status of creation a file with RO: {}".format( stdout.channel.recv_exit_status())) assert stdout.channel.recv_exit_status() == 1 else: log.info("exit status of creation a file with RW: {}".format( stdout.channel.recv_exit_status())) assert stdout.channel.recv_exit_status() == 0
def etc_exports_on_serv_clean(): """Clean /etc/exports on a server.""" log.info("I am in etc_exports_on_serv_clean") return ServerCmdExecution().run_cmd("sudo cp /dev/null /etc/exports")
def dir_on_client_creation(session_creation): """Create a directory on a client.""" log.info("I am in dir_on_client_creation") log.info("client {}".format(session_creation)) session_creation.exec_command('mkdir -p /home/$USER/dirForMount/')
def dir_on_serv_permis_change(): """Change permissions of a directory on a server.""" log.info("I am in dir_on_serv_permis_change") ServerCmdExecution().run_cmd("sudo chmod ugo+rwx {}".format(global_path))
def dir_on_server_creation(): """Create a directory on a server.""" log.info("I am in dir_on_server_creation") ServerCmdExecution().run_cmd("sudo mkdir -p {}".format(global_path))
def update_etc_exports(): """Update of a NFS-export table.""" log.info("I am in update_etc_exports") ServerCmdExecution().run_cmd("sudo exportfs -a")
def file_perm_export_copy(): """Copy permissions on import to /etc/exports.""" log.info("I am in file_perm_export_copy") ServerCmdExecution().run_cmd("sudo cp {} /etc/exports".format( os.path.join(global_path, "fileWithPermForExport")))
def file_perm_for_export_creation(perm_for_export_creation): """Create a file with permissions on import.""" log.info("I am in file_perm_for_export_creation") with open(os.path.join(global_path, "fileWithPermForExport"), "w") as f: f.write(perm_for_export_creation[0]) return f