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