nexia_worker_roulette 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 53d36e15910ce2db5cd63152496ee34dfa5c9b0f
4
- data.tar.gz: 28376e7730e8e6fbe960f53a9936897307bc1bc8
3
+ metadata.gz: 3c854aeeb7a69a210ae9c85fb1ec0e61344f5f14
4
+ data.tar.gz: 47b8208a2cd022894dd6ff8a87e2d31879be89b0
5
5
  SHA512:
6
- metadata.gz: aef9594153c398471a13a261e673a442d085c670c3782a17c673112ec4ffbfe55cf309fbfce5e746af8a66bbdb8ed629e71ca836d1fb160f6cc9b49b1088761e
7
- data.tar.gz: 79cfc9c99a374508c56b2783d180f170671723530eccea31f6de1a8bd8dc7e19160e6b87dd1708b8eb3b68e96e03f32df40d9efa7d8052ca6e5a79ee21e0ec8f
6
+ metadata.gz: f907b5b5cbd2f4f843b14af116e5f3ea62a14a08f196fc3bb48c4ae0b9c7b42d6bf1ea79c679793d075beb8b06e7b74166b0bbd14acebc0dbc0e3127b65af399
7
+ data.tar.gz: daf34a515f98cba866824c1cff8002881f6a5348b4b9cf8cfb08ca46bb4fa819d40c7a6cad215d7a058faf592fea444c1d31fbb957452d35a955d30521a8ff50
@@ -7,3 +7,19 @@ class String
7
7
  downcase
8
8
  end
9
9
  end
10
+ class Hash
11
+ # FROM: File activesupport/lib/active_support/core_ext/hash/keys.rb, line 50
12
+ # made recursive by JB
13
+ def recursive_symbolize_keys!
14
+ recursive_transform_keys!{ |key| key.to_sym rescue key }
15
+ end
16
+
17
+ def recursive_transform_keys!
18
+ return enum_for(:transform_keys!) unless block_given?
19
+ keys.each do |key|
20
+ value = delete(key)
21
+ self[yield(key)] = value.kind_of?(Hash) ? value.recursive_symbolize_keys! : value
22
+ end
23
+ self
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module WorkerRoulette
2
- VERSION = '0.2.3'
2
+ VERSION = '0.2.4'
3
3
  end
@@ -57,6 +57,7 @@ module WorkerRoulette
57
57
  attr_reader :preprocessors
58
58
 
59
59
  def initialize(config = {})
60
+ config.recursive_symbolize_keys!
60
61
  @redis_config = DEFAULT_REDIS_CONFIG.merge(config)
61
62
  @pool_config = { size: @redis_config.delete(:pool_size), timeout: @redis_config.delete(:timeout) }
62
63
  @evented = @redis_config.delete(:evented)
@@ -76,6 +77,7 @@ module WorkerRoulette
76
77
  QueueMetricTracker.configure(
77
78
  {
78
79
  server_name: `hostname`.chomp,
80
+ granularity: config[:granularity],
79
81
  metric_host: config[:metric_host],
80
82
  metric_host_port: config[:metric_host_port],
81
83
  metrics: config[:metrics]
@@ -0,0 +1,95 @@
1
+ require "spec_helper"
2
+
3
+ module WorkerRoulette
4
+ describe WorkerRoulette do
5
+ DEFAULT_POLLING_TIME = 2
6
+ let(:redis_host) { "redis_host" }
7
+ let(:db) { 7 }
8
+ let(:metric_host_name) { "localhost" }
9
+ let(:metric_port) { 7777 }
10
+ let(:granularity) { 10 }
11
+ let(:server_name) { `hostname`.chomp || "hostname" }
12
+
13
+ let(:symbolized_config) { {
14
+ host: redis_host,
15
+ db: db,
16
+ metric_tracker: {
17
+ metric_host: metric_host_name,
18
+ metric_host_port: metric_port,
19
+ granularity: granularity,
20
+ metrics: {
21
+ batch_size: true,
22
+ queue_depth: true,
23
+ queue_latency: true
24
+ }
25
+ }
26
+ } }
27
+
28
+ let(:stringified_config) { {
29
+ "host" => redis_host,
30
+ "db" => 7,
31
+ "metric_tracker" => {
32
+ "metric_host" => metric_host_name,
33
+ "metric_host_port" => metric_port,
34
+ "granularity" => granularity,
35
+ "metrics" => {
36
+ "batch_size" => true,
37
+ "queue_depth" => true,
38
+ "queue_latency" => true,
39
+ }
40
+ }
41
+ } }
42
+
43
+ let(:redis_config) { {
44
+ host: redis_host,
45
+ driver: :hiredis,
46
+ port: 6379,
47
+ db: db
48
+ } }
49
+
50
+ let(:metrics_config) { {
51
+ granularity: granularity,
52
+ metric_host: metric_host_name,
53
+ metric_host_port: metric_port,
54
+ metrics: {
55
+ batch_size: true,
56
+ queue_depth: true,
57
+ queue_latency: true
58
+ }
59
+ } }
60
+
61
+ let(:metric_host) { {
62
+ host_ip: "127.0.0.1",
63
+ host_port: metric_port
64
+ } }
65
+
66
+ let(:metric_tracker_config) { metrics_config.delete_if{ |k| k == :metric_host_port }.merge(metric_host: metric_host).merge(server_name: server_name) }
67
+
68
+ subject(:worker_roulette) { WorkerRoulette.start(options) }
69
+
70
+ describe "initialize" do
71
+ context "when config hash has symbol keys" do
72
+ let(:options) { symbolized_config }
73
+
74
+ it "successfully interprets the config hash" do
75
+ expect(subject.redis_config.delete_if{ |k| k == :metric_tracker }).to eq(redis_config)
76
+ end
77
+
78
+ it "successfully interprets the metrics hash" do
79
+ expect(QueueMetricTracker.config).to eq(metric_tracker_config)
80
+ end
81
+ end
82
+
83
+ context "when config hash has string keys" do
84
+ let(:options) { stringified_config }
85
+ it "successfully interprets the config hash" do
86
+ expect(subject.redis_config.delete_if{ |k| k == :metric_tracker }).to eq(redis_config)
87
+ end
88
+
89
+ it "successfully interprets the metrics hash" do
90
+ expect(QueueMetricTracker.config).to eq(metric_tracker_config)
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexia_worker_roulette
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Saieg
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-08-03 00:00:00.000000000 Z
13
+ date: 2015-08-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: oj
@@ -235,6 +235,7 @@ files:
235
235
  - spec/unit/queue_metric_tracker_spec.rb
236
236
  - spec/unit/readlock_spec.rb
237
237
  - spec/unit/stat_calculator_spec.rb
238
+ - spec/unit/worker_roulette_spec.rb
238
239
  - worker_roulette.gemspec
239
240
  homepage: https://github.com/nexiahome/worker_roulette
240
241
  licenses: []
@@ -273,3 +274,4 @@ test_files:
273
274
  - spec/unit/queue_metric_tracker_spec.rb
274
275
  - spec/unit/readlock_spec.rb
275
276
  - spec/unit/stat_calculator_spec.rb
277
+ - spec/unit/worker_roulette_spec.rb