Skip to content

Commit 7c5da1b

Browse files
committed
More coverage for notify server / client.
1 parent 06cbb91 commit 7c5da1b

File tree

2 files changed

+49
-2
lines changed

2 files changed

+49
-2
lines changed

lib/async/container/notify/server.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ def self.load(message)
2525
value = false
2626
elsif value == "1"
2727
value = true
28+
elsif key == "errno" and value =~ /\A\-?\d+\z/
29+
value = Integer(value)
2830
end
2931

3032
next [key.downcase.to_sym, value]
@@ -74,7 +76,11 @@ def receive
7476

7577
message = Server.load(data)
7678

77-
yield message
79+
if block_given?
80+
yield message
81+
else
82+
return message
83+
end
7884
end
7985
end
8086
end

test/async/container/notify.rb

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,16 @@
1313
let(:notify_socket) {server.path}
1414
let(:client) {subject::Socket.new(notify_socket)}
1515

16+
it "can send and receive messages" do
17+
context = server.bind
18+
19+
client.send(true: true, false: false, hello: "world")
20+
21+
message = context.receive
22+
23+
expect(message).to be == {true: true, false: false, hello: "world"}
24+
end
25+
1626
with "#ready!" do
1727
it "should send message" do
1828
begin
@@ -31,11 +41,42 @@
3141
end
3242
end
3343

34-
expect(messages.last).to have_keys(ready: be == true)
44+
expect(messages.last).to have_keys(
45+
ready: be == true
46+
)
3547
ensure
3648
context&.close
3749
Process.wait(pid) if pid
3850
end
3951
end
4052
end
53+
54+
with "#stopping!" do
55+
it "sends stopping message" do
56+
context = server.bind
57+
58+
client.stopping!
59+
60+
message = context.receive
61+
62+
expect(message).to have_keys(
63+
stopping: be == true
64+
)
65+
end
66+
end
67+
68+
with "#error!" do
69+
it "sends error message" do
70+
context = server.bind
71+
72+
client.error!("Boom!")
73+
74+
message = context.receive
75+
76+
expect(message).to have_keys(
77+
status: be == "Boom!",
78+
errno: be == -1,
79+
)
80+
end
81+
end
4182
end if Async::Container.fork?

0 commit comments

Comments
 (0)