krakow 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/CHANGELOG.md +16 -0
  2. data/CONTRIBUTING.md +25 -0
  3. data/LICENSE +13 -0
  4. data/README.md +62 -9
  5. data/krakow.gemspec +3 -1
  6. data/lib/krakow/command/cls.rb +3 -4
  7. data/lib/krakow/command/fin.rb +13 -4
  8. data/lib/krakow/command/identify.rb +22 -9
  9. data/lib/krakow/command/mpub.rb +14 -4
  10. data/lib/krakow/command/nop.rb +3 -4
  11. data/lib/krakow/command/pub.rb +15 -5
  12. data/lib/krakow/command/rdy.rb +13 -4
  13. data/lib/krakow/command/req.rb +14 -4
  14. data/lib/krakow/command/sub.rb +14 -4
  15. data/lib/krakow/command/touch.rb +13 -4
  16. data/lib/krakow/command.rb +25 -3
  17. data/lib/krakow/connection.rb +286 -60
  18. data/lib/krakow/connection_features/deflate.rb +26 -1
  19. data/lib/krakow/connection_features/snappy_frames.rb +34 -3
  20. data/lib/krakow/connection_features/ssl.rb +43 -1
  21. data/lib/krakow/connection_features.rb +1 -0
  22. data/lib/krakow/consumer.rb +162 -49
  23. data/lib/krakow/discovery.rb +17 -6
  24. data/lib/krakow/distribution/default.rb +61 -33
  25. data/lib/krakow/distribution.rb +107 -57
  26. data/lib/krakow/exceptions.rb +14 -0
  27. data/lib/krakow/frame_type/error.rb +13 -7
  28. data/lib/krakow/frame_type/message.rb +47 -4
  29. data/lib/krakow/frame_type/response.rb +14 -4
  30. data/lib/krakow/frame_type.rb +20 -8
  31. data/lib/krakow/producer/http.rb +95 -6
  32. data/lib/krakow/producer.rb +60 -17
  33. data/lib/krakow/utils/lazy.rb +99 -40
  34. data/lib/krakow/utils/logging.rb +11 -0
  35. data/lib/krakow/utils.rb +3 -0
  36. data/lib/krakow/version.rb +3 -1
  37. data/lib/krakow.rb +1 -0
  38. metadata +11 -11
  39. data/Gemfile +0 -5
  40. data/Gemfile.lock +0 -34
  41. data/test/spec.rb +0 -81
  42. data/test/specs/consumer.rb +0 -49
  43. data/test/specs/http_producer.rb +0 -123
  44. data/test/specs/producer.rb +0 -20
