bane 0.1.1 → 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.
- data/lib/bane/behaviors.rb +12 -1
- data/test/bane/behaviors_test.rb +26 -24
- data/test/bane/fake_connection_test.rb +34 -0
- data/test/test_helper.rb +21 -0
- metadata +7 -5
data/lib/bane/behaviors.rb
CHANGED
@@ -58,6 +58,17 @@ module Bane
|
|
58
58
|
include ForEachLine
|
59
59
|
end
|
60
60
|
|
61
|
+
# Sends a newline character as the only response
|
62
|
+
class NewlineResponse < BasicBehavior
|
63
|
+
def serve(io, options)
|
64
|
+
io.write "\n"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
class NewlineResponseForEachLine < NewlineResponse
|
69
|
+
include ForEachLine
|
70
|
+
end
|
71
|
+
|
61
72
|
# Sends a random response.
|
62
73
|
class RandomResponse < BasicBehavior
|
63
74
|
def serve(io, options)
|
@@ -75,7 +86,7 @@ module Bane
|
|
75
86
|
include ForEachLine
|
76
87
|
end
|
77
88
|
|
78
|
-
# Sends a fixed response
|
89
|
+
# Sends a fixed response character-by-character, pausing between each character.
|
79
90
|
#
|
80
91
|
# Options:
|
81
92
|
# - message: The response to send. Default: "Hello, world!"
|
data/test/bane/behaviors_test.rb
CHANGED
@@ -6,21 +6,6 @@ class BehaviorsTest < Test::Unit::TestCase
|
|
6
6
|
|
7
7
|
include Bane::Behaviors
|
8
8
|
|
9
|
-
class FakeConnection < StringIO
|
10
|
-
def will_send(query)
|
11
|
-
@query = query
|
12
|
-
end
|
13
|
-
|
14
|
-
def gets
|
15
|
-
@query
|
16
|
-
@read_query = true
|
17
|
-
end
|
18
|
-
|
19
|
-
def read_query?
|
20
|
-
@read_query
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
9
|
def setup
|
25
10
|
@fake_connection = FakeConnection.new
|
26
11
|
end
|
@@ -31,8 +16,14 @@ class BehaviorsTest < Test::Unit::TestCase
|
|
31
16
|
assert_equal "Test Message", response
|
32
17
|
end
|
33
18
|
|
19
|
+
def test_newline_response_sends_only_a_newline_character
|
20
|
+
query_server(create(NewlineResponse))
|
21
|
+
|
22
|
+
assert_equal "\n", response
|
23
|
+
end
|
24
|
+
|
34
25
|
def test_deluge_response_sends_one_million_bytes_by_default
|
35
|
-
query_server(create
|
26
|
+
query_server(create(DelugeResponse))
|
36
27
|
|
37
28
|
assert_response_length 1_000_000
|
38
29
|
end
|
@@ -44,13 +35,13 @@ class BehaviorsTest < Test::Unit::TestCase
|
|
44
35
|
end
|
45
36
|
|
46
37
|
def test_close_immediately_sends_no_response
|
47
|
-
query_server(create
|
38
|
+
query_server(create(CloseImmediately))
|
48
39
|
|
49
40
|
assert_empty_response()
|
50
41
|
end
|
51
42
|
|
52
43
|
def test_never_respond_never_sends_a_response
|
53
|
-
server = create
|
44
|
+
server = create(NeverRespond)
|
54
45
|
|
55
46
|
assert_raise Timeout::Error do
|
56
47
|
Timeout::timeout(3) { query_server(server) }
|
@@ -59,7 +50,7 @@ class BehaviorsTest < Test::Unit::TestCase
|
|
59
50
|
end
|
60
51
|
|
61
52
|
def test_close_after_pause_sleeps_30_seconds_by_default_and_sends_nothing
|
62
|
-
server = create
|
53
|
+
server = create(CloseAfterPause)
|
63
54
|
server.expects(:sleep).with(30)
|
64
55
|
|
65
56
|
query_server(server)
|
@@ -68,13 +59,13 @@ class BehaviorsTest < Test::Unit::TestCase
|
|
68
59
|
end
|
69
60
|
|
70
61
|
def test_close_after_pause_accepts_duration_parameter
|
71
|
-
server = create
|
62
|
+
server = create(CloseAfterPause)
|
72
63
|
|
73
64
|
within(2) { query_server(server, :duration => 1) }
|
74
65
|
end
|
75
66
|
|
76
67
|
def test_slow_response_sends_a_message_slowly
|
77
|
-
server = create
|
68
|
+
server = create(SlowResponse)
|
78
69
|
message = "Hi!"
|
79
70
|
delay = 0.5
|
80
71
|
max_delay = (message.length + 1) * delay
|
@@ -85,7 +76,7 @@ class BehaviorsTest < Test::Unit::TestCase
|
|
85
76
|
end
|
86
77
|
|
87
78
|
def test_random_response_sends_a_nonempty_response
|
88
|
-
query_server(create
|
79
|
+
query_server(create(RandomResponse))
|
89
80
|
|
90
81
|
assert (!response.empty?), "Should have served a nonempty response"
|
91
82
|
end
|
@@ -96,7 +87,7 @@ class BehaviorsTest < Test::Unit::TestCase
|
|
96
87
|
server = create(HttpRefuseAllCredentials)
|
97
88
|
query_server(server)
|
98
89
|
|
99
|
-
assert @fake_connection.
|
90
|
+
assert @fake_connection.read_all_queries?, "Should have read the HTTP query before sending response"
|
100
91
|
assert_match /HTTP\/1.1 401 Unauthorized/, response, 'Should have responded with the 401 response code'
|
101
92
|
end
|
102
93
|
|
@@ -104,6 +95,17 @@ class BehaviorsTest < Test::Unit::TestCase
|
|
104
95
|
assert_equal "SlowResponse", Bane::Behaviors::SlowResponse.simple_name
|
105
96
|
end
|
106
97
|
|
98
|
+
def test_for_each_line_reads_a_line_before_responding
|
99
|
+
server = create(Bane::Behaviors::FixedResponseForEachLine)
|
100
|
+
|
101
|
+
@fake_connection.will_send "irrelevant\n"
|
102
|
+
|
103
|
+
query_server(server, {:message => "Dynamic"})
|
104
|
+
assert_equal "Dynamic", response
|
105
|
+
|
106
|
+
assert @fake_connection.read_all_queries?
|
107
|
+
end
|
108
|
+
|
107
109
|
private
|
108
110
|
|
109
111
|
def create(server_class)
|
@@ -134,4 +136,4 @@ class BehaviorsTest < Test::Unit::TestCase
|
|
134
136
|
end
|
135
137
|
end
|
136
138
|
|
137
|
-
end
|
139
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class FakeConnectionTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@fake_connection = FakeConnection.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_fake_connection_returns_nil_if_no_commands_to_read
|
10
|
+
assert_nil @fake_connection.gets
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_fake_connection_reports_when_one_command_set_and_read
|
14
|
+
@fake_connection.will_send("Command #1")
|
15
|
+
|
16
|
+
@fake_connection.gets
|
17
|
+
|
18
|
+
assert @fake_connection.read_all_queries?, "Should have read all queries"
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_fake_connection_reports_when_all_commands_read
|
22
|
+
@fake_connection.will_send("Command #1")
|
23
|
+
@fake_connection.will_send("Command #2")
|
24
|
+
|
25
|
+
@fake_connection.gets
|
26
|
+
|
27
|
+
assert !@fake_connection.read_all_queries?, "Did not read all queries yet"
|
28
|
+
|
29
|
+
@fake_connection.gets
|
30
|
+
|
31
|
+
assert @fake_connection.read_all_queries?, "Should have read all queries"
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -7,3 +7,24 @@ require 'bane'
|
|
7
7
|
|
8
8
|
|
9
9
|
IRRELEVANT_PORT = 4001
|
10
|
+
|
11
|
+
class FakeConnection < StringIO
|
12
|
+
|
13
|
+
def will_send(query)
|
14
|
+
commands.push query
|
15
|
+
end
|
16
|
+
|
17
|
+
def gets
|
18
|
+
commands.pop
|
19
|
+
end
|
20
|
+
|
21
|
+
def read_all_queries?
|
22
|
+
commands.empty?
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def commands
|
28
|
+
@commands ||= []
|
29
|
+
end
|
30
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Daniel Wellman
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-07-02 00:00:00 -04:00
|
19
19
|
default_executable: bane
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -64,6 +64,7 @@ files:
|
|
64
64
|
- test/bane/configuration_parser_test.rb
|
65
65
|
- test/bane/configuration_test.rb
|
66
66
|
- test/bane/delegating_gserver_test.rb
|
67
|
+
- test/bane/fake_connection_test.rb
|
67
68
|
- test/bane/integration_test.rb
|
68
69
|
- test/bane/launcher_test.rb
|
69
70
|
- test/bane/naive_http_response_test.rb
|
@@ -111,6 +112,7 @@ test_files:
|
|
111
112
|
- test/bane/configuration_parser_test.rb
|
112
113
|
- test/bane/configuration_test.rb
|
113
114
|
- test/bane/delegating_gserver_test.rb
|
115
|
+
- test/bane/fake_connection_test.rb
|
114
116
|
- test/bane/integration_test.rb
|
115
117
|
- test/bane/launcher_test.rb
|
116
118
|
- test/bane/naive_http_response_test.rb
|