summaryrefslogtreecommitdiffstats
path: root/TestUnits/xlators/cluster/afr/basic/testcases.py
diff options
context:
space:
mode:
authorShwetha-H-Panduranga <shwetha@gluster.com>2012-01-04 18:56:45 +0530
committerShwetha-H-Panduranga <shwetha@gluster.com>2012-01-20 14:29:46 +0530
commit97fe4956f2b2b6b0177b306c2319adf913ac887c (patch)
treea52adee6b70b345b096a786fb6b9f45f42011f7f /TestUnits/xlators/cluster/afr/basic/testcases.py
parentce6211d93a420a1251978c5551cae25c87a2d4aa (diff)
Adding afr basic testcases(fileops, dirops tests)
Change-Id: I2705e70dccf0c96206d8f73e84eaaca760ffe753 Signed-off-by: Shwetha-H-Panduranga <shwetha@gluster.com>
Diffstat (limited to 'TestUnits/xlators/cluster/afr/basic/testcases.py')
-rw-r--r--TestUnits/xlators/cluster/afr/basic/testcases.py897
1 files changed, 897 insertions, 0 deletions
diff --git a/TestUnits/xlators/cluster/afr/basic/testcases.py b/TestUnits/xlators/cluster/afr/basic/testcases.py
new file mode 100644
index 0000000..e2b3f95
--- /dev/null
+++ b/TestUnits/xlators/cluster/afr/basic/testcases.py
@@ -0,0 +1,897 @@
+"""testcases for afr/basic
+"""
+
+import sys
+import time
+import os
+import hostutils
+import managerutils
+import glusterutils
+import atfutils
+import clientutils
+import serverutils
+import parser
+import validate
+
+write_op = ">"
+append_op = ">>"
+mounts = ['mount1']
+commands = {
+ 'ls' : 'ls',
+ 'stat' : 'stat',
+ 'echo' : 'echo',
+ 'cat' : 'cat',
+ 'touch' : 'touch',
+ 'rename': 'mv',
+ 'unlink': 'rm',
+ 'mkdir' : 'mkdir -p',
+ 'hardlink' : 'ln',
+ 'symlink' : 'ln -s',
+ 'setattr' : 'setfattr',
+ 'getattr' : 'getfattr',
+ 'truncate' : 'truncate',
+ 'unlink_force' : 'rm -f',
+ 'unlink_dir_force' : 'rm -rf'
+ }
+
+def reset_testenv():
+ return_status = clientutils.umountall()
+ if return_status:
+ return return_status
+ glusterutils.volume_stop("server1", force=True)
+ glusterutils.volume_delete("server1")
+ glusterutils.glusterd_stop_allservers()
+ glusterutils.glusterd_remove_dir_allservers()
+ glusterutils.glusterd_remove_logs_allservers()
+ return 0
+
+def setup_testenv():
+ """
+ """
+ return_status = glusterutils.glusterd_start_allservers(force=True)
+ if return_status:
+ return return_status
+
+ return_status = glusterutils.peer_probe("server1")
+ if return_status:
+ return return_status
+
+ return_status = glusterutils.create_brick_allservers()
+ if return_status:
+ return return_status
+
+ return_status = glusterutils.volume_create("server1")
+ if return_status:
+ return return_status
+
+ glusterutils.volume_set("server1", key="diagnostics.client-log-level", value="DEBUG")
+
+ return_status = glusterutils.volume_start("server1")
+ if return_status:
+ return return_status
+
+ return_status = clientutils.mountall()
+ if return_status:
+ return return_status
+
+ return 0
+
+def file_write():
+ """
+ Description: Test 'write' operation
+ """
+ return_status = 1
+ data = "Hello World. This is testing write file operation"
+ filename = "write.txt"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['echo'], data, write_op, filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['ls'], filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = filename
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def file_lookup():
+ """
+ Description: Test 'lookup' operation
+ """
+ return_status = 1
+ filename = "stat.txt"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['touch'], filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "regular empty file"
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def file_read():
+ """
+ Description: Test 'read' operation
+ """
+ return_status = 1
+ data = "Hello World. This is testing read file operation"
+ filename = "read.txt"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['echo'], data, write_op, filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['cat'], filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = data
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+ return 0
+
+def file_append():
+ """
+ Description: Test 'append' operation
+ """
+ return_status = 1
+ data1 = "Hello World. This is testing append file operation."
+ data2 = "Appending data to file."
+ filename = "append.txt"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['echo'], data1, write_op, filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['cat'], filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = data1
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['echo'], data2, append_op, filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['cat'], filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = str([data1 + "\n", data2 + "\n"])
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def file_truncate():
+ """
+ """
+ return_status = 1
+ data = "Hello World. This is testing truncate file operation"
+ filename = "truncate.txt"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['echo'], data, write_op, filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['cat'], filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = data
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['truncate'], "-s 0", filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def file_hardlink():
+ """
+ """
+ return_status = 1
+ filename1 = "testlink.txt"
+ filename2 = "hardlink_to_testlink.txt"
+ data = "Hello World. This is testing file hard link operation"
+ bricks = ['brick1', 'brick2']
+
+ # Create a file
+ command = ' '.join([commands['echo'], data, write_op, filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ # Check whether the file has been created on mount, bricks
+ command = ' '.join([commands['cat'], filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = data
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ # Create Hardlink
+ command = ' '.join([commands['hardlink'], filename1, filename2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ # Check whether the hardlink has been created on mount, bricks
+ # Check the Link Count
+ # Cat the data of new hard_link
+ for filename in [filename1, filename2]:
+ command = ' '.join([commands['stat'], filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "Links: 2"
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['cat'], filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = data
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def file_symlink():
+ """
+ """
+ return_status = 1
+ filename1 = "testsymlink.txt"
+ filename2 = "symlink_to_testsymlink.txt"
+ data = "Hello World. This is testing file sym link operation"
+ bricks = ['brick1', 'brick2']
+
+ # Create a file
+ command = ' '.join([commands['echo'], data, write_op, filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ # Check whether the file has been created on mount, bricks
+ command = ' '.join([commands['cat'], filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = data
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ # Create Symlink
+ command = ' '.join([commands['symlink'], filename1, filename2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ # Check whether the symlink has been created on mount, bricks
+ # Check the Sym Link in stat structure
+ # Cat the data of sym_link and output's the original file data
+ command = ' '.join([commands['stat'], filename2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "symbolic link"
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['cat'], filename2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = data
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def file_set_get_fattr():
+ """
+ """
+ return_status = 1
+ name = "trusted.name"
+ value = "set_get_attr_test"
+ data = "Hello World. This is testing set_get_attr file operation"
+ filename = "set_get_fattr.txt"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['echo'], data, write_op, filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['setattr'],"-n", name, "-v", value, filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['getattr'], "-n", name, filename])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = value
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def file_rename():
+ """
+ """
+ return_status = 1
+ data = "Hello World. This is testing rename file operation"
+ filename1 = "rename_me.txt"
+ filename2 = "rename_to.txt"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['echo'], data, write_op, filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['ls'], filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = filename1
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['rename'], filename1, filename2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['ls'], filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "No such file or directory"
+ return_status = atfutils.validate_output(output, 1, expected_output, stream="stderr")
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 1, expected_output, stream="stderr")
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['ls'], filename2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = filename2
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['cat'], filename2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = data
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def file_unlink():
+ """
+ """
+ return_status = 1
+ data = "Hello World. This is testing unlink file operation"
+ filename1 = "unlink_me.txt"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['echo'], data, write_op, filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['ls'], filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = filename1
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['unlink_force'], filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['ls'], filename1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "No such file or directory"
+ return_status = atfutils.validate_output(output, 1, expected_output, stream="stderr")
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 1, expected_output, stream="stderr")
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def dir_mkdir():
+ """
+ """
+ return_status = 1
+ dirname = "dir_mkdir"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['mkdir'], dirname])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = dirname
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def dir_lookup():
+ """
+ """
+ return_status = 1
+ dirname = "dir_lookup"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['mkdir'], dirname])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "directory"
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def dir_read():
+ """
+ """
+ return_status = 1
+ dirname = "dir_read"
+ bricks = ['brick1', 'brick2']
+ subdirlist = []
+
+ command = ' '.join([commands['mkdir'], dirname])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ subdirs = os.path.join(dirname, "{1..4}")
+ command = ' '.join([commands['mkdir'], subdirs])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ for x in range(1,5):
+ subdirlist.append(str(x) + "\n")
+
+ command = ' '.join([commands['ls'], dirname])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = str(subdirlist)
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def dir_hardlink():
+ """
+ """
+ return_status = 1
+ dirname1 = "dir_hlink"
+ dirname2 = "hardlink_to_dir_hlink"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['mkdir'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = dirname1
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['hardlink'], dirname1, dirname2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "hard link not allowed for directory"
+ return_status = atfutils.validate_output(output, 1, expected_output, stream="stderr")
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "No such file or directory"
+ return_status = atfutils.validate_output(output, 1, expected_output, stream="stderr")
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 1, expected_output, stream="stderr")
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def dir_symlink():
+ """
+ """
+ return_status = 1
+ dirname1 = "dir_symlink"
+ dirname2 = "symlink_to_dir_symlink"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['mkdir'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = dirname1
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['symlink'], dirname1, dirname2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "symbolic link"
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def dir_set_get_fattr():
+ """
+ """
+ return_status = 1
+ name = "trusted.name"
+ value = "set_get_attr_test"
+ dirname = "set_get_attr"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['mkdir'], dirname])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = dirname
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['setattr'], "-n", name, "-v", value, dirname])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['getattr'], "-n", name, dirname])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = value
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def dir_rename():
+ """
+ """
+ return_status = 1
+ dirname1 = "dir_rename_me"
+ dirname2 = "dir_rename_to"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['mkdir'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = dirname1
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['rename'], dirname1, dirname2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "No such file or directory"
+ if atfutils.validate_output(output, 1, expected_output, stream="stderr"):
+ return return_status
+ if validate.validate_on_bricks(bricks, command, 1, expected_output, stream="stderr"):
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname2])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = dirname2
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0
+
+def dir_unlink():
+ """
+ """
+ return_status = 1
+ dirname1 = "dir_unlink_me"
+ bricks = ['brick1', 'brick2']
+
+ command = ' '.join([commands['mkdir'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = dirname1
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+ return_status = validate.validate_on_bricks(bricks, command, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['unlink_dir_force'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = ""
+ return_status = atfutils.validate_output(output, 0, expected_output)
+ if return_status is not 0:
+ return return_status
+
+ command = ' '.join([commands['stat'], dirname1])
+ output = clientutils.execute_on_mount("mount1", command)
+ expected_output = "No such file or directory"
+ if atfutils.validate_output(output, 1, expected_output, stream="stderr"):
+ return return_status
+ if validate.validate_on_bricks(bricks, command, 1, expected_output, stream="stderr"):
+ return return_status
+
+ return_status = validate.validate_md5sums(mounts, bricks)
+ if return_status is not 0:
+ return return_status
+
+ return 0