@@ -1,123 +0,0 @@
1
- describe Krakow do
2
-
3
- describe Krakow::Producer::Http do
4
-
5
- before do
6
- @http = Krakow::Test._http_producer
7
- end
8
-
9
- it 'should write single messages successfully' do
10
- response = @http.write('msg')
11
- Krakow::Command::Pub.ok.must_include response.status_txt
12
- end
13
- it 'should write multiple messages successfully' do
14
- response = @http.write('msg1', 'msg2', 'msg3')
15
- Krakow::Command::Mpub.ok.must_include response.status_txt
16
- end
17
- it 'should create topic' do
18
- response = @http.create_topic
19
- response.status_code.must_equal 200
20
- response.status_txt.must_equal 'OK'
21
- end
22
- it 'should delete topic' do
23
- c_response = @http.create_topic
24
- c_response.status_code.must_equal 200
25
- c_response.status_txt.must_equal 'OK'
26
- d_response = @http.delete_topic
27
- d_response.status_code.must_equal 200
28
- d_response.status_txt.must_equal 'OK'
29
- end
30
- it 'should create channel' do
31
- c_response = @http.create_topic
32
- c_response.status_code.must_equal 200
33
- c_response.status_txt.must_equal 'OK'
34
- ch_response = @http.create_channel('fubar')
35
- ch_response.status_code.must_equal 200
36
- ch_response.status_txt.must_equal 'OK'
37
- end
38
- it 'should delete channel' do
39
- c_response = @http.create_topic
40
- c_response.status_code.must_equal 200
41
- c_response.status_txt.must_equal 'OK'
42
- ch_response = @http.create_channel('fubar')
43
- ch_response.status_code.must_equal 200
44
- ch_response.status_txt.must_equal 'OK'
45
- dch_response = @http.delete_channel('fubar')
46
- dch_response.status_code.must_equal 200
47
- dch_response.status_txt.must_equal 'OK'
48
- end
49
- it 'should empty topic' do
50
- @consumer.terminate
51
- @http.write('msg1', 'msg2', 'msg3').status_code.must_equal 200
52
- et_response = @http.empty_topic
53
- et_response.status_code.must_equal 200
54
- et_response.status_txt.must_equal 'OK'
55
- @consumer = Krakow::Test._consumer
56
- sleep(0.2)
57
- @consumer.connections.wont_be :empty?
58
- @consumer.queue.must_be :empty?
59
- end
60
- it 'should empty channel' do
61
- @consumer.terminate
62
- @http.write('msg0')
63
- @http.pause_channel('chan2').status_code.must_equal 200
64
- consumer1 = Krakow::Test._consumer(:channel => 'chan1')
65
- consumer2 = Krakow::Test._consumer(:channel => 'chan2')
66
- @http.write('msg1', 'msg2', 'msg3').status_code.must_equal 200
67
- sleep(0.5)
68
- consumer1.queue.size.must_equal 4
69
- consumer2.queue.size.must_equal 0
70
- @http.empty_channel('chan2').status_code.must_equal 200
71
- @http.unpause_channel('chan2').status_code.must_equal 200
72
- sleep(0.5)
73
- consumer1.queue.size.must_equal 4
74
- consumer2.queue.size.must_equal 0
75
- consumer1.terminate
76
- consumer2.terminate
77
- end
78
- it 'should pause channel' do
79
- @consumer.terminate
80
- @http.write('msg0')
81
- @http.pause_channel('chan2').status_code.must_equal 200
82
- consumer1 = Krakow::Test._consumer(:channel => 'chan1')
83
- consumer2 = Krakow::Test._consumer(:channel => 'chan2')
84
- @http.write('msg1', 'msg2', 'msg3').status_code.must_equal 200
85
- sleep(0.5)
86
- consumer1.queue.size.must_equal 4
87
- consumer2.queue.size.must_equal 0
88
- consumer1.terminate
89
- consumer2.terminate
90
- end
91
- it 'should unpause channel' do
92
- @consumer.terminate
93
- @http.write('msg0')
94
- @http.pause_channel('chan2').status_code.must_equal 200
95
- consumer1 = Krakow::Test._consumer(:channel => 'chan1')
96
- consumer2 = Krakow::Test._consumer(:channel => 'chan2')
97
- @http.write('msg1', 'msg2', 'msg3').status_code.must_equal 200
98
- sleep(0.5)
99
- consumer1.queue.size.must_equal 4
100
- consumer2.queue.size.must_equal 0
101
- @http.unpause_channel('chan2').status_code.must_equal 200
102
- sleep(0.5)
103
- consumer2.queue.size.must_equal 4
104
- consumer1.terminate
105
- consumer2.terminate
106
- end
107
- it 'should return stats' do
108
- stat = @http.stats
109
- stat.status_code.must_equal 200
110
- stat.data.must_be_kind_of Hash
111
- end
112
- it 'should ping' do
113
- @http.ping.status_code.must_equal 200
114
- end
115
- it 'should fetch info' do
116
- infos = @http.info
117
- infos.status_code.must_equal 200
118
- infos.data.must_be_kind_of Hash
119
- end
120
-
121
- end
122
-
123
- end
@@ -1,20 +0,0 @@
1
- describe Krakow do
2
-
3
- describe Krakow::Producer do
4
-
5
- it 'should be connected' do
6
- @producer.connected?.must_equal true
7
- end
8
- it 'should write single messages successfully' do
9
- response = @producer.write('msg')
10
- response.must_be_kind_of Krakow::FrameType::Response
11
- Krakow::Command::Pub.ok.must_include response.content
12
- end
13
- it 'should write multiple messages successfully' do
14
- response = @producer.write('msg1', 'msg2', 'msg3')
15
- response.must_be_kind_of Krakow::FrameType::Response
16
- Krakow::Command::Mpub.ok.must_include response.content
17
- end
18
-
19
- end
20
- end