f1901add8bd8e9dc81d54f796a5e9fb0e6b6c589
[rxpd] / tests / 50listsyncronization.tests
1 # we randomize ports to minimize collisions,
2 # this needs to be fixed someday (use netstat and check which port is free)
3
4 cp -rf $srcdir/files ./
5 chmod -R +w files
6 port=$((RANDOM+1500))
7 ./rxpd -L $LC_CTYPE -dq -b files -p policy -t $port example
8
9 sleep 1
10
11 function rxpd_client()
12 {
13     nc -q1 localhost $port;
14 }
15
16 TESTING "list syncronization tests" rxpd_client
17
18 TEST "copy a list" <<END
19 in: FETCH:test
20 in: 127.0.0.1:$port:policy
21 out: #OK:
22 END
23
24 TEST "copy a list, check" <<END
25 in: DUMP:test
26 out: # syntax:
27 out: # [atime]:name:command:list:proto:address
28 out: #
29 out: # Allow dumping of the 'policy' list itself
30 out: :ACCEPT:DUMP:policy
31 out: # allow localhost
32 out: :ACCEPT:.*:tcp.:127.0.0.1$
33 out: # Clients from local network are allowed to do anything
34 out: :ACCEPT:.*:tcp.:10\..*$
35 out: # Forbid all others to do anything else with the policy
36 out: :REJECT:.*:policy
37 out: # Hey and no one shall remotely shutdown this daemon!
38 out: :REJECT:SHUTDOWN
39 out: # Finally allow anything else
40 out: :ACCEPT:.*
41 END
42
43 TEST "copy a list for syncing" <<END
44 in: FETCH:test
45 in: 127.0.0.1:$port:example
46 out: #OK:
47 END
48
49 sleep 2
50
51 TEST "sync rules, touch" <<END
52 in: CHECK:test
53 in: MirBSD
54 END
55
56 TEST "sync rules, sync" <<END
57 in: UPDATE:example
58 in: test
59 out: #OK:
60 END
61
62 TEST "sync rules, expire" <<END
63 in: EXPIRE:example
64 in: 1
65 END
66
67 TEST "sync rules, check" <<END
68 in: CHECK:example
69 in: MirBSD
70 out: accept:MirBSD
71 END
72
73
74 TEST "merge, setup source" <<END
75 in: APPEND:source
76 in: # line 1
77 in: # line 2
78 END
79
80 TEST "merge, to new list" <<END
81 in: MERGE:dest
82 in: source
83 out: #OK:
84 END
85
86 TEST "merge, check new list" <<END
87 in: DUMP:dest
88 out: # line 1
89 out: # line 2
90 END
91
92
93 TEST "merge, setup lines at end" <<END
94 in: APPEND:source
95 in: # line 3
96 in: # line 4
97 END
98
99 TEST "merge, lines at end" <<END
100 in: MERGE:dest
101 in: source
102 out: #OK:
103 END
104
105 TEST "merge, check lines at end" <<END
106 in: DUMP:dest
107 out: # line 1
108 out: # line 2
109 out: # line 3
110 out: # line 4
111 END
112
113
114 TEST "merge, setup lines at begin" <<END
115 in: PREPEND:source
116 in: # line -1
117 in: # line 0
118 END
119
120 TEST "merge, lines at begin" <<END
121 in: MERGE:dest
122 in: source
123 out: #OK:
124 END
125
126 TEST "merge, check lines at begin" <<END
127 in: DUMP:dest
128 out: # line -1
129 out: # line 0
130 out: # line 1
131 out: # line 2
132 out: # line 3
133 out: # line 4
134 END
135
136
137 TEST "merge, setup remove lines" <<END
138 in: REMOVE:source
139 in: # line 0
140 in: # line 1
141 END
142
143 TEST "merge, remove lines" <<END
144 in: MERGE:dest
145 in: source
146 out: #OK:
147 END
148
149 # merge is add only and shall not delete anything
150 TEST "merge, check remove lines" <<END
151 in: DUMP:dest
152 out: # line -1
153 out: # line 0
154 out: # line 1
155 out: # line 2
156 out: # line 3
157 out: # line 4
158 END
159
160
161 TEST "merge, setup replace lines" <<END
162 in: REPLACE:source
163 in: # line 2
164 in: # line -1.1
165 in: # line 2
166 in: # line 0.1
167 END
168
169 TEST "merge, replace lines" <<END
170 in: MERGE:dest
171 in: source
172 out: #OK:
173 END
174
175 TEST "merge, check remove lines" <<END
176 in: DUMP:dest
177 out: # line -1
178 out: # line 0
179 out: # line 1
180 out: # line -1.1
181 out: # line 2
182 out: # line 0.1
183 out: # line 3
184 out: # line 4
185 END