netinlet-sweat_shop 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,65 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+ require File.dirname(__FILE__) + '/../lib/sweat_shop'
3
+
4
+ class SweatShopTest < Test::Unit::TestCase
5
+ SweatShop.workers = []
6
+
7
+ class HelloWorker < SweatShop::Worker
8
+ def hello(name)
9
+ "Hi, #{name}"
10
+ end
11
+ end
12
+
13
+ class GroupedWorker < SweatShop::Worker
14
+ queue_group :foo
15
+ end
16
+
17
+ test "group workers" do
18
+ assert_equal [HelloWorker, GroupedWorker], SweatShop.workers_in_group(:all)
19
+ assert_equal [HelloWorker], SweatShop.workers_in_group(:default)
20
+ assert_equal [GroupedWorker], SweatShop.workers_in_group(:foo)
21
+ end
22
+
23
+ test "synch call" do
24
+ worker = HelloWorker.new
25
+ assert_equal "Hi, Amos", worker.hello('Amos')
26
+ end
27
+
28
+ test "uid" do
29
+ SweatShop.logger = :silent
30
+ uid = HelloWorker.async_hello('Amos')
31
+ assert_not_nil uid
32
+ end
33
+
34
+ test "before task" do
35
+ HelloWorker.before_task do
36
+ "hello"
37
+ end
38
+ assert_equal "hello", HelloWorker.before_task.call
39
+ end
40
+
41
+ test "after task" do
42
+ HelloWorker.after_task do
43
+ "goodbye"
44
+ end
45
+ assert_equal "goodbye", HelloWorker.after_task.call
46
+ end
47
+
48
+ test "chainable before tasks" do
49
+ MESSAGES = []
50
+ class BaseWorker < SweatShop::Worker
51
+ before_task do |task|
52
+ MESSAGES << 'base'
53
+ end
54
+ end
55
+ class SubWorker < BaseWorker
56
+ before_task do |task|
57
+ MESSAGES << 'sub'
58
+ end
59
+ end
60
+ SubWorker.call_before_task('foo')
61
+ assert_equal ['base', 'sub'], MESSAGES
62
+ SweatShop.workers.delete(BaseWorker)
63
+ SweatShop.workers.delete(SubWorker)
64
+ end
65
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+ require File.dirname(__FILE__) + '/../lib/sweat_shop'
3
+
4
+ class YamlSerializerTest < Test::Unit::TestCase
5
+
6
+ class UnderTest
7
+ attr_accessor :name, :address, :city, :state, :zip, :id
8
+ def ==(other)
9
+ ![:name, :address, :city, :state, :zip, :id].map{|a| return self.send(a) == other.send(a)}.include?(false)
10
+ end
11
+
12
+ end
13
+
14
+ def setup
15
+ @under_test = UnderTest.new
16
+ @under_test.id = 87
17
+ @under_test.name = "YamlTest"
18
+ @under_test.address = "555 Rock Ridge Road"
19
+ @under_test.city = "Rock Ridge"
20
+ @under_test.state = "Texas"
21
+ @under_test.zip = "90210"
22
+ end
23
+
24
+ test "should properly serialize a simple data structure" do
25
+ dump = SweatShop::Serializers::YamlSerializer.serialize([{:foo => "bar"}, 23, 87, %w{doug cathy connor tommy}])
26
+ assert_equal [{:foo => "bar"}, 23, 87, %w{doug cathy connor tommy}].to_yaml, dump
27
+ end
28
+
29
+
30
+ test "should be able to serialize an arbitrary class" do
31
+ dump = SweatShop::Serializers::YamlSerializer.serialize(@under_test)
32
+ assert_equal @under_test.to_yaml, dump
33
+ end
34
+
35
+ test "should be able to deserialize a simple data structure" do
36
+ assert_equal [{:foo => "bar"}, 23, 87, %w{doug cathy connor tommy}], SweatShop::Serializers::YamlSerializer.deserialize("--- \n- :foo: bar\n- 23\n- 87\n- - doug\n - cathy\n - connor\n - tommy\n")
37
+ end
38
+
39
+ test "should be able to deserialize an arbitrary class" do
40
+ assert_equal @under_test, SweatShop::Serializers::YamlSerializer.deserialize(@under_test.to_yaml)
41
+ end
42
+
43
+
44
+ end
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: netinlet-sweat_shop
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Amos Elliston
8
+ - Doug Bryant
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2009-08-31 00:00:00 -07:00
14
+ default_executable: sweatd
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: famoseagle-carrot
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - "="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.7.0
25
+ version:
26
+ description: Amos Elliston's sweat_shop + Custom Serialization
27
+ email: doug@netinlet.com
28
+ executables:
29
+ - sweatd
30
+ extensions: []
31
+
32
+ extra_rdoc_files:
33
+ - LICENSE
34
+ - README.markdown
35
+ files:
36
+ - History.txt
37
+ - LICENSE
38
+ - README.markdown
39
+ - Rakefile
40
+ - VERSION.yml
41
+ - config/defaults.yml
42
+ - config/sweatshop.yml
43
+ - lib/message_queue/base.rb
44
+ - lib/message_queue/kestrel.rb
45
+ - lib/message_queue/rabbit.rb
46
+ - lib/serializers/json_serializer.rb
47
+ - lib/serializers/marshal_serializer.rb
48
+ - lib/serializers/serializer.rb
49
+ - lib/serializers/yaml_serializer.rb
50
+ - lib/sweat_shop.rb
51
+ - lib/sweat_shop/daemoned.rb
52
+ - lib/sweat_shop/metaid.rb
53
+ - lib/sweat_shop/sweatd.rb
54
+ - lib/sweat_shop/worker.rb
55
+ - test/hello_worker.rb
56
+ - test/test_functional_worker.rb
57
+ - test/test_helper.rb
58
+ - test/test_json_serializer.rb
59
+ - test/test_marshal_serializer.rb
60
+ - test/test_serializer.rb
61
+ - test/test_sweatshop.rb
62
+ - test/test_yaml_serializer.rb
63
+ has_rdoc: false
64
+ homepage: http://github.com/netinlet/sweat_shop
65
+ post_install_message:
66
+ rdoc_options:
67
+ - --charset=UTF-8
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: "0"
75
+ version:
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: "0"
81
+ version:
82
+ requirements: []
83
+
84
+ rubyforge_project:
85
+ rubygems_version: 1.2.0
86
+ signing_key:
87
+ specification_version: 3
88
+ summary: SweatShop is a simple asynchronous worker queue build on top of rabbitmq/ampq
89
+ test_files:
90
+ - test/hello_worker.rb
91
+ - test/test_functional_worker.rb
92
+ - test/test_helper.rb
93
+ - test/test_json_serializer.rb
94
+ - test/test_marshal_serializer.rb
95
+ - test/test_serializer.rb
96
+ - test/test_sweatshop.rb
97
+ - test/test_yaml_serializer.rb