test/bin-test/test-dav-sync-hash-strategy.sh

changeset 643
5b8643cf0a2f
equal deleted inserted replaced
642:4e23087d3d90 643:5b8643cf0a2f
1 #!/bin/sh
2 #
3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4 #
5 # Copyright 2019 Olaf Wintermann. All rights reserved.
6 #
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions are met:
9 #
10 # 1. Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 #
13 # 2. Redistributions in binary form must reproduce the above copyright
14 # notice, this list of conditions and the following disclaimer in the
15 # documentation and/or other materials provided with the distribution.
16 #
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 # POSSIBILITY OF SUCH DAMAGE.
28 #
29
30 if [ -z "$DAV_BIN" ];
31 then
32 echo "DAV_BIN variable not set"
33 exit 1
34 fi
35 if [ -z "$DAV_SYNC_BIN" ];
36 then
37 echo "DAV_BIN variable not set"
38 exit 1
39 fi
40
41 # checks if tmp-sync/out.txt contains a specific text
42 # arg1: pattern
43 # arg2: errormsg
44 check_tmpout()
45 {
46 TEST=`cat tmp-sync/out.txt | grep "$1"`
47 if [ $? -ne 0 ];
48 then
49 echo "$2"
50 exit 2
51 fi
52 }
53
54 # do dav-sync push and check return value
55 # arg1: dir
56 # arg2: errormsg
57 dav_sync_push()
58 {
59 $DAV_SYNC_BIN push $1 > tmp-sync/out.txt
60 if [ $? -ne 0 ];
61 then
62 echo "$2"
63 exit 2
64 fi
65 }
66 # do dav-sync pull and check return value
67 # arg1: dir
68 # arg2: errormsg
69 dav_sync_pull()
70 {
71 $DAV_SYNC_BIN pull $1 > tmp-sync/out.txt
72 if [ $? -ne 0 ];
73 then
74 echo "$2"
75 exit 2
76 fi
77 }
78
79 rm -f .dav/dav-sync-tests-test2a-db.xml
80 rm -f .dav/dav-sync-tests-test2b-db.xml
81
82 $DAV_BIN rm dav-test-repo/sync/test2 2> /dev/null
83
84 $DAV_BIN mkcol dav-test-repo/sync/test2 2> /dev/null
85
86 # tmp sync dir
87 rm -Rf tmp-sync
88 mkdir tmp-sync
89 mkdir tmp-sync/test2a
90 mkdir tmp-sync/test2b
91
92 # ----------------------------------------------------------------------------
93 # test 1: add 4 files, push, pull (not really an hashing test)
94 # expected result: 4 files pushed, 4 files pulled
95 # same as hashing test 1
96
97 mkdir tmp-sync/test2a/dir1/
98 mkdir tmp-sync/test2a/dir1/subdir1/
99
100 cp synctest/file1 tmp-sync/test2a/
101 cp synctest/file2 tmp-sync/test2a/dir1/
102 cp synctest/file3 tmp-sync/test2a/dir1/subdir1
103 cp synctest/file4 tmp-sync/test2a/dir1/subdir1
104
105 touch -t 01011205 tmp-sync/test2a/file1
106 touch -t 01021204 tmp-sync/test2a/dir1/file2
107 touch -t 01031203 tmp-sync/test2a/dir1/subdir1/file3
108 touch -t 01041202 tmp-sync/test2a/dir1/subdir1/file4
109
110 dav_sync_push test2ah "test 1: push failed"
111 check_tmpout "4 files pushed" "test 1: wrong push counter"
112 check_tmpout "0 conflicts" "test 1: wrong conflict counter (push)"
113 check_tmpout "0 errors" "test 1: wrong error counter (push)"
114
115 dav_sync_pull test2bh "test 1: pull failed"
116 check_tmpout "4 files pulled" "test 1: wrong pull counter"
117 check_tmpout "0 conflicts" "test 1: wrong conflict counter (pull)"
118 check_tmpout "0 errors" "test 1: wrong error counter (pull)"
119
120
121 # ----------------------------------------------------------------------------
122 # test 2: change content of two files, don't change mtime
123 # expected result: 2 files pushed
124
125 echo "test2-change1-f1" >> tmp-sync/test2a/file1
126 echo "test2-change1-f2" >> tmp-sync/test2a/dir1/file2
127
128 touch -t 01011205 tmp-sync/test2a/file1
129 touch -t 01021204 tmp-sync/test2a/dir1/file2
130
131 dav_sync_push test2ah "test 2: push failed"
132 check_tmpout "2 files pushed" "test 2: wrong push counter"
133 check_tmpout "0 conflicts" "test 2: wrong conflict counter (push)"
134 check_tmpout "0 errors" "test 2: wrong error counter (push)"
135
136 dav_sync_pull test2bh "test 2: pull failed"
137 check_tmpout "2 files pulled" "test 2: wrong pull counter"
138 check_tmpout "0 conflicts" "test 2: wrong conflict counter (pull)"
139 check_tmpout "0 errors" "test 2: wrong error counter (pull)"
140
141
142 # ----------------------------------------------------------------------------
143 # test 3: touch file3, change file4
144 # expected result: only file4 pushed
145
146 touch tmp-sync/test2a/dir1/subdir1/file3
147 echo "test3-change1-f4" >> tmp-sync/test2a/dir1/subdir1/file4
148
149 dav_sync_push test2ah "test 3: push failed"
150 check_tmpout "1 file pushed" "test 3: wrong push counter"
151 check_tmpout "0 conflicts" "test 3: wrong conflict counter (push)"
152 check_tmpout "0 errors" "test 3: wrong error counter (push)"
153 check_tmpout "file4" "test 3: file 4 not pushed"
154
155 dav_sync_pull test2bh "test 3: pull failed"
156 check_tmpout "1 file pulled" "test 3: wrong pull counter"
157 check_tmpout "0 conflicts" "test 3: wrong conflict counter (pull)"
158 check_tmpout "0 errors" "test 3: wrong error counter (pull)"
159
160 diff tmp-sync/test2a/dir1/subdir1/file4 tmp-sync/test2b/dir1/subdir1/file4 > /dev/null 2>&1
161 if [ $? -ne 0 ]; then
162 echo "test 4: file4 not equal"
163 exit 2
164 fi

mercurial