conflict 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,82 +1,82 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
- require 'test/unit'
19
- require 'conflict'
20
- include Conflict
21
-
22
- class RoundTripMultipleActionsTest < Test::Unit::TestCase
23
- include ConflictConstants
24
- RESOURCE = CONFLICT_URL + '/test_data.txt'
25
- DATA_DIR = './test/data/three/'
26
-
27
- def setup
28
-
29
- @added = File::new(DATA_DIR + "added.diff.txt").to_s
30
- @deleted = File::new(DATA_DIR + "deleted.diff.txt").to_s
31
- @changed = File::new(DATA_DIR + "changed.diff.txt").to_s
32
- @info = File::new(DATA_DIR + "conflict.info.txt").to_s
33
-
34
- @first = Event::new(CLIENT_ONE, "added", RESOURCE)
35
- @second = Event::new(CLIENT_TWO, "deleted", RESOURCE)
36
- @third = Event::new(CLIENT_THREE, "changed", RESOURCE)
37
-
38
- @conf = {:port=>83}
39
-
40
- @thread = Thread.new do
41
- Server::new(@conf).start
42
- end
43
-
44
- end
45
-
46
- def teardown
47
- @thread.kill
48
- @thread.join(5)
49
- end
50
-
51
- def test_workflow_using_add_delete_and_change
52
-
53
- client_one = Client::new({:id=>CLIENT_ONE}.merge(@conf)) # dev start conflict clients
54
- client_two = Client::new({:id=>CLIENT_TWO}.merge(@conf))
55
- client_three = Client::new({:id=>CLIENT_THREE}.merge(@conf))
56
-
57
- response = client_one.diff(@added, @info)
58
- assert_equal [], response
59
-
60
- response = client_two.diff(@deleted, @info)
61
- assert [Conflict::Conflict.new(@second, @first)].eql?(response)
62
-
63
- response = client_three.diff(@changed, @info)
64
- assert [Conflict::Conflict.new(@third, @first),Conflict::Conflict.new(@third, @second)].eql?(response)
65
-
66
- response = client_two.revert @info
67
- assert_equal [], response
68
-
69
- response = client_one.diff(@added, @info)
70
- assert [Conflict::Conflict.new(@first, @third)].eql?(response)
71
-
72
- response = client_three.diff(@changed, @info)
73
- assert [Conflict::Conflict.new(@third, @first)].eql?(response)
74
-
75
- response = client_one.revert @info
76
- assert_equal [], response
77
-
78
- response = client_three.revert @info
79
- assert_equal [], response
80
- end
81
-
82
- end
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'test/unit'
19
+ require 'conflict'
20
+ include Conflict
21
+
22
+ class RoundTripMultipleActionsTest < Test::Unit::TestCase
23
+ include ConflictConstants
24
+ RESOURCE = CONFLICT_URL + '/test_data.txt'
25
+ DATA_DIR = './test/data/three/'
26
+
27
+ def setup
28
+
29
+ @added = File::new(DATA_DIR + "added.diff.txt").to_s
30
+ @deleted = File::new(DATA_DIR + "deleted.diff.txt").to_s
31
+ @changed = File::new(DATA_DIR + "changed.diff.txt").to_s
32
+ @info = File::new(DATA_DIR + "conflict.info.txt").to_s
33
+
34
+ @first = Event::new(CLIENT_ONE, "added", RESOURCE)
35
+ @second = Event::new(CLIENT_TWO, "deleted", RESOURCE)
36
+ @third = Event::new(CLIENT_THREE, "changed", RESOURCE)
37
+
38
+ @conf = {:port=>83}
39
+
40
+ @thread = Thread.new do
41
+ Server::new(@conf).start
42
+ end
43
+
44
+ end
45
+
46
+ def teardown
47
+ @thread.kill
48
+ @thread.join(5)
49
+ end
50
+
51
+ def test_workflow_using_add_delete_and_change
52
+
53
+ client_one = Client::new({:id=>CLIENT_ONE}.merge(@conf)) # dev start conflict clients
54
+ client_two = Client::new({:id=>CLIENT_TWO}.merge(@conf))
55
+ client_three = Client::new({:id=>CLIENT_THREE}.merge(@conf))
56
+
57
+ response = client_one.diff(@added, @info)
58
+ assert_equal [], response
59
+
60
+ response = client_two.diff(@deleted, @info)
61
+ assert [Conflict::Conflict.new(@second, @first)].eql?(response)
62
+
63
+ response = client_three.diff(@changed, @info)
64
+ assert [Conflict::Conflict.new(@third, @first),Conflict::Conflict.new(@third, @second)].eql?(response)
65
+
66
+ response = client_two.revert @info
67
+ assert_equal [], response
68
+
69
+ response = client_one.diff(@added, @info)
70
+ assert [Conflict::Conflict.new(@first, @third)].eql?(response)
71
+
72
+ response = client_three.diff(@changed, @info)
73
+ assert [Conflict::Conflict.new(@third, @first)].eql?(response)
74
+
75
+ response = client_one.revert @info
76
+ assert_equal [], response
77
+
78
+ response = client_three.revert @info
79
+ assert_equal [], response
80
+ end
81
+
82
+ end
@@ -1,79 +1,109 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
- require 'test/unit'
19
- require 'conflict'
20
- include Conflict
21
-
22
- class NegativeServerTest < Test::Unit::TestCase
23
- include ConflictConstants
24
- DATA_DIR = './test/data/three/'
25
-
26
- def test_combinations
27
-
28
- @cfg = {:port=>84}
29
- @thread = Thread.new do
30
- Server::new(@cfg).start
31
- end
32
-
33
- added = File::new(DATA_DIR + "added.diff.txt").to_s
34
- deleted = File::new(DATA_DIR + "deleted.diff.txt").to_s
35
- info = File::new(DATA_DIR + "conflict.info.txt").to_s
36
-
37
- clients = [{}, {"client"=>""}, {"client"=>" "}, {"client"=>"foo"}]
38
- diffs = [{}, {"diff"=>""}, {"diff"=>" "}, {"diff"=>added} ]
39
- infos = [{}, {"info"=>""}, {"info"=>" "}, {"info"=>info} ]
40
-
41
- # leaving these out until I can figure out how to make multi-params happen w/ ruby 1.8.4
42
- # {"diff"=>[added,deleted]}
43
- # {"info"=>[info,info]}
44
- # [3, 4, 4]
45
-
46
- # single diff with no changes, single diff w/ no changes,
47
- # single diff w/ changes, multi-diff with changes
48
- good = [ [3, 1, 3], [3, 2, 3], [3, 3, 3] ]
49
-
50
- # tests all mathematical possibilities
51
- clients.each_index do | i |
52
- diffs.each_index do | j |
53
- infos.each_index do | k |
54
-
55
- body = clients[i].merge(diffs[j]).merge(infos[k])
56
- code = send body
57
- point = [i, j, k]
58
- expected_code = good.index(point) ? 200 : 500
59
- assert_equal(expected_code.to_s, code, point.to_s + " -> " + body.to_s)
60
-
61
- end
62
- end
63
- end
64
-
65
- @thread.kill
66
- @thread.join(5)
67
-
68
- end
69
-
70
- def send body
71
-
72
- req = Net::HTTP::Post.new(Conflict::DIFF_URL)
73
- req.set_form_data(body)
74
- http = Net::HTTP.new("127.0.0.1", @cfg[:port])
75
- res = http.request(req).code
76
-
77
- end
78
-
79
- end
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'test/unit'
19
+ require 'conflict'
20
+ include Conflict
21
+
22
+ class NegativeServerTest < Test::Unit::TestCase
23
+ include ConflictConstants
24
+ DATA_DIR = './test/data/three/'
25
+
26
+ def setup
27
+
28
+ @added = File::new(DATA_DIR + "added.diff.txt").to_s
29
+ @deleted = File::new(DATA_DIR + "deleted.diff.txt").to_s
30
+ @info = File::new(DATA_DIR + "conflict.info.txt").to_s
31
+ @clients = [{}, {"client"=>""}, {"client"=>" "}, {"client"=>"foo"}]
32
+ @diffs = [{}, {"diff"=>""}, {"diff"=>" "}, {"diff"=>@added} ]
33
+
34
+ end
35
+
36
+ def test_combinations
37
+
38
+ @cfg = {:port=>84}
39
+ @thread = Thread.new do
40
+ Server::new(@cfg).start
41
+ end
42
+
43
+ infos = [{}, {"info"=>""}, {"info"=>" "}, {"info"=>@info} ]
44
+
45
+ # leaving these out until I can figure out how to make multi-params happen w/ ruby 1.8.4
46
+ # {"diff"=>[@added,@deleted]}
47
+ # {"info"=>[@info,@info]}
48
+ # [3, 4, 4]
49
+
50
+ # single diff with no changes, single diff w/ no changes,
51
+ # single diff w/ changes, multi-diff with changes
52
+ good = [ [3, 1, 3], [3, 2, 3], [3, 3, 3] ]
53
+
54
+ # tests all mathematical possibilities
55
+ @clients.each_index do | i |
56
+ @diffs.each_index do | j |
57
+ infos.each_index do | k |
58
+
59
+ body = @clients[i].merge(@diffs[j]).merge(infos[k])
60
+ code = send body, Conflict::DIFF_URL
61
+ point = [i, j, k]
62
+ expected_code = good.index(point) ? 200 : 500
63
+ assert_equal(expected_code.to_s, code, point.to_s + " -> " + body.to_s)
64
+
65
+ end
66
+ end
67
+ end
68
+
69
+ @thread.kill
70
+ @thread.join(5)
71
+
72
+ end
73
+
74
+ def test_combinations_cvs
75
+
76
+ @cfg = {:port=>88}
77
+ @thread = Thread.new do
78
+ Server::new(@cfg).start
79
+ end
80
+
81
+ good = [ [3, 1], [3, 2], [3, 3] ]
82
+
83
+ @clients.each_index do | i |
84
+ @diffs.each_index do | j |
85
+
86
+ body = @clients[i].merge(@diffs[j])
87
+ code = send body, Conflict::DIFF_CVS_URL
88
+ point = [i, j]
89
+ expected_code = good.index(point) ? 200 : 500
90
+ assert_equal(expected_code.to_s, code, point.to_s + " -> " + body.to_s)
91
+
92
+ end
93
+ end
94
+
95
+ @thread.kill
96
+ @thread.join(5)
97
+
98
+ end
99
+
100
+ def send body, url
101
+
102
+ req = Net::HTTP::Post.new(url)
103
+ req.set_form_data(body)
104
+ http = Net::HTTP.new("127.0.0.1", @cfg[:port])
105
+ res = http.request(req).code
106
+
107
+ end
108
+
109
+ end
@@ -1,63 +1,63 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one
2
- # or more contributor license agreements. See the NOTICE file
3
- # distributed with this work for additional information
4
- # regarding copyright ownership. The ASF licenses this file
5
- # to you under the Apache License, Version 2.0 (the
6
- # "License"); you may not use this file except in compliance
7
- # with the License. You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing,
12
- # software distributed under the License is distributed on an
13
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
- # KIND, either express or implied. See the License for the
15
- # specific language governing permissions and limitations
16
- # under the License.
17
-
18
- require 'test/unit'
19
- require 'conflict'
20
- include Conflict
21
-
22
- class RoundTripRelativePathTest < Test::Unit::TestCase
23
- include ConflictConstants
24
-
25
- def test_relative_path
26
-
27
- cfg = {:port=>82}
28
- @thread = Thread.new do
29
- Server::new(cfg).start
30
- end
31
-
32
- info_one = File.new(STOMP_1_INFO_PATH).to_s
33
- info_two = File.new(STOMP_2_INFO_PATH).to_s
34
- diff_one = File::new(STOMP_1_DIFF_PATH).to_s
35
- diff_two = File::new(STOMP_2_DIFF_PATH).to_s
36
-
37
- first_event = Event::new(CLIENT_ONE, "changed", STOMP_RESOURCE)
38
- second_event = Event::new(CLIENT_TWO, "changed", STOMP_RESOURCE)
39
-
40
- client_one = Client::new({:id=>CLIENT_ONE}.merge(cfg))
41
- client_two = Client::new({:id=>CLIENT_TWO}.merge(cfg))
42
-
43
- response = client_one.diff diff_one, info_one
44
- assert_equal [], response
45
-
46
- response = client_two.diff diff_two, info_two
47
- assert [Conflict::Conflict::new(second_event, first_event)].eql?(response)
48
-
49
- response = client_one.resend
50
- assert [Conflict::Conflict::new(first_event, second_event)].eql?(response)
51
-
52
- response = client_two.revert info_two
53
- assert_equal [], response
54
-
55
- response = client_one.revert info_one
56
- assert_equal [], response
57
-
58
- @thread.kill
59
- @thread.join(5)
60
-
61
- end
62
-
63
- end
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ require 'test/unit'
19
+ require 'conflict'
20
+ include Conflict
21
+
22
+ class RoundTripRelativePathTest < Test::Unit::TestCase
23
+ include ConflictConstants
24
+
25
+ def test_relative_path
26
+
27
+ cfg = {:port=>82}
28
+ @thread = Thread.new do
29
+ Server::new(cfg).start
30
+ end
31
+
32
+ info_one = File.new(STOMP_1_INFO_PATH).to_s
33
+ info_two = File.new(STOMP_2_INFO_PATH).to_s
34
+ diff_one = File::new(STOMP_1_DIFF_PATH).to_s
35
+ diff_two = File::new(STOMP_2_DIFF_PATH).to_s
36
+
37
+ first_event = Event::new(CLIENT_ONE, "changed", STOMP_RESOURCE)
38
+ second_event = Event::new(CLIENT_TWO, "changed", STOMP_RESOURCE)
39
+
40
+ client_one = Client::new({:id=>CLIENT_ONE}.merge(cfg))
41
+ client_two = Client::new({:id=>CLIENT_TWO}.merge(cfg))
42
+
43
+ response = client_one.diff diff_one, info_one
44
+ assert_equal [], response
45
+
46
+ response = client_two.diff diff_two, info_two
47
+ assert [Conflict::Conflict::new(second_event, first_event)].eql?(response)
48
+
49
+ response = client_one.resend
50
+ assert [Conflict::Conflict::new(first_event, second_event)].eql?(response)
51
+
52
+ response = client_two.revert info_two
53
+ assert_equal [], response
54
+
55
+ response = client_one.revert info_one
56
+ assert_equal [], response
57
+
58
+ @thread.kill
59
+ @thread.join(5)
60
+
61
+ end
62
+
63
+ end