hopper 0.0.1.pre.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,14 @@
1
+ class Hopper
2
+ class Message
3
+ class Factory
4
+ def initialize(encoder)
5
+ @decoder_klass = encoder_klass
6
+ end
7
+
8
+ def build(payload)
9
+ message = Hopper::Message.new(payload, encoder)
10
+ @decoder_klass.new(message)
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,29 @@
1
+ require 'hopper/channel/queue/publisher'
2
+ require 'hopper/channel/queue/listener'
3
+
4
+ module Hopper
5
+ class Queue
6
+
7
+ PRELOAD_FACTOR = 3
8
+
9
+ def initialize(queue_name, opts = {})
10
+ @name = queue_name
11
+
12
+ @shaper = opts[:shaper]
13
+ end
14
+
15
+ def for_channel(channel)
16
+ channel.queue(@name)
17
+ end
18
+
19
+ def listener(channel, opts = {})
20
+ queue = for_channel(channel)
21
+ queue.listener
22
+ end
23
+
24
+ def publisher(channel, opts = {})
25
+ queue = for_channel(channel)
26
+ queue.publisher
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,3 @@
1
+ module Hopper
2
+ VERSION = "0.0.1-alpha.1"
3
+ end
@@ -0,0 +1,61 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ require 'bunny'
4
+
5
+ require 'timeout'
6
+
7
+ require 'hopper'
8
+
9
+ require 'hopper/channel'
10
+ require 'hopper/queue'
11
+
12
+ module Hopper
13
+ class IntegrationTest < Test::Unit::TestCase
14
+ test "explicit queue definition" do
15
+ channel = Hopper::Channel.new
16
+
17
+ queue = Hopper::Queue.new("hopper-stresstest")
18
+
19
+ publisher = queue.publisher(channel)
20
+ listener = queue.listener(channel)
21
+
22
+ run_queue(publisher, listener)
23
+ end
24
+
25
+ test "implicit queue definition" do
26
+ channel = Hopper::Channel.new
27
+
28
+ queue = channel.queue("hopper-stresstest")
29
+
30
+ publisher = queue.publisher
31
+ listener = queue.listener
32
+
33
+ run_queue(publisher, listener)
34
+
35
+ end
36
+
37
+ def run_queue(publisher, listener)
38
+ messages = 10.times.map do |x|
39
+ Message.new("message#{x}")
40
+ end
41
+
42
+ messages.each do |m|
43
+ publisher.publish(m)
44
+ end
45
+
46
+ received = []
47
+
48
+ Timeout::timeout(1) do
49
+ listener.listen do |m|
50
+ received << m
51
+ m.acknowledge
52
+ if received.length == 10
53
+ m.terminate
54
+ end
55
+ end
56
+ end
57
+
58
+ assert_equal 10, received.length
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,19 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ if ENV["ENABLE_SIMPLE_COV"]
5
+ require 'simplecov'
6
+ require File.expand_path('../../simplecov_helper', __FILE__)
7
+ SimpleCov.start 'hopper' do
8
+ add_filter 'test'
9
+ end
10
+ end
11
+
12
+ require 'test/unit'
13
+
14
+ ENV["WARREN_ENV"] = "test"
15
+
16
+ require 'mocha/setup'
17
+
18
+ module TestHelper
19
+ end
@@ -0,0 +1,169 @@
1
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque sem erat, aliquam in odio ut, dictum euismod elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sit amet risus accumsan, aliquet erat sed, blandit dui. Quisque placerat auctor ultrices. Sed non congue leo. Fusce dignissim dictum est ac eleifend. Duis magna diam, sollicitudin dignissim metus ut, fringilla ornare odio. Sed sit amet ultricies lacus, nec rutrum odio.
2
+
3
+ Maecenas convallis faucibus lectus, ut faucibus odio imperdiet vitae. Aliquam consequat at velit sit amet lacinia. Ut convallis magna ut eros iaculis adipiscing. Fusce id scelerisque mauris. Fusce feugiat et dolor id lacinia. Aliquam auctor lectus non arcu lobortis condimentum. Donec malesuada congue condimentum. Phasellus at purus ut ante blandit gravida.
4
+
5
+ Fusce nec pulvinar nulla. Curabitur aliquet justo lectus, in tempor mi vehicula at. In iaculis, justo at facilisis volutpat, ante risus viverra est, eu tincidunt augue quam nec tellus. Quisque pretium facilisis enim, vitae euismod elit. Ut nec velit gravida tortor tristique imperdiet. Donec condimentum dolor risus, nec tincidunt libero iaculis a. Phasellus sodales rhoncus feugiat.
6
+
7
+ Vivamus gravida tortor et consequat vehicula. Quisque non aliquet neque. Pellentesque sodales nisl a magna scelerisque bibendum. Curabitur eget purus nec nisl elementum commodo quis a nunc. Duis facilisis pulvinar libero a mollis. Nam quis vulputate diam. In id urna venenatis, dapibus odio ac, lobortis risus. Donec non mauris at nisi posuere viverra sed at eros. Vivamus rhoncus semper erat, sit amet faucibus sapien dictum ut. Sed venenatis neque mauris, id rhoncus massa pretium vel. Integer gravida erat non velit fringilla, nec tincidunt sapien porta. Cras scelerisque fermentum enim a egestas.
8
+
9
+ Nunc dapibus ullamcorper scelerisque. Maecenas mollis arcu eget elit adipiscing varius. Cras hendrerit dolor nec leo feugiat, id blandit eros dignissim. Vivamus vehicula diam sit amet mollis egestas. Duis aliquet a dolor vitae tempus. Etiam placerat lectus at arcu scelerisque, nec mattis dolor pharetra. Proin ullamcorper libero at pellentesque bibendum. Pellentesque porta convallis elementum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
10
+
11
+ Maecenas ut ornare turpis, a lobortis lorem. Curabitur luctus mi nisi, ut lacinia odio molestie a. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed commodo molestie magna eget facilisis. Duis ut ante malesuada, vulputate ligula quis, hendrerit augue. Aliquam massa lectus, suscipit ac suscipit in, mattis vel urna. Ut id facilisis lacus. Proin feugiat nibh ac ligula viverra, sed dignissim est convallis. Fusce porta eu eros vel varius. Proin lorem nunc, tincidunt id nisi non, rhoncus sollicitudin lorem. Curabitur imperdiet est in placerat posuere. Cras pharetra eleifend neque, ut ultricies urna blandit quis.
12
+
13
+ Sed nec libero at tellus vestibulum dapibus eget id purus. Pellentesque at ipsum odio. Quisque vel tortor placerat, mollis velit condimentum, convallis odio. Pellentesque sit amet sollicitudin justo. Integer pulvinar bibendum blandit. Suspendisse vel sapien at eros tincidunt eleifend. Etiam non risus volutpat, hendrerit enim vitae, pretium arcu. Fusce ultrices nibh ipsum, vel imperdiet lacus varius nec. Phasellus a velit dictum mi aliquet ultricies.
14
+
15
+ Quisque nec lorem tempor, pharetra leo at, dictum nisl. Phasellus volutpat rutrum nulla, et porttitor magna semper et. Ut eu placerat urna. Aenean est neque, pretium non tellus eget, gravida sagittis lectus. Nunc lobortis aliquam dui, non accumsan orci viverra in. Nulla facilisi. Curabitur vitae sem lacus. Donec varius ac dolor non vulputate. Etiam vel ipsum nec tellus eleifend porta. Fusce vestibulum euismod bibendum. Aliquam vel felis tincidunt dolor bibendum convallis sit amet vitae odio. Mauris dapibus quam vitae pretium commodo. Ut sed enim quis risus fringilla fermentum nec eu nibh.
16
+
17
+ Sed a nulla viverra, vestibulum nulla quis, vestibulum mi. Praesent congue, mauris id ullamcorper ornare, purus risus scelerisque mi, a tempus tellus massa eu lacus. Nullam lacinia leo risus, id ullamcorper quam aliquam vitae. Maecenas id tortor elit. Nunc id leo libero. In aliquet neque ipsum, nec rhoncus elit volutpat at. Sed erat urna, dapibus quis posuere a, accumsan non mi. Sed id tempor arcu. Ut aliquam a lorem eu placerat. Donec cursus nec nulla nec luctus. Fusce nibh massa, rhoncus vitae ornare id, vestibulum at mi.
18
+
19
+ Fusce tincidunt sagittis tellus, at sollicitudin diam convallis nec. Pellentesque id metus placerat, consectetur justo vitae, ultrices orci. Aliquam id felis et magna ultrices tincidunt nec sed nisi. Donec id tincidunt sem. Sed porta, ante eget vehicula vulputate, ipsum mi hendrerit nunc, eget tempor mi magna sed nunc. Cras lacinia orci id justo bibendum, id vehicula felis posuere. Sed iaculis eu augue eu gravida. Duis semper est sit amet turpis iaculis fermentum. Nunc ut quam dignissim, pharetra elit ac, ultrices nisi. Donec sed aliquam mi.
20
+
21
+ Sed ut turpis erat. Nam molestie tortor odio, a sodales felis luctus vel. Mauris varius nisl a dui aliquet, sit amet congue nisl adipiscing. Nunc id est eget dolor sagittis sodales quis at dolor. Aenean malesuada tellus lobortis accumsan interdum. Nam eget metus eros. Aliquam ac placerat ante. Curabitur ut consectetur nisl. Nulla at elementum justo, quis facilisis mi. Morbi justo diam, tristique vel faucibus a, pharetra sit amet libero. Phasellus adipiscing sit amet libero nec rhoncus. Suspendisse potenti. Aenean venenatis arcu tempor orci suscipit, eu pharetra lorem consequat. Suspendisse nec quam malesuada, fringilla neque et, interdum lacus.
22
+
23
+ Duis eu vestibulum lectus. Vestibulum tincidunt sagittis nibh, nec fermentum sem sollicitudin vitae. Nam quis suscipit libero. Nam sollicitudin pretium ante, a molestie est semper sit amet. Vestibulum sollicitudin tortor quam, pharetra luctus nisi rutrum pulvinar. Nulla fringilla velit vitae ipsum consectetur pretium. Pellentesque ornare lorem sed dapibus viverra. Donec tellus leo, rhoncus hendrerit pharetra ac, mattis sit amet purus. Donec condimentum nunc nibh, in porttitor metus dapibus a. Ut ac erat leo. Mauris luctus ultrices est eget auctor. In volutpat iaculis neque quis consequat. Vivamus ut lorem eros. Mauris eu nibh in quam interdum luctus.
24
+
25
+ Curabitur tellus dolor, congue ut mattis id, ultrices at massa. Phasellus feugiat eu nibh ut bibendum. Nulla non sapien ut purus congue tincidunt at id massa. Nullam posuere tellus sit amet lectus dignissim venenatis. Quisque massa lorem, eleifend quis ullamcorper ac, feugiat at ipsum. Cras non iaculis mauris. Maecenas sit amet imperdiet ante. Pellentesque sed varius est, non consectetur purus. Vivamus luctus libero vel nisi imperdiet aliquet nec in est. Duis convallis lorem sit amet lacus venenatis posuere. Cras felis quam, pellentesque fringilla vulputate sit amet, interdum eu erat.
26
+
27
+ Phasellus laoreet interdum sem at dapibus. Integer nec metus sed nisi scelerisque imperdiet eget non nibh. Donec augue nisl, iaculis sed facilisis eu, vehicula et sapien. Praesent a scelerisque metus, in lobortis ligula. Cras ullamcorper, leo in interdum pharetra, erat eros adipiscing massa, vel rhoncus quam dolor in risus. Quisque quis libero sagittis, porta ipsum nec, iaculis eros. Nulla elementum libero mi, non sagittis leo lobortis a. Mauris sed nisl porttitor, accumsan quam quis, consequat enim. Aliquam nec congue orci, eu molestie erat.
28
+
29
+ Integer adipiscing bibendum mauris a interdum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Cras dignissim eros sed consequat bibendum. Sed sit amet adipiscing dolor, ut venenatis nisl. Phasellus vestibulum nibh vitae eros suscipit, sit amet suscipit lacus fringilla. Etiam tristique convallis est ac sodales. Fusce fringilla turpis sapien, nec eleifend turpis faucibus id. Aenean convallis sollicitudin convallis. Vivamus semper nibh est, porta auctor ante congue a. Curabitur laoreet fringilla tempor. Mauris tempus laoreet nulla sit amet pretium. Vestibulum eu erat vestibulum, eleifend magna in, condimentum leo. Etiam venenatis tristique erat, ac pharetra nisi vulputate sed.
30
+
31
+ Curabitur interdum ligula dui, volutpat dictum ante interdum at. Nullam fermentum justo ut felis euismod, quis dapibus lacus aliquet. Nam porta, quam ac cursus faucibus, elit lectus convallis elit, a ornare elit tellus id lorem. Nam porta pharetra lectus. Etiam at tortor et libero porta aliquam in ut justo. Phasellus vel varius elit, mattis porta mi. Vivamus at arcu imperdiet, semper libero sed, pharetra metus. Aliquam pharetra lectus in orci porta aliquam. Ut convallis eros lorem, in commodo elit auctor non. Curabitur sollicitudin bibendum neque, nec dapibus dui tempus vulputate. Proin eu risus nec eros sollicitudin dignissim vitae sit amet neque.
32
+
33
+ Maecenas sollicitudin consectetur eros, et auctor risus tincidunt a. Donec non justo at justo interdum consequat venenatis eget felis. Quisque auctor orci ut posuere euismod. Proin quis condimentum quam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean consequat felis vitae mi fermentum euismod. Pellentesque porta, massa at lobortis vehicula, odio lorem facilisis dolor, ac luctus massa sapien nec lacus. Morbi posuere scelerisque malesuada. Phasellus in diam eu ante sagittis ornare nec et arcu. Nullam nec orci sed dui tristique eleifend. Quisque risus massa, pretium sit amet elementum vel, luctus id velit. Curabitur eu vestibulum massa.
34
+
35
+ Vivamus interdum commodo aliquet. Fusce justo libero, volutpat id lectus ut, volutpat gravida felis. Donec ut lobortis nibh. Maecenas tempus imperdiet nunc non eleifend. Sed facilisis hendrerit aliquam. Cras nec pretium elit. Praesent nec metus egestas, euismod libero sit amet, imperdiet dolor. Aenean nec condimentum mauris. In hac habitasse platea dictumst. Nam egestas adipiscing venenatis. Donec feugiat faucibus auctor. Pellentesque nec euismod mi. Vivamus feugiat, libero a auctor bibendum, nisi nisl egestas mauris, sed porta dui mi vel urna. Ut sed dignissim tortor.
36
+
37
+ Nunc libero mi, condimentum quis magna at, hendrerit faucibus enim. Donec dictum molestie enim, in viverra libero viverra sed. Vestibulum aliquet molestie egestas. Donec dapibus enim sed lectus condimentum condimentum. Phasellus sed mauris lorem. Pellentesque sed neque dictum, faucibus velit ac, fermentum sapien. Mauris interdum libero non sapien dapibus tincidunt. Pellentesque est purus, facilisis vitae pulvinar et, tempor pharetra elit. Sed libero neque, rutrum eu tempor at, scelerisque in metus. Praesent eu laoreet erat, vitae ullamcorper odio.
38
+
39
+ Cras interdum aliquet sapien id interdum. Duis pharetra, urna sed aliquet dictum, risus ante imperdiet urna, eu gravida elit ipsum sed mi. Sed id vehicula nunc, in gravida elit. Sed sed consequat magna. Donec sit amet ipsum erat. Nam lacinia fermentum mauris quis posuere. Pellentesque in magna id mauris iaculis aliquet.
40
+
41
+ Sed eleifend sapien sed imperdiet placerat. Vestibulum nisi erat, vestibulum pharetra vestibulum ut, rhoncus sit amet erat. Praesent risus risus, elementum sit amet cursus non, iaculis in eros. Nam egestas, nibh et dapibus varius, mauris nibh faucibus orci, vitae lacinia nisi dolor quis velit. Ut at magna et nunc porta congue quis a sem. Nulla lacinia sit amet justo eget sollicitudin. Cras ac sem nec enim malesuada cursus. Vestibulum lobortis quam eget ante tristique, ac semper orci posuere.
42
+
43
+ Nullam sed ultricies neque. Donec convallis quam ac turpis scelerisque, quis pellentesque nibh feugiat. Aliquam erat volutpat. Sed vel blandit neque. Ut mattis sollicitudin semper. Nulla tincidunt auctor magna eu dictum. Donec vel sodales leo. Proin vitae egestas quam. Phasellus nec neque nisi. Nunc in enim sed lacus ultrices adipiscing. Proin lorem libero, cursus at tincidunt et, fringilla eu nibh. Sed vestibulum quam vel felis aliquam tincidunt.
44
+
45
+ Proin lacinia metus nec mauris auctor sollicitudin. Nulla adipiscing erat nibh, ut fermentum purus porta ac. Cras eget eros nunc. Vestibulum at lacus nulla. Phasellus vestibulum, leo ut facilisis tincidunt, risus sem iaculis neque, ullamcorper ullamcorper leo justo ut quam. Cras sollicitudin ante id tortor dictum venenatis. Morbi fermentum ut dolor ac malesuada. Phasellus adipiscing dolor eget tortor lacinia posuere. Aliquam erat volutpat. Donec feugiat tincidunt eleifend. Morbi sed neque molestie, iaculis felis vitae, consectetur sem.
46
+
47
+ Donec adipiscing iaculis scelerisque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque eget sollicitudin turpis. Aliquam et turpis at magna faucibus molestie. Etiam orci elit, fermentum nec laoreet sed, pretium sed ante. Ut nec neque ultricies, dictum lacus vitae, molestie nunc. Vivamus ut mauris imperdiet, gravida dui in, porttitor mauris. Nullam consequat lectus sed erat volutpat, eu interdum eros posuere. Fusce nisi sem, condimentum ut pellentesque a, laoreet quis magna. Donec nisl ipsum, convallis non orci et, adipiscing venenatis urna. Nunc justo quam, luctus non dictum eu, ultrices eu magna.
48
+
49
+ Nulla in tellus id ante sagittis ullamcorper ut id mauris. Curabitur faucibus felis eleifend tempor lacinia. Duis sagittis mattis elit, in luctus lectus dictum eu. Proin a arcu sagittis, luctus risus et, ultrices lectus. Etiam quis scelerisque tellus. Nunc mollis dolor in cursus congue. Nunc vitae imperdiet tortor. Cras volutpat mi ut porta condimentum. Quisque eleifend posuere bibendum. Phasellus scelerisque, diam non suscipit rutrum, nibh lacus malesuada nisl, et aliquam tellus magna at metus. Quisque in enim eu urna egestas bibendum. Proin fermentum scelerisque turpis, ac tempus enim porttitor non. Nullam ut neque eget diam consequat iaculis non a quam.
50
+
51
+ Mauris sit amet feugiat nisl. Mauris faucibus libero enim, at sagittis metus suscipit eget. Ut sed vestibulum enim, id ornare elit. Ut accumsan justo nec massa vehicula, nec egestas dui sodales. Suspendisse eleifend eros sit amet cursus pharetra. Nam porta tempus euismod. Vivamus bibendum massa in aliquet adipiscing. Duis nec tincidunt turpis, ac euismod velit. Quisque ante lacus, molestie non adipiscing in, consequat vitae tellus. Nam non elit quis turpis vehicula feugiat sagittis et dui. Fusce ultricies dapibus porttitor.
52
+
53
+ Integer adipiscing cursus iaculis. Praesent a odio massa. In sodales ipsum at diam pulvinar accumsan. Mauris a magna volutpat, lobortis ligula et, interdum tellus. Aliquam fermentum quam feugiat ullamcorper eleifend. Suspendisse eu convallis risus, vitae fermentum erat. Vivamus tincidunt eget lacus porttitor cursus. Mauris lobortis aliquam urna ac viverra. Donec sagittis dolor dolor, ac vulputate lectus tempor id. Donec fringilla quis erat ut tempus. Curabitur et metus eget dolor aliquet eleifend ut eget leo. Integer eleifend, felis in auctor feugiat, neque purus pharetra dolor, pulvinar dignissim diam mauris sit amet quam. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
54
+
55
+ Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed ultricies est sit amet dignissim congue. Donec ultrices tempor nunc ut viverra. Proin egestas mattis risus eu pretium. Nulla auctor neque nec est sodales imperdiet. Suspendisse pulvinar convallis urna, sed laoreet nisi tincidunt vitae. Nulla lectus nibh, venenatis sit amet est ac, lacinia varius elit. Morbi consectetur dignissim mauris. Duis non blandit metus. Suspendisse potenti.
56
+
57
+ Pellentesque id lacus ac leo vulputate ultricies a id nisl. Etiam a dui mauris. Praesent sit amet posuere magna. Aenean vel metus volutpat, aliquet quam ut, semper mi. Nulla facilisi. In sit amet libero aliquam, tincidunt justo nec, tincidunt sem. Pellentesque ullamcorper velit viverra dui euismod, id dictum nisi facilisis. Aliquam est augue, convallis sit amet pulvinar et, iaculis consectetur sem. Mauris vitae odio sit amet diam vestibulum tincidunt luctus sed tellus. Maecenas lacus leo, gravida a tincidunt ut, pretium sit amet eros. Donec lobortis viverra dolor, ut cursus metus sodales eget. Nunc viverra volutpat nibh, a cursus velit rhoncus luctus. Nulla tempus dictum posuere. Nullam ornare varius orci ac scelerisque. Nam dapibus neque sed rutrum tincidunt.
58
+
59
+ Duis in bibendum felis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur mattis eros ut placerat aliquet. Vestibulum laoreet quis enim non fermentum. Morbi sollicitudin rhoncus eros ut molestie. Vestibulum at elit at enim elementum convallis id posuere erat. Vivamus massa felis, porta sit amet nisi nec, scelerisque adipiscing diam. Fusce sodales volutpat ultrices. Pellentesque cursus placerat diam vel laoreet. Curabitur dignissim urna blandit dignissim blandit.
60
+
61
+ Duis sed urna dignissim, pretium ante nec, tristique diam. Mauris non libero tristique, iaculis purus a, cursus ligula. Maecenas gravida, urna quis suscipit luctus, nunc elit blandit lorem, eget interdum augue purus at libero. Sed velit nisl, gravida quis sem quis, interdum gravida lacus. In hac habitasse platea dictumst. Pellentesque adipiscing massa ac augue mollis, sit amet aliquam nisi ornare. Ut porta arcu vitae laoreet blandit. Fusce pretium sagittis tristique. Suspendisse porttitor nisi lorem, sed hendrerit lorem rhoncus sed. Sed id est nec purus eleifend faucibus. Maecenas ac purus nec odio vulputate adipiscing. In eu risus varius, venenatis arcu et, commodo sem. Suspendisse in massa a dolor porttitor vehicula vel ac mauris.
62
+
63
+ Donec id lacinia libero. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Quisque in luctus felis. Maecenas ut luctus justo, id accumsan purus. Maecenas et ultrices libero. Donec vel elit ultrices, luctus nunc elementum, semper felis. Nullam erat dolor, varius sit amet tortor in, egestas vestibulum purus.
64
+
65
+ Nulla feugiat nec odio sed viverra. Morbi suscipit nisl id justo tempus, quis condimentum tortor vulputate. Ut tempus aliquam augue sed blandit. Donec quis malesuada nunc, dapibus tempus urna. Suspendisse sem turpis, tristique vitae elementum ac, congue quis purus. In ac pharetra sapien, in accumsan quam. Ut bibendum urna ac nulla aliquam volutpat. Phasellus ac porttitor turpis, ut mollis nibh. Praesent varius sem nisi, et pulvinar urna imperdiet condimentum. Vestibulum consectetur vitae neque quis semper.
66
+
67
+ Duis turpis urna, euismod eu ante quis, iaculis feugiat mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi aliquam a nisi sit amet iaculis. Morbi lorem mi, accumsan et dui sed, posuere aliquam erat. Aliquam tempus justo quis elit dapibus, vel venenatis nisl luctus. Sed pretium mollis nisl, vel facilisis urna egestas at. Ut iaculis tincidunt lorem sit amet consectetur. Aenean laoreet dapibus diam non mattis. Quisque non bibendum metus. Phasellus tempor metus dui, vel tempus lacus adipiscing quis.
68
+
69
+ Aliquam rutrum semper quam, ut consectetur lorem vulputate nec. Nam non felis arcu. Proin sem ante, consectetur ultrices lacinia et, malesuada vel lectus. Sed porttitor arcu nibh, id fermentum mi consectetur quis. Duis at tincidunt metus. Ut porta, augue fermentum ornare elementum, nisl lectus mattis dolor, sit amet sollicitudin dolor nunc a velit. Morbi vitae enim ultrices, ullamcorper magna et, iaculis orci. Morbi vitae tincidunt leo. Morbi ligula ligula, pretium vel nunc nec, congue volutpat lectus. Pellentesque libero lacus, condimentum nec odio sit amet, faucibus ultricies nulla. Aenean sed sapien eros. Curabitur eros erat, lacinia sed massa nec, blandit suscipit turpis. Quisque ipsum dui, fringilla vel auctor id, varius at mauris. Praesent velit ligula, ullamcorper vitae luctus at, lacinia eget nunc. Nam porttitor justo dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
70
+
71
+ Integer vehicula orci molestie molestie aliquet. Duis dolor libero, hendrerit posuere dolor ac, posuere scelerisque libero. Nullam non sapien pellentesque, consectetur magna at, aliquam sem. Etiam ac enim porta, suscipit risus non, accumsan augue. Suspendisse a fermentum libero, sed feugiat nibh. Integer interdum lectus non arcu feugiat, vitae tempus turpis aliquet. Aliquam ullamcorper non libero eu luctus. Cras nibh quam, hendrerit vel elit eu, sagittis facilisis leo. In hac habitasse platea dictumst. Etiam varius nisl sed adipiscing tincidunt. Morbi pulvinar in ligula eu congue. Curabitur nec blandit tortor. Nunc odio justo, laoreet a felis nec, gravida tempor mauris. Praesent consectetur malesuada vestibulum. Maecenas orci massa, laoreet ac augue quis, cursus gravida diam. Aliquam ultrices dignissim lobortis.
72
+
73
+ Ut varius odio sed auctor eleifend. Aliquam sit amet porta felis. Nullam pharetra commodo tincidunt. Sed imperdiet condimentum metus eget vulputate. Proin sollicitudin, diam vitae vehicula rutrum, lorem arcu tempor urna, eget egestas magna erat eu sapien. Phasellus in feugiat nulla. Nunc a vehicula odio. Donec congue leo a risus accumsan ultricies. Pellentesque ultricies et velit non condimentum.
74
+
75
+ Curabitur euismod risus vitae tristique posuere. Sed vel semper risus. Mauris non erat condimentum, dignissim justo quis, hendrerit justo. Sed imperdiet erat dolor, at mollis nulla rhoncus vel. In eget rhoncus justo. Etiam pharetra dignissim ipsum, quis ultrices nisi ullamcorper non. Aliquam id placerat eros, vel feugiat nunc. Aliquam id tellus porttitor, molestie lectus in, adipiscing tellus. Aenean rhoncus a quam nec pharetra. Aenean auctor molestie tristique. Aliquam eu lacinia velit.
76
+
77
+ Aliquam semper nisl in metus pellentesque, tincidunt tempus leo sodales. Proin luctus massa non erat lacinia tincidunt. Etiam eu dolor quis libero sagittis scelerisque pretium sed erat. Morbi odio justo, blandit id mauris vel, adipiscing posuere turpis. Quisque in massa accumsan, dapibus ipsum et, venenatis est. Praesent sit amet vulputate dui, ut suscipit mi. Quisque posuere lacus a nulla sollicitudin, a placerat ligula interdum. Praesent eget leo a nibh rhoncus lacinia. Duis ultrices nulla in tempus lobortis.
78
+
79
+ Sed vitae vestibulum felis. Nullam suscipit accumsan dui, a scelerisque libero interdum sit amet. Curabitur sit amet magna rhoncus, imperdiet orci commodo, volutpat leo. Mauris suscipit, felis rhoncus tempus placerat, elit dui porta nulla, in viverra purus enim sit amet mi. Integer porta felis ac metus vulputate, id congue mi ultricies. Vestibulum dictum suscipit augue, vitae ornare neque viverra a. Aliquam sit amet urna at nibh consequat faucibus. Integer fringilla rutrum nunc sit amet iaculis.
80
+
81
+ In in est et metus lacinia fringilla a vel diam. Duis convallis ligula gravida purus vestibulum commodo. Aliquam a orci ut nunc pulvinar adipiscing at vitae metus. Phasellus ac rhoncus nisl, et cursus nisi. Aliquam suscipit neque eget lacinia porta. Nunc eget quam in lorem molestie elementum sed et lectus. Maecenas vel consequat nibh. Praesent ultrices risus non ligula posuere scelerisque. Vestibulum at felis vitae tellus egestas varius sit amet vel diam. Aliquam feugiat leo diam, quis mollis erat convallis non.
82
+
83
+ Praesent et tincidunt augue, ac tempus dolor. Suspendisse at ultricies quam. In luctus porta tempor. Duis gravida urna lectus, in pharetra nisl tempus in. Curabitur et enim a urna bibendum tristique. Suspendisse ultrices vitae quam id consectetur. Sed et scelerisque elit. Vestibulum hendrerit pharetra velit, ut vulputate elit fringilla ac.
84
+
85
+ Aliquam vel interdum nisl. Morbi ut odio a massa tincidunt rutrum. In fermentum justo fringilla imperdiet dapibus. Suspendisse potenti. Morbi convallis ultrices nulla, eu imperdiet elit vehicula in. In in accumsan quam. Donec risus mauris, volutpat eget nibh mattis, aliquet congue lorem. Donec nec nibh ac nisl placerat volutpat rhoncus ut massa. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent tristique nec ligula ac iaculis. Aenean gravida erat ut dolor mattis dignissim. Nullam volutpat, dui quis aliquet adipiscing, ipsum ligula tincidunt erat, at mattis lectus velit id lacus.
86
+
87
+ Nam in augue eget mauris scelerisque hendrerit id scelerisque diam. Nulla ut porttitor massa. Suspendisse scelerisque non lectus sit amet tristique. Nullam rhoncus fringilla dictum. Morbi eleifend blandit egestas. Quisque dictum odio sit amet sodales mattis. Nulla eu augue id elit ultricies varius non eu odio. Sed suscipit, metus eu dapibus rhoncus, leo elit dignissim purus, ac commodo mi ipsum nec tortor. Proin quis porttitor nisi, et suscipit nisl. Nullam tincidunt nisi nisi, vel tempor turpis lacinia a. Nulla semper felis nunc, sit amet molestie enim volutpat ut. Quisque lacinia ligula at dui porttitor, sed venenatis libero laoreet. Aenean convallis eu nibh at rutrum. Mauris id gravida elit, et molestie dui. Sed sed fringilla massa. Aliquam erat volutpat.
88
+
89
+ Nulla at arcu adipiscing, dictum dui quis, tincidunt mauris. In libero nisl, tempor in molestie sed, laoreet sit amet augue. Morbi at hendrerit elit. Etiam imperdiet vulputate hendrerit. Nunc magna ipsum, vulputate non dictum sed, commodo vel neque. Proin ultrices quam diam, vitae condimentum sem lacinia eget. Nulla facilisi. Pellentesque venenatis velit eu neque pellentesque, ac fermentum massa rutrum. Fusce mollis orci lorem, non ultrices leo volutpat eu. Vestibulum dictum viverra sem, feugiat convallis ante sodales sit amet. Interdum et malesuada fames ac ante ipsum primis in faucibus. Suspendisse egestas vitae neque sit amet sodales.
90
+
91
+ Sed in elementum neque, et interdum ipsum. Cras non libero tempor, venenatis ligula eu, porttitor massa. Donec varius orci in neque elementum placerat. Ut tristique fringilla semper. Nam vel ligula nunc. Pellentesque consectetur augue nec vestibulum scelerisque. Donec purus nisl, feugiat fringilla tellus eu, feugiat tempus massa.
92
+
93
+ Cras tempus est a erat sodales, sit amet lacinia quam elementum. Vestibulum sed justo eget elit adipiscing ultricies. Duis ultricies diam at fringilla tristique. Praesent faucibus fermentum enim, accumsan aliquam est dictum vel. Quisque suscipit interdum est et consequat. Maecenas volutpat, sapien eu porttitor interdum, dolor elit egestas neque, adipiscing sagittis nunc turpis vel odio. Cras at aliquam magna, a ornare lectus. Fusce vel commodo tortor. Sed non sodales justo. Quisque a fermentum eros, ac interdum diam. Fusce consectetur auctor lectus quis luctus. Aliquam ut leo eu tortor lacinia feugiat. Ut congue egestas massa, eget elementum lorem lacinia ut. Phasellus bibendum velit vel leo commodo, in aliquam mi aliquam. Praesent non scelerisque lectus, id iaculis augue. Sed congue magna purus, hendrerit lobortis eros volutpat ut.
94
+
95
+ Integer ultricies, eros vitae tempus tempus, odio dolor dictum neque, sed congue libero quam quis eros. Vestibulum sed purus sit amet turpis fringilla porttitor ut sodales magna. Donec sagittis ut quam quis condimentum. Donec vehicula eros sed velit consectetur auctor. Sed quam ipsum, tincidunt in consequat at, blandit eu dolor. Vestibulum tempor odio eget quam dictum, sit amet cursus mi fringilla. Ut eu nisi in felis fermentum volutpat ac id elit. Vestibulum mi ligula, tincidunt quis dignissim vitae, viverra id orci. Nullam semper eros eget varius mattis. Nullam pellentesque pulvinar neque posuere eleifend. Vivamus a venenatis elit. Sed faucibus consectetur accumsan. Curabitur sit amet urna nunc. Aliquam feugiat nibh sit amet tincidunt ultricies. Suspendisse eu lacinia diam, pretium tincidunt est. Ut vel commodo purus, a mollis elit.
96
+
97
+ Mauris vestibulum lorem eget tempus consectetur. Nulla adipiscing tempor egestas. Vivamus lorem sem, vulputate quis mauris non, pulvinar pulvinar odio. Quisque ac ante non diam mollis luctus. Quisque pharetra, metus a interdum venenatis, velit sapien elementum tellus, ac congue lorem sem nec lectus. Curabitur sollicitudin, sem eu faucibus ultrices, purus eros elementum eros, vitae eleifend nibh nulla rutrum quam. Donec pulvinar arcu a urna tempus, et volutpat enim mattis.
98
+
99
+ Ut elementum nisl at libero condimentum, ut placerat nunc posuere. Duis dictum est ligula, eu lacinia felis feugiat id. Aenean nec pharetra justo. Duis dignissim, urna vitae tristique tincidunt, tortor libero lacinia augue, sed gravida ante dui vitae erat. Quisque convallis sit amet diam sit amet congue. Phasellus ut sapien ante. Sed aliquet nibh in tellus egestas scelerisque.
100
+
101
+ Nam tempus felis libero, et dignissim augue rutrum nec. Pellentesque vel aliquet neque, sit amet volutpat turpis. Vestibulum eu magna nisl. Integer laoreet ullamcorper dictum. Fusce tristique, erat ut viverra condimentum, ligula justo vulputate sapien, nec viverra lorem lorem eu massa. Nulla porta orci ipsum, ac pretium neque varius nec. Nunc sollicitudin mattis urna eget tempor. Integer porta vestibulum sapien at lacinia. Vestibulum vel nibh et magna vestibulum ullamcorper sit amet eu nisi. Donec euismod vestibulum placerat. Aliquam erat volutpat. Etiam tincidunt massa at leo pharetra, id luctus odio interdum. Interdum et malesuada fames ac ante ipsum primis in faucibus.
102
+
103
+ Aenean euismod, lacus non porttitor pellentesque, nibh odio sollicitudin lorem, eu viverra orci est ut nunc. Duis rutrum fermentum luctus. Fusce lacinia euismod feugiat. Aenean ornare posuere dui, eu iaculis arcu semper a. Cras vitae libero non metus scelerisque viverra. Nunc sed elementum lorem. Suspendisse vel consectetur nulla. Aenean tempor arcu sapien, ut elementum mauris auctor in. Proin at aliquet velit. Nullam sollicitudin pretium risus, at porta lectus malesuada eget.
104
+
105
+ Cras cursus sapien eu tellus interdum, a vehicula dolor pulvinar. Integer volutpat purus tristique placerat volutpat. Curabitur aliquet, purus id rhoncus volutpat, tellus nunc commodo tellus, nec malesuada metus neque non leo. In lacus orci, accumsan vel lectus porttitor, venenatis ultricies dolor. Etiam adipiscing nec nisi non luctus. Nulla dictum mi id luctus scelerisque. Quisque dapibus tellus eu tortor condimentum venenatis. Vivamus interdum, risus ut aliquet egestas, augue purus ornare enim, vitae aliquam dui eros ut nulla. Fusce egestas tortor nec sem fermentum ornare. Duis fringilla et eros sed sollicitudin. Sed eu justo ornare, imperdiet erat at, egestas mauris. Etiam sed aliquet nibh. Vestibulum facilisis sem ac nunc tincidunt, non tempus lectus dictum.
106
+
107
+ Suspendisse sagittis iaculis elit, ut feugiat nisi. Sed ac magna sed mauris ultrices rhoncus sit amet suscipit est. Fusce faucibus tellus augue, non luctus ante lacinia a. Vestibulum nec lectus tellus. Sed dapibus, eros in volutpat dictum, lacus magna imperdiet ligula, eu auctor ligula orci in nunc. Nulla dapibus eros velit, eu accumsan justo interdum et. Aenean pretium ut nisi quis posuere. Donec libero turpis, pulvinar a diam et, dictum scelerisque tellus. Duis aliquet neque vestibulum, ultrices orci sit amet, facilisis dui. Aenean non nulla mi. Fusce ac quam consectetur, ullamcorper nisi eget, fringilla orci. Aliquam vitae sem vel sem pellentesque tincidunt.
108
+
109
+ Vestibulum volutpat turpis at blandit condimentum. Cras laoreet nec quam quis congue. Donec id nunc sed dolor ultricies fringilla. Nunc rutrum neque sit amet aliquam auctor. Nulla vitae odio eros. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce gravida mauris nec eleifend laoreet. Curabitur gravida ut nunc vel egestas. Mauris vitae leo tempus est consequat aliquam vel nec libero. Phasellus sed pharetra tellus, eget mollis lacus. Mauris feugiat lorem augue, at elementum justo tincidunt quis. Nam in enim ipsum. Cras in leo erat. Cras non libero placerat, dapibus eros consequat, facilisis urna. Suspendisse a tortor mattis, cursus lorem vitae, rhoncus felis. Nulla at varius massa.
110
+
111
+ Morbi id mauris massa. Nullam auctor vehicula pharetra. Vivamus vehicula semper nibh, in tincidunt augue. Etiam eu fermentum eros. Proin a lacus iaculis augue vestibulum vestibulum. Vestibulum malesuada libero dictum metus lacinia feugiat. Maecenas sit amet felis enim. Aliquam lacinia, felis vel malesuada elementum, arcu nulla dignissim nulla, ac interdum tellus diam et arcu. Sed rutrum cursus consequat. Nullam aliquet metus at ligula pellentesque gravida. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras tristique, est et aliquam lobortis, nisi sem vulputate eros, eu gravida tortor sapien at erat.
112
+
113
+ Ut congue sapien vitae tristique ornare. Donec consequat auctor congue. Nam ac magna ultricies, facilisis dolor ut, feugiat ipsum. In vestibulum, tortor tempus sollicitudin ullamcorper, nunc turpis facilisis nibh, a iaculis dui sapien id lorem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque ultrices, tellus in pharetra vestibulum, leo mi tincidunt velit, sit amet imperdiet leo mi at mauris. Ut magna nibh, ullamcorper quis augue sed, sagittis auctor justo. Donec dignissim dui eu tincidunt scelerisque. Etiam interdum lectus a laoreet pharetra. Quisque eu lorem nec eros commodo sagittis. Nam vitae lorem nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam molestie rutrum tempus. Pellentesque nisi metus, bibendum vel suscipit non, tristique tempus tellus. Vivamus interdum mauris sit amet eleifend adipiscing. Donec placerat, neque et fermentum bibendum, magna diam aliquam orci, ut blandit mauris risus id enim.
114
+
115
+ Aenean rutrum, velit eu volutpat gravida, massa risus dapibus lorem, ac condimentum sapien libero at magna. Ut nec commodo diam. Nunc pharetra in mauris ac congue. Pellentesque semper vulputate massa eget accumsan. Fusce mi ipsum, convallis ut arcu non, vehicula tincidunt lectus. Duis porttitor velit cursus felis convallis mattis. Vivamus ornare dolor eu risus lacinia, vitae pellentesque ligula eleifend. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nunc volutpat rhoncus ligula sit amet vestibulum.
116
+
117
+ Donec vestibulum erat non urna cursus, a blandit ligula mollis. Vestibulum id ipsum nec nibh blandit dictum. Suspendisse vitae leo pulvinar, convallis sem at, euismod felis. Praesent rhoncus nisi nulla, et pellentesque purus convallis non. Integer condimentum nisi non tellus tempor, nec porttitor lacus laoreet. Integer porta sodales turpis quis imperdiet. Integer nec interdum libero. Nam lobortis mi non egestas interdum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean elementum ligula a sodales dapibus. Donec sed semper ligula. Aenean aliquam dolor ut lectus pellentesque congue.
118
+
119
+ Curabitur placerat turpis eget lacus blandit ornare. Pellentesque rutrum at felis vel fermentum. Quisque ac tortor et ligula aliquet rutrum. Praesent tempus felis vehicula turpis imperdiet vehicula. Cras convallis vitae velit eu egestas. Phasellus gravida quis felis vitae pretium. Pellentesque eu aliquam nibh. Sed pellentesque rhoncus adipiscing. Curabitur eleifend tristique nunc sagittis pretium. Vivamus fringilla dictum quam, in consectetur magna dictum tempor. Curabitur nibh nibh, euismod eget urna vitae, convallis dictum nunc. Etiam adipiscing, turpis non tincidunt posuere, est turpis convallis erat, sit amet rhoncus quam felis sed nunc. Vivamus ornare, ante quis tristique faucibus, leo felis posuere justo, vitae facilisis sem sem vitae risus. Suspendisse blandit porttitor aliquet. Aliquam euismod diam non tortor interdum, elementum luctus augue sollicitudin. Mauris at est tellus.
120
+
121
+ Quisque eget nibh dignissim, interdum velit ut, mattis justo. Nam condimentum vel urna eget ultricies. Integer fermentum nisl non sapien lacinia, in egestas turpis venenatis. Integer consectetur venenatis suscipit. Cras mauris eros, ornare sagittis vestibulum eu, euismod sit amet mauris. Praesent quis lorem vitae nunc vestibulum luctus. Aenean iaculis, lorem eu accumsan consequat, libero nisi suscipit velit, vitae sagittis est augue pulvinar lacus. Integer eu augue eu sapien porttitor tempus vitae ut odio. Praesent vestibulum sodales accumsan. In mattis sem nibh, at hendrerit mauris gravida nec.
122
+
123
+ Nulla ut dolor sed lacus facilisis mattis. Suspendisse condimentum, tortor in cursus tempus, nunc turpis pretium massa, quis mattis libero nisl sed elit. Vestibulum porttitor risus quis lectus laoreet, quis facilisis dui aliquam. Phasellus ornare consectetur tortor ac pulvinar. In semper consequat orci a cursus. Aliquam viverra justo et velit eleifend dignissim. Vestibulum sit amet felis commodo, pulvinar justo sed, lobortis ipsum. Curabitur cursus elit purus, et sollicitudin nunc hendrerit sed. Donec dictum bibendum metus, nec tincidunt elit eleifend at.
124
+
125
+ Aliquam tempus odio eu tellus adipiscing bibendum. Proin et turpis et leo dictum ultricies. Phasellus ullamcorper nulla purus, eu vestibulum quam malesuada id. Nunc a turpis blandit lacus pharetra interdum. Sed ac felis vitae dui rhoncus pellentesque. Mauris sollicitudin nibh sit amet auctor suscipit. Morbi euismod, quam sit amet rutrum cursus, enim nisl pulvinar risus, ullamcorper aliquam lorem mauris commodo lorem. Vestibulum sodales aliquam enim ut interdum.
126
+
127
+ Donec nisl sem, sollicitudin malesuada blandit non, dignissim eu mi. Sed erat dolor, tincidunt eu ultrices eget, pretium vitae erat. Maecenas neque lorem, auctor et eros id, venenatis ultrices tortor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Phasellus tempor imperdiet velit, at varius leo tristique a. Nunc nibh orci, scelerisque quis ligula non, aliquam mollis tellus. Sed ac tempor orci. Integer at erat eget lectus luctus laoreet eu vel lorem. Mauris malesuada orci eu augue dignissim rhoncus. Nullam placerat diam mauris, ac interdum sapien condimentum id. Nullam interdum leo mi, id ultrices ligula venenatis pharetra. Cras a nisi mi. Vivamus at libero iaculis, dictum metus vel, aliquet diam. Suspendisse vel gravida ante, eu ultricies dolor.
128
+
129
+ Nam posuere condimentum risus sed pretium. Phasellus at risus neque. Nullam nec enim ultricies, dictum massa ac, auctor eros. Proin a quam arcu. Proin non lectus mattis, tincidunt elit quis, venenatis dui. Nam non elit tincidunt justo tempus scelerisque. Maecenas blandit orci eu scelerisque fringilla. Fusce convallis neque et porta venenatis. In vel est vitae nisl tempor fringilla. Duis venenatis nibh ut nisi volutpat varius. Donec lacinia sapien eros, et convallis ante faucibus eget. Nunc auctor ipsum risus, eget auctor diam volutpat vitae.
130
+
131
+ Fusce vel velit elementum, pretium neque id, aliquam velit. Donec eu ornare quam. Fusce ut ultrices libero, in rutrum purus. Integer tincidunt id ante scelerisque egestas. Sed turpis nunc, faucibus id viverra et, vulputate et eros. In tempor, ligula ut rhoncus rutrum, purus leo ultricies nibh, ultricies congue est enim euismod sapien. Morbi eget augue est. Nam vitae nulla pretium, ornare orci quis, porttitor odio. Sed vulputate pretium ante, at placerat lacus iaculis nec. Aliquam cursus diam a lobortis venenatis. Nunc in dolor ut elit mollis elementum posuere in sapien. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque arcu risus, venenatis eu elementum sit amet, vestibulum vel sem. Nam id ligula purus. Vestibulum ultricies metus arcu, nec laoreet orci adipiscing non.
132
+
133
+ Cras ut nisl pellentesque, sagittis mi vitae, ornare ipsum. Ut mattis mauris arcu, ac sagittis massa convallis at. Aenean enim metus, venenatis vel lacus sed, congue ultricies ante. Mauris aliquam adipiscing leo, sit amet tristique lacus adipiscing eget. Fusce tincidunt ultrices enim, nec varius ante cursus non. Maecenas ullamcorper bibendum congue. Ut interdum bibendum sodales. Sed urna sapien, gravida congue tempus eu, sollicitudin ut risus. Fusce ut libero felis. Vestibulum eget lectus semper, iaculis lorem ut, tristique diam. Curabitur in euismod risus. Phasellus risus sapien, tempor et sapien nec, suscipit consequat tortor.
134
+
135
+ Ut tellus odio, dapibus quis scelerisque in, ullamcorper quis diam. Fusce nec magna a erat consectetur dictum sed vel urna. Nunc eget libero quis augue eleifend molestie. Vivamus sed tempor metus. Sed ultrices vestibulum lobortis. Vestibulum vitae eros vitae nunc eleifend iaculis ornare posuere ante. Suspendisse eleifend vel ligula suscipit imperdiet. Aliquam ultrices elementum mi et euismod. Duis dapibus mollis risus, sed dapibus ipsum mattis auctor. In ac ipsum velit. Mauris vestibulum, nisi vel sollicitudin aliquet, ante metus congue urna, ac dignissim nulla urna dictum dui. Etiam commodo auctor enim, eget ullamcorper sem adipiscing sit amet. Sed vel consectetur sapien, ac suscipit nisi. Donec cursus id tellus ac feugiat. Aliquam nulla diam, elementum eget ligula sed, interdum vulputate nisl. Suspendisse dapibus risus eget ipsum ullamcorper consectetur faucibus malesuada lacus.
136
+
137
+ Vestibulum nec dolor elementum, suscipit dui at, sollicitudin erat. Vivamus id magna nibh. Curabitur cursus ac dui vitae bibendum. Integer quis arcu a sem rutrum ultricies. Etiam non justo eleifend, lacinia eros a, vulputate metus. Nam sed vestibulum eros, at semper nibh. Aliquam arcu nisi, suscipit in lacus nec, interdum consectetur sem. Praesent at lectus sed metus fermentum tristique. Nunc a ultricies mi. In arcu augue, vehicula ut cursus in, consectetur sit amet lacus. Maecenas placerat et est vitae elementum. Nam fermentum enim vel scelerisque semper.
138
+
139
+ Duis consectetur mi metus, quis interdum libero mattis non. Fusce ut commodo purus. Fusce interdum lorem eu arcu tristique iaculis. Nunc tempor pellentesque lobortis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras fermentum nibh aliquam nulla feugiat, vel lacinia quam dignissim. Integer suscipit feugiat ipsum eget volutpat. Sed non laoreet erat. Suspendisse potenti. Phasellus eget neque nisl. Mauris in orci risus. Fusce iaculis tincidunt tortor non eleifend. Duis egestas ornare augue quis pretium. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas dapibus est a volutpat condimentum. Nulla cursus id eros suscipit ullamcorper.
140
+
141
+ Pellentesque justo lectus, auctor a vehicula eget, facilisis sit amet massa. Vestibulum at massa ac ligula sollicitudin feugiat quis in mi. Morbi ac ultricies sem. Aliquam ac rutrum felis. Quisque viverra tortor sed arcu auctor, ac convallis libero pulvinar. Morbi vel lacus nulla. Fusce eget felis sodales, eleifend ante posuere, hendrerit purus.
142
+
143
+ Curabitur id felis mauris. Donec id semper lacus. Aenean pulvinar laoreet nibh a suscipit. Proin posuere magna sit amet nisi tincidunt mollis. Praesent tincidunt nisi ut tortor faucibus semper. In pellentesque diam a turpis sagittis faucibus sagittis eget sem. Nunc pretium nisl et enim facilisis, quis adipiscing ante convallis. Ut nec augue tempus, sollicitudin urna semper, volutpat nisi. Nulla eget ultricies quam.
144
+
145
+ Suspendisse feugiat tincidunt fermentum. Ut ultrices quam a augue varius laoreet. Nullam viverra lectus a dolor elementum blandit. Duis mollis vel augue at hendrerit. Sed et porttitor risus. Nullam nisi sem, pellentesque ac accumsan at, facilisis ac odio. Duis a augue ornare, fermentum ante non, consequat enim.
146
+
147
+ Phasellus posuere quam nec erat faucibus porta. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras semper justo nulla, in vestibulum nisi porta eget. Donec sit amet erat accumsan, fermentum erat venenatis, tincidunt eros. Morbi dolor sem, faucibus sit amet orci vitae, cursus aliquam odio. Fusce lectus nulla, laoreet in odio consectetur, pellentesque mattis nulla. Mauris vel eleifend lectus, luctus porttitor nisi. Ut eleifend mauris nunc, vel ornare nulla mollis non. Donec aliquet porta elit, suscipit pretium magna lacinia quis. Nam eu tempor odio.
148
+
149
+ Aliquam eleifend arcu ac posuere pretium. Quisque id dolor magna. Fusce pellentesque dolor sed arcu feugiat elementum. Nulla non rutrum neque. Proin fermentum nisi a ante euismod consequat. Integer ornare lobortis neque eget pharetra. Donec eu aliquet augue, eu imperdiet tortor. Pellentesque felis orci, consequat non tortor accumsan, accumsan congue tellus. Quisque at diam at purus posuere imperdiet. Nam congue, tellus a porttitor rutrum, eros lorem rhoncus ante, et egestas purus erat in ipsum. In hac habitasse platea dictumst. Vestibulum faucibus ac felis sit amet euismod. Pellentesque nec urna in mauris pulvinar facilisis. Nulla sollicitudin aliquam urna. Suspendisse varius tincidunt ante, sed elementum enim faucibus quis.
150
+
151
+ Ut ullamcorper est non imperdiet lacinia. Nunc elit magna, scelerisque pulvinar cursus in, pulvinar vel orci. Mauris lobortis tortor sed egestas vehicula. Duis scelerisque vestibulum porta. Maecenas id nulla at magna adipiscing fermentum in vitae nisl. Sed euismod semper arcu a convallis. Nulla viverra tellus diam, ac malesuada metus molestie ullamcorper. Etiam tincidunt magna non ultrices suscipit. Aenean imperdiet at erat in volutpat. Phasellus gravida a eros quis tristique. Aenean ipsum enim, ultrices id congue non, fermentum eu magna.
152
+
153
+ Mauris gravida euismod tellus, in feugiat lorem vestibulum nec. Praesent ut fringilla justo. Phasellus laoreet in nulla ac posuere. Phasellus et sollicitudin magna, eu malesuada eros. Vestibulum vel erat vel sapien tristique porta. Morbi elit risus, tincidunt a nibh in, auctor mattis odio. Duis ullamcorper magna vel augue porta congue. Duis sit amet risus quis tortor consequat vehicula. Maecenas pellentesque massa at eros rhoncus fermentum. Cras suscipit mi nec fermentum venenatis. Phasellus semper semper velit eu commodo. In a enim sed dui cursus pulvinar nec adipiscing lorem.
154
+
155
+ Sed eleifend erat in nibh elementum ultrices. Donec eu sapien lacus. Aenean sed aliquam nunc. Donec sit amet tortor vitae tortor adipiscing vehicula. Integer ut suscipit lacus. Nullam eu magna vehicula, varius elit nec, auctor quam. Morbi consectetur nulla vitae consectetur ullamcorper. Duis sed diam quis risus dictum pretium id vestibulum diam. Suspendisse potenti. Etiam tempus scelerisque eros eget congue. Fusce auctor, erat non placerat vulputate, leo orci commodo felis, a feugiat nulla erat hendrerit augue. Morbi mollis sapien purus, ut vehicula diam aliquet ut.
156
+
157
+ Quisque a neque egestas sem facilisis auctor. Ut tincidunt rutrum arcu, vel auctor massa blandit et. Donec ante arcu, elementum sit amet bibendum sollicitudin, lacinia a ante. Nullam condimentum iaculis libero, in laoreet nisi varius eget. Sed egestas massa auctor condimentum faucibus. In ac lorem velit. Aenean justo mauris, malesuada sed malesuada a, mattis non metus. Vestibulum sem elit, tristique sed aliquam quis, cursus nec diam. In vehicula lectus a nunc bibendum dictum. Proin scelerisque augue at ante porttitor, vitae hendrerit velit pellentesque. Nullam aliquet turpis vitae congue venenatis.
158
+
159
+ Phasellus vitae hendrerit orci. Nullam vestibulum justo quis nunc ultricies, id dapibus enim porta. Nullam congue mattis libero a porta. Nullam feugiat magna at urna condimentum rhoncus. Morbi porttitor lectus nisi, ut mollis nibh dignissim ut. Mauris consectetur convallis congue. Donec fermentum dolor ut dapibus tempor. Proin velit nisi, scelerisque ac augue eu, rutrum imperdiet tellus. Phasellus pellentesque nibh ipsum, adipiscing ullamcorper quam consectetur eget. Morbi at libero justo. Proin lacinia ullamcorper lacus in faucibus. Vivamus fringilla tempus turpis, at molestie nulla porttitor sit amet. Cras eget elit ac risus scelerisque feugiat pharetra non ligula.
160
+
161
+ In eu nisl id nulla placerat semper. Praesent molestie dignissim est. Ut quam quam, tincidunt in tincidunt eu, rhoncus sit amet dui. Donec facilisis elit non euismod pretium. Sed molestie gravida laoreet. Curabitur mauris mi, posuere rhoncus eros ut, venenatis congue sem. Etiam pellentesque sapien vitae enim commodo, ut vestibulum dolor ultrices. Vestibulum lacinia pharetra massa, vitae placerat nunc consectetur in. Fusce a nisi vehicula, egestas orci egestas, sollicitudin velit. Proin vel consequat sapien.
162
+
163
+ Praesent lectus risus, pulvinar ac pharetra nec, ullamcorper sed magna. Donec vitae enim in enim adipiscing tempor. Morbi hendrerit mauris at mauris adipiscing condimentum. In fermentum consequat nisl sit amet dictum. Nunc pulvinar commodo eleifend. Pellentesque faucibus ut purus fermentum elementum. Aenean dui lectus, venenatis et mattis eget, egestas ac erat. Sed pellentesque sed nulla ac dapibus. Ut commodo cursus eros, ut laoreet diam vulputate at. Donec vulputate auctor ligula. Donec id metus at justo luctus placerat.
164
+
165
+ Donec blandit dignissim lacinia. Curabitur ac sagittis diam. Nullam ultricies mauris a molestie malesuada. Nunc cursus diam quis tellus venenatis dictum. Nulla et pellentesque tellus. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus fringilla ipsum libero, nec venenatis mauris vehicula ultricies. Morbi placerat erat ac nulla vestibulum, non fermentum tellus cursus. Nam pellentesque neque vehicula, porta felis ut, ultrices elit. Integer tincidunt lectus nec orci interdum, vel ultrices risus ornare. Praesent dapibus aliquam risus, in mollis nunc ultrices vel. Integer volutpat eleifend nisl, ut bibendum ipsum congue facilisis. Sed malesuada imperdiet faucibus. Quisque pharetra nibh arcu, et consequat ante vehicula sed. Proin commodo sem dolor. Curabitur aliquet metus nec urna aliquam mattis.
166
+
167
+ Vestibulum dolor eros, tristique a dui accumsan, malesuada dignissim eros. Vestibulum commodo, nisl at vestibulum laoreet, magna velit vulputate odio, sit amet feugiat urna tellus ac est. Sed bibendum cursus nisl, id fermentum lectus molestie id. Fusce ac lacus non ligula tristique adipiscing rhoncus in dolor. Donec at elit auctor, pellentesque quam a, sagittis ante. Fusce tristique orci sit amet orci tincidunt commodo. Vivamus facilisis vitae justo id sagittis. Mauris quis porttitor nisi.
168
+
169
+ Donec gravida magna est, laoreet venenatis nisi faucibus quis. Quisque sollicitudin purus ut lacus consequat eleifend. Pellentesque id pulvinar mi. Praesent tincidunt elementum odio, ut sagittis dolor blandit ut. Maecenas et tincidunt quam. Nunc cras amet.
Binary file
@@ -0,0 +1,17 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ require 'hopper/queue'
4
+ require 'hopper/channel'
5
+
6
+ module Hopper
7
+ module Test
8
+ class Listener
9
+ @channel = Hopper::Channel.new
10
+ @queue = Hopper::Queue.new("hopper-perftest-out").listener(@channel)
11
+
12
+ @queue.listen do |msg|
13
+ msg.acknowledge
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,52 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ require 'hopper/channel'
4
+ require 'hopper/queue'
5
+
6
+ module Hopper
7
+ module Test
8
+ class MemoryTest < ::Test::Unit::TestCase
9
+
10
+ setup do
11
+ @channel = Hopper::Channel.new
12
+ @queue = Hopper::Queue.new("hopper-perftest-out").publisher(@channel)
13
+ end
14
+
15
+ test "publish big ass messages" do
16
+
17
+ f = File.new("test/performance/data/latin", "rb")
18
+ arr = f.read(400).split("").permutation
19
+
20
+ start_count = snapshot
21
+
22
+ 3000000.times do |m|
23
+ m = arr.next.join("")
24
+ message = OpenStruct.new
25
+ message.payload = m
26
+
27
+ @queue.publish(message)
28
+ end
29
+
30
+ end_count = snapshot
31
+ diff_count = Hash[(start_count.keys & end_count.keys).map {|k|
32
+ [k, end_count[k] - start_count[k]]
33
+ }]
34
+ diff_arr = diff_count.select {|rec, val|
35
+ val > 0
36
+ }
37
+ puts diff_arr.inspect
38
+ gets
39
+ snapshot
40
+ end
41
+
42
+ def snapshot
43
+ objects = Hash.new(0)
44
+ ObjectSpace.each_object do |obj|
45
+ objects[obj.class.name] += 1
46
+ end
47
+ objects
48
+ end
49
+
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,15 @@
1
+ if ENV["ENABLE_SIMPLE_COV"]
2
+ require 'simplecov'
3
+ require File.expand_path('../../simplecov_helper', __FILE__)
4
+ SimpleCov.start 'pocketchange'
5
+ end
6
+
7
+ require 'test/unit'
8
+ require 'active_support/test_case'
9
+
10
+ ENV["WARREN_ENV"] = "test"
11
+
12
+ require 'mocha/setup'
13
+
14
+ module TestHelper
15
+ end
@@ -0,0 +1,84 @@
1
+ require File.expand_path('../../../../test_helper', __FILE__)
2
+
3
+ require 'hopper/channel/queue/listener'
4
+
5
+ class Hopper::Channel::Queue::ListenerTest < Test::Unit::TestCase
6
+ setup do
7
+ @mock_queue_proxy = mock
8
+
9
+ @mock_channel = mock
10
+
11
+ @listener = Hopper::Channel::Queue::Listener.new(@mock_queue_proxy)
12
+ end
13
+
14
+ test '#listen' do
15
+ mock_delivery_information = mock
16
+ mock_properties = mock
17
+ mock_payload = mock
18
+
19
+ @mock_queue_proxy.expects(:subscribe).yields(mock_delivery_information, mock_properties, mock_payload)
20
+
21
+ @listener.listen do |result|
22
+ assert_kind_of Hopper::Message::Delivered, result
23
+ assert_equal result.message.payload, mock_payload
24
+ end
25
+ end
26
+
27
+ test '#listen rejects on exception' do
28
+ mock_delivery_information = mock
29
+ mock_properties = mock
30
+ mock_payload = mock
31
+
32
+ @mock_queue_proxy.expects(:subscribe).yields(mock_delivery_information, mock_properties, mock_payload)
33
+
34
+ mock_message = mock
35
+ Hopper::Message::Delivered.expects(:new).returns(mock_message)
36
+
37
+ mock_tag = mock
38
+ mock_message.expects(:tag).returns(mock_tag)
39
+
40
+ @listener.expects(:reject).with(mock_message)
41
+
42
+ @listener.listen do |result|
43
+ raise Exception
44
+ end
45
+ end
46
+
47
+ test '#acknowledge' do
48
+ mock_message = mock
49
+
50
+
51
+ mock_tag = mock
52
+ mock_message.expects(:tag).returns(mock_tag)
53
+
54
+ @mock_channel.expects(:acknowledge).with(mock_tag)
55
+ @mock_queue_proxy.expects(:channel).returns(@mock_channel)
56
+
57
+ @listener.acknowledge(mock_message)
58
+ end
59
+
60
+ test '#retry' do
61
+ mock_message = mock
62
+
63
+
64
+ mock_tag = mock
65
+ mock_message.expects(:tag).returns(mock_tag)
66
+
67
+ @mock_channel.expects(:reject).with(mock_tag, true)
68
+ @mock_queue_proxy.expects(:channel).returns(@mock_channel)
69
+
70
+ @listener.retry(mock_message)
71
+ end
72
+
73
+ test '#reject' do
74
+ mock_message = mock
75
+
76
+ mock_tag = mock
77
+ mock_message.expects(:tag).returns(mock_tag)
78
+
79
+ @mock_channel.expects(:reject).with(mock_tag, false)
80
+ @mock_queue_proxy.expects(:channel).returns(@mock_channel)
81
+
82
+ @listener.reject(mock_message)
83
+ end
84
+ end