]> git.proxmox.com Git - ceph.git/blob - ceph/qa/workunits/fs/maxentries/maxentries.sh
import quincy beta 17.1.0
[ceph.git] / ceph / qa / workunits / fs / maxentries / maxentries.sh
1 #!/usr/bin/env bash
2
3 set -ex
4
5 function expect_false()
6 {
7 set -x
8 if "$@"; then return 1; else return 0; fi
9 }
10
11 function make_files()
12 {
13 set +x
14 temp_dir=`mktemp -d mkfile_test_XXXXXX`
15 for i in $(seq 1 $1)
16 do
17 echo -n | dd of="${temp_dir}/file_$i" conv=fsync || return 1
18 sync "${temp_dir}" || return 1
19 done
20 set -x
21 return 0
22 }
23
24 function make_dirs()
25 {
26 set +x
27 temp_dir=`mktemp -d mkdir_test_XXXXXX`
28 for i in $(seq 1 $1)
29 do
30 mkdir -p ${temp_dir}/dir_${i} || return 1
31 sync "${temp_dir}" || return 1
32 done
33 set -x
34 return 0
35 }
36
37 function make_nodes()
38 {
39 set +x
40 temp_dir=`mktemp -d mknod_test_XXXXXX`
41 for i in $(seq 1 $1)
42 do
43 mknod ${temp_dir}/fifo_${i} p || return 1
44 sync "${temp_dir}" || return 1
45 done
46 set -x
47 return 0
48 }
49
50 function rename_files()
51 {
52 set +x
53 temp_dir=`mktemp -d rename_test_XXXXXX`
54 mkdir -p ${temp_dir}/rename
55
56 for i in $(seq 1 $1)
57 do
58 touch ${temp_dir}/file_${i} || return 1
59
60 mv ${temp_dir}/file_${i} ${temp_dir}/rename/ || return 1
61 sync "${temp_dir}" || return 1
62 done
63 set -x
64 return 0
65 }
66
67 function make_symlinks()
68 {
69 set +x
70 temp_dir=`mktemp -d symlink_test_XXXXXX`
71 mkdir -p ${temp_dir}/symlink
72
73 touch ${temp_dir}/file
74
75 for i in $(seq 1 $1)
76 do
77 ln -s ../file ${temp_dir}/symlink/sym_${i} || return 1
78 sync "${temp_dir}" || return 1
79 done
80 set -x
81 return 0
82 }
83
84 function make_links()
85 {
86 set +x
87 temp_dir=`mktemp -d link_test_XXXXXX`
88 mkdir -p ${temp_dir}/link
89
90 touch ${temp_dir}/file
91
92 for i in $(seq 1 $1)
93 do
94 ln ${temp_dir}/file ${temp_dir}/link/link_${i} || return 1
95 sync "${temp_dir}" || return 1
96 done
97 set -x
98 return 0
99 }
100
101 function cleanup()
102 {
103 rm -rf *
104 }
105
106 test_dir="max_entries"
107 mkdir -p $test_dir
108 pushd $test_dir
109
110 dir_max_entries=100
111 ceph config set mds mds_dir_max_entries $dir_max_entries
112
113 ok_dir_max_entries=$dir_max_entries
114 fail_dir_max_entries=$((dir_max_entries+1))
115
116 # make files test
117 make_files $ok_dir_max_entries
118 expect_false make_files $fail_dir_max_entries
119
120 # make dirs test
121 make_dirs $ok_dir_max_entries
122 expect_false make_dirs $fail_dir_max_entries
123
124 # make nodes test
125 make_nodes $ok_dir_max_entries
126 expect_false make_nodes $fail_dir_max_entries
127
128 # rename files test
129 rename_files $ok_dir_max_entries
130 expect_false rename_files $fail_dir_max_entries
131
132 # symlink files test
133 make_symlinks $ok_dir_max_entries
134 expect_false make_symlinks $fail_dir_max_entries
135
136 # link files test
137 make_links $ok_dir_max_entries
138 expect_false make_links $fail_dir_max_entries
139
140 # no limit (e.g., default value)
141 dir_max_entries=0
142 ceph config set mds mds_dir_max_entries $dir_max_entries
143
144 make_files 500
145 make_dirs 500
146 make_nodes 500
147 rename_files 500
148 make_symlinks 500
149 make_links 500
150
151 cleanup
152
153 popd # $test_dir
154
155 echo OK