glusterfs
233 строки · 8.7 Кб
1#!/bin/bash
2
3. $(dirname $0)/../include.rc
4. $(dirname $0)/../volume.rc
5. $(dirname $0)/../geo-rep.rc
6. $(dirname $0)/../env.rc
7
8SCRIPT_TIMEOUT=500
9
10AREQUAL_PATH=$(dirname $0)/../utils
11test "`uname -s`" != "Linux" && {
12CFLAGS="$CFLAGS -lintl";
13}
14build_tester $AREQUAL_PATH/arequal-checksum.c $CFLAGS
15
16### Basic Tests with Distribute Replicate volumes
17
18##Cleanup and start glusterd
19cleanup;
20TEST glusterd;
21TEST pidof glusterd
22
23
24##Variables
25GEOREP_CLI="$CLI volume geo-replication"
26primary=$GMV0
27secondary=${H0}::${GSV0}
28num_active=2
29num_passive=4
30primary_mnt=$M0
31secondary_mnt=$M1
32
33############################################################
34#SETUP VOLUMES AND GEO-REPLICATION
35############################################################
36
37##create_and_start_primary_volume
38TEST $CLI volume create $GMV0 replica 3 arbiter 1 $H0:$B0/${GMV0}{1,2,3,4,5,6};
39TEST $CLI volume start $GMV0
40
41##create_and_start_secondary_volume
42TEST $CLI volume create $GSV0 replica 3 arbiter 1 $H0:$B0/${GSV0}{1,2,3,4,5,6};
43TEST $CLI volume start $GSV0
44TEST $CLI volume set $GSV0 performance.stat-prefetch off
45TEST $CLI volume set $GSV0 performance.quick-read off
46TEST $CLI volume set $GSV0 performance.readdir-ahead off
47TEST $CLI volume set $GSV0 performance.read-ahead off
48
49##Create, start and mount meta_volume
50TEST $CLI volume create $META_VOL replica 3 $H0:$B0/${META_VOL}{1,2,3};
51TEST $CLI volume start $META_VOL
52TEST mkdir -p $META_MNT
53TEST glusterfs -s $H0 --volfile-id $META_VOL $META_MNT
54
55##Mount primary
56TEST glusterfs -s $H0 --volfile-id $GMV0 $M0
57
58##Mount secondary
59TEST glusterfs -s $H0 --volfile-id $GSV0 $M1
60
61############################################################
62#BASIC GEO-REPLICATION TESTS
63############################################################
64
65#Check Hybrid Crawl
66TEST create_data "hybrid"
67TEST create_georep_session $primary $secondary
68EXPECT_WITHIN $GEO_REP_TIMEOUT 6 check_status_num_rows "Created"
69
70#Config gluster-command-dir
71TEST $GEOREP_CLI $primary $secondary config gluster-command-dir ${GLUSTER_CMD_DIR}
72
73#Config gluster-command-dir
74TEST $GEOREP_CLI $primary $secondary config secondary-gluster-command-dir ${GLUSTER_CMD_DIR}
75
76#Enable_metavolume
77TEST $GEOREP_CLI $primary $secondary config use_meta_volume true
78
79#Set changelog roll-over time to 3 secs
80TEST $CLI volume set $GMV0 changelog.rollover-time 3
81
82#Wait for common secret pem file to be created
83EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_common_secret_file
84
85#Verify the keys are distributed
86EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_keys_distributed
87
88#Verify "features.read-only" Option
89EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_secondary_read_only $GSV0
90
91#Start_georep
92TEST $GEOREP_CLI $primary $secondary start
93
94EXPECT_WITHIN $GEO_REP_TIMEOUT 2 check_status_num_rows "Active"
95EXPECT_WITHIN $GEO_REP_TIMEOUT 4 check_status_num_rows "Passive"
96
97#data_tests "hybrid"
98EXPECT_WITHIN $GEO_REP_TIMEOUT 0 regular_file_ok ${secondary_mnt}/hybrid_f1
99EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${secondary_mnt}/hybrid_d1
100EXPECT_WITHIN $GEO_REP_TIMEOUT 0 rename_file_ok ${secondary_mnt}/hybrid_f3 ${secondary_mnt}/hybrid_f4
101EXPECT_WITHIN $GEO_REP_TIMEOUT 0 rename_dir_ok ${secondary_mnt}/hybrid_d3 ${secondary_mnt}/hybrid_d4
102EXPECT_WITHIN $GEO_REP_TIMEOUT 0 symlink_ok hybrid_f1 ${secondary_mnt}/hybrid_sl1
103EXPECT_WITHIN $GEO_REP_TIMEOUT 0 hardlink_file_ok ${secondary_mnt}/hybrid_f1 ${secondary_mnt}/hybrid_hl1
104EXPECT_WITHIN $GEO_REP_TIMEOUT 1 unlink_ok ${secondary_mnt}/hybrid_f2
105EXPECT_WITHIN $GEO_REP_TIMEOUT 1 unlink_ok ${secondary_mnt}/hybrid_d2
106EXPECT_WITHIN $GEO_REP_TIMEOUT 0 data_ok ${secondary_mnt}/hybrid_f1 "HelloWorld!"
107EXPECT_WITHIN $GEO_REP_TIMEOUT 0 chown_file_ok ${secondary_mnt}/hybrid_chown_f1
108
109#Check History Crawl.
110TEST $GEOREP_CLI $primary $secondary stop
111TEST create_data "history"
112TEST $GEOREP_CLI $primary $secondary start
113EXPECT_WITHIN $GEO_REP_TIMEOUT 2 check_status_num_rows "Active"
114EXPECT_WITHIN $GEO_REP_TIMEOUT 4 check_status_num_rows "Passive"
115
116#data_tests "history"
117EXPECT_WITHIN $GEO_REP_TIMEOUT 0 regular_file_ok ${secondary_mnt}/history_f1
118EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${secondary_mnt}/history_d1
119EXPECT_WITHIN $GEO_REP_TIMEOUT 0 rename_file_ok ${secondary_mnt}/history_f3 ${secondary_mnt}/history_f4
120EXPECT_WITHIN $GEO_REP_TIMEOUT 0 rename_dir_ok ${secondary_mnt}/history_d3 ${secondary_mnt}/history_d4
121EXPECT_WITHIN $GEO_REP_TIMEOUT 0 symlink_ok history_f1 ${secondary_mnt}/history_sl1
122EXPECT_WITHIN $GEO_REP_TIMEOUT 0 hardlink_file_ok ${secondary_mnt}/history_f1 ${secondary_mnt}/history_hl1
123EXPECT_WITHIN $GEO_REP_TIMEOUT 1 unlink_ok ${secondary_mnt}/history_f2
124EXPECT_WITHIN $GEO_REP_TIMEOUT 1 unlink_ok ${secondary_mnt}/history_d2
125EXPECT_WITHIN $GEO_REP_TIMEOUT 0 data_ok ${secondary_mnt}/history_f1 "HelloWorld!"
126EXPECT_WITHIN $GEO_REP_TIMEOUT 0 chown_file_ok ${secondary_mnt}/history_chown_f1
127
128#Check Changelog Crawl.
129EXPECT_WITHIN $GEO_REP_TIMEOUT 2 check_status_num_rows "Changelog Crawl"
130TEST create_data "changelog"
131
132# logrotate test
133logrotate_file=${primary_mnt}/logrotate/lg_test_file
134TEST mkdir -p ${primary_mnt}/logrotate
135logrotate_simulate $logrotate_file 2
136logrotate_simulate $logrotate_file 2
137logrotate_simulate $logrotate_file 2
138logrotate_simulate $logrotate_file 2
139
140# CREATE + RENAME
141create_rename ${primary_mnt}/rename_test_file
142
143# hard-link rename
144hardlink_rename ${primary_mnt}/hardlink_rename_test_file
145
146#SYNC CHECK
147#data_tests "changelog"
148EXPECT_WITHIN $GEO_REP_TIMEOUT 0 regular_file_ok ${secondary_mnt}/changelog_f1
149EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${secondary_mnt}/changelog_d1
150EXPECT_WITHIN $GEO_REP_TIMEOUT 0 rename_file_ok ${secondary_mnt}/changelog_f3 ${secondary_mnt}/changelog_f4
151EXPECT_WITHIN $GEO_REP_TIMEOUT 0 rename_dir_ok ${secondary_mnt}/changelog_d3 ${secondary_mnt}/changelog_d4
152EXPECT_WITHIN $GEO_REP_TIMEOUT 0 symlink_ok changelog_f1 ${secondary_mnt}/changelog_sl1
153EXPECT_WITHIN $GEO_REP_TIMEOUT 0 hardlink_file_ok ${secondary_mnt}/changelog_f1 ${secondary_mnt}/changelog_hl1
154EXPECT_WITHIN $GEO_REP_TIMEOUT 1 unlink_ok ${secondary_mnt}/changelog_f2
155EXPECT_WITHIN $GEO_REP_TIMEOUT 1 unlink_ok ${secondary_mnt}/changelog_d2
156EXPECT_WITHIN $GEO_REP_TIMEOUT 0 data_ok ${secondary_mnt}/changelog_f1 "HelloWorld!"
157EXPECT_WITHIN $GEO_REP_TIMEOUT 0 chown_file_ok ${secondary_mnt}/changelog_chown_f1
158
159#logrotate
160EXPECT_WITHIN $GEO_REP_TIMEOUT 0 directory_ok ${secondary_mnt}/logrotate
161EXPECT_WITHIN $GEO_REP_TIMEOUT "x0" arequal_checksum ${primary_mnt}/logrotate ${secondary_mnt}/logrotate
162
163#CREATE+RENAME
164EXPECT_WITHIN $GEO_REP_TIMEOUT 0 create_rename_ok ${secondary_mnt}/create_rename_test_file
165
166#hardlink rename
167EXPECT_WITHIN $GEO_REP_TIMEOUT 0 hardlink_rename_ok ${secondary_mnt}/hardlink_rename_test_file
168
169#Stop Geo-rep
170TEST $GEOREP_CLI $primary $secondary stop
171
172#Symlink testcase: Rename symlink and create dir with same name
173TEST create_symlink_rename_mkdir_data
174
175#hardlink-rename-unlink usecase. Sonatype Nexus3 Usecase. BUG:1512483
176#TEST create_hardlink_rename_data
177
178#rsnapshot usecase
179TEST create_rsnapshot_data
180
181#Start Geo-rep
182TEST $GEOREP_CLI $primary $secondary start
183
184#Wait for geo-rep to come up
185EXPECT_WITHIN $GEO_REP_TIMEOUT 2 check_status_num_rows "Active"
186EXPECT_WITHIN $GEO_REP_TIMEOUT 4 check_status_num_rows "Passive"
187
188#Check for hardlink rename case. BUG: 1296174
189#It should not create src file again on changelog reprocessing
190EXPECT_WITHIN $GEO_REP_TIMEOUT 0 hardlink_rename_ok ${secondary_mnt}/hardlink_rename_test_file
191
192#Symlink testcase: Rename symlink and create dir with same name
193EXPECT_WITHIN $GEO_REP_TIMEOUT 0 verify_symlink_rename_mkdir_data ${secondary_mnt}/symlink_test1
194
195#hardlink-rename-unlink usecase. Sonatype Nexus3 Usecase. BUG:1512483
196#EXPECT_WITHIN $GEO_REP_TIMEOUT 0 verify_hardlink_rename_data ${secondary_mnt}
197
198#rsnapshot usecase
199EXPECT_WITHIN $GEO_REP_TIMEOUT 0 verify_rsnapshot_data ${secondary_mnt}
200
201#Test rsync-options set BUG:1629561
202TEST gluster volume geo-rep $primary $secondary config rsync-options "--whole-file"
203TEST "echo sampledata > $primary_mnt/rsync_option_test_file"
204
205#rename with existing destination case BUG:1694820
206TEST create_rename_with_existing_destination ${primary_mnt}
207#verify rename with existing destination case BUG:1694820
208EXPECT_WITHIN $GEO_REP_TIMEOUT 0 verify_rename_with_existing_destination ${secondary_mnt}
209
210#Verify arequal for whole volume
211EXPECT_WITHIN $GEO_REP_TIMEOUT "x0" arequal_checksum ${primary_mnt} ${secondary_mnt}
212
213#Pause geo-replication session
214TEST $GEOREP_CLI $primary $secondary pause force
215
216#Resume geo-replication session
217TEST $GEOREP_CLI $primary $secondary resume force
218
219#Stop Geo-rep
220TEST $GEOREP_CLI $primary $secondary stop
221
222#Delete Geo-rep
223TEST $GEOREP_CLI $primary $secondary delete
224
225#Cleanup are-equal binary
226TEST rm $AREQUAL_PATH/arequal-checksum
227
228#Cleanup authorized keys
229sed -i '/^command=.*SSH_ORIGINAL_COMMAND#.*/d' ~/.ssh/authorized_keys
230sed -i '/^command=.*gsyncd.*/d' ~/.ssh/authorized_keys
231
232cleanup;
233#G_TESTDEF_TEST_STATUS_NETBSD7=BAD_TEST,BUG=000000
234