blob: 55a26fa0d2bf9d479b3603442951daa2cc6abbbd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#!/bin/bash
. $(dirname $0)/../../include.rc
. $(dirname $0)/../../volume.rc
. $(dirname $0)/../../nfs.rc
function quota_list_field () {
local QUOTA_PATH=$1
local FIELD=$2
$CLI volume quota $V0 list $QUOTA_PATH | grep $QUOTA_PATH\
| awk '{print $FIELD}'
}
function quota_object_list_field () {
local QUOTA_PATH=$1
local FIELD=$2
$CLI volume quota $V0 list-objects $QUOTA_PATH | grep $QUOTA_PATH\
| awk '{print $FIELD}'
}
cleanup;
QDD=$(dirname $0)/quota
# compile the test write program and run it
build_tester $(dirname $0)/../../basic/quota.c -o $QDD
TESTS_EXPECTED_IN_LOOP=9
TEST glusterd
TEST pidof glusterd
# --------------------------------------------------
# Create, start and mount a volume with single brick
# --------------------------------------------------
TEST $CLI volume create $V0 $H0:$B0/{V0}
EXPECT "$V0" volinfo_field $V0 'Volume Name'
EXPECT 'Created' volinfo_field $V0 'Status'
TEST $CLI volume start $V0
EXPECT 'Started' volinfo_field $V0 'Status'
TEST $GFS -s $H0 --volfile-id $V0 $M0
TEST mkdir -p $M0/test_dir
#--------------------------------------------------------
# Enable quota of the volume and set hard and soft timeout
#------------------------------------------------------
TEST $CLI volume quota $V0 enable
EXPECT 'on' volinfo_field $V0 'features.quota'
TEST $CLI volume quota $V0 soft-timeout 0
EXPECT '0' volinfo_field $V0 'features.soft-timeout'
TEST $CLI volume quota $V0 hard-timeout 0
EXPECT '0' volinfo_field $V0 'features.hard-timeout'
#-------------------------------------------------------
# Set and remove quota limits on the directory and
# verify if the limits are being reflected properly
#------------------------------------------------------
TEST $CLI volume quota $V0 limit-usage /test_dir 100MB
EXPECT "100.0MB" quota_list_field "/test_dir" 2
TEST $CLI volume quota $V0 limit-objects /test_dir 100
EXPECT "100" quota_object_list_field "/test_dir" 2
TEST $CLI volume quota $V0 remove /test_dir
EXPECT "" quota_list_field "/test_dir" 2
# Need to verify this once
#TEST $CLI volume quota $V0 remove-objects /test_dir
#EXPECT "" quota_object_list_field "/test_dir" 2
# Set back the limits
TEST $CLI volume quota $V0 limit-usage /test_dir 10MB
EXPECT "10.0MB" quota_list_field "/test_dir" 2
TEST $CLI volume quota $V0 limit-objects /test_dir 10
EXPECT "10" quota_object_list_field "/test_dir" 2
#-----------------------------------------------------
# Check the quota enforcement mechanism for usage
#-----------------------------------------------------
# try creating a 8MB file and it should fail
TEST $QDD $M0/test_dir/test1.txt 256 32
EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "8.0MB" quota_list_field "/test_dir" 2
TEST rm -f $M0/test_dir/test1.txt
EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0Bytes" quota_list_field "/test_dir" 2
# try creating a 15MB file and it should succeed
TEST ! $QDD $M0/test_dir/test2.txt 256 60
TEST rm -f $M0/test_dir/test2.txt
#------------------------------------------------------
# Check the quota enforcement mechanism for object count
#-------------------------------------------------------
# Try creating 9 files and it should succeed as object limit
# is set to 10, since directory where limit is set is accounted
# as well.
for i in {1..9}; do
TEST_IN_LOOP touch $M0/test_dir/test$i.txt
done
EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "10" quota_object_list_field "/test_dir" 4
# Check available limit
EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0" quota_object_list_field "/test_dir" 5
# Check if hard-limit exceeded
EXPECT "Yes" quota_object_list_field "/test_dir" 7
# Check if soft-limit exceeded
EXPECT "Yes" quota_object_list_field "/test_dir" 6
# Creation of 11th file should throw out an error
TEST ! touch $M0/test_dir/test11.txt
TEST rm -rf $M0/test_dir/test*
EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0" quota_object_list_field "/test_dir" 4
TEST $CLI volume quota $V0 remove-objects /test_dir
TEST $CLI volume stop $V0
EXPECT "1" get_aux
TEST $CLI volume delete $V0
rm -f $QDD
cleanup;
|