upperkut 0.7.0 → 0.7.1

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
  SHA256:
3
- metadata.gz: 5c18a5b6516fc334c80ee3ccc35f1dab755490799581ff3bf50c6c3bcb45188c
4
- data.tar.gz: d7b6ed2df27d4275666043cd9692cac287a0d62f5a5ca16216ebeba093838a29
3
+ metadata.gz: f8a422257ff9efd3c1cc0f5cc8ca940c31b77df381a549ca1ad9e0fd59919eba
4
+ data.tar.gz: 3e6bfc18b1c2890a033dc5b301e4009eeeccdd026ae6c040be5f8d7f551bd8b5
5
5
  SHA512:
6
- metadata.gz: '09eacd8265373fd91432a997ac41e3b6ff120203476b3912d5bc7ccaa24dfb779d3f0817c10d4769782df1c7f563b2371eb6dfeab155a2c7442f9c3c51a75e2b'
7
- data.tar.gz: 51dde9c9d81ddd79e81e220d2f4f38443778fd5026223b5330da74fde567b2310d67f3cdacf1dedd489730ab664fcb030a8404122f70be62f0a17ef108d4167a
6
+ metadata.gz: 1d8b525f86a878faae9cd8297c75120c1a883b9b6652f6f39669fa6c428055966ae151b1de7115d5e54c5e593fe5e15df499985757e1ea619298aa3098dd71b7
7
+ data.tar.gz: 403e4c6cdd0da351bedbd0daeddf96ab8f06269ce3d09a4468c0c996a6a22b55a9af7d3f75fd7aafdca9e867b4ddffc83e0bb55cd24b05519e654421c2df7f8c
@@ -10,6 +10,8 @@ jobs:
10
10
  environment:
11
11
  CC_TEST_REPORTER_ID: 03ab83a772148a577d29d4acf438d7ebdc95c632224122d0ba8dbb291eedebe6
12
12
  COVERAGE: true
13
+ REDIS_URL: redis://localhost:6379
14
+ - image: redis:5.0
13
15
  steps:
14
16
  - checkout
15
17
 
@@ -0,0 +1,15 @@
1
+ version: "2"
2
+ plugins:
3
+ brakeman:
4
+ enabled: false
5
+ eslint:
6
+ enabled: false
7
+ csslint:
8
+ enabled: false
9
+ rubocop:
10
+ enabled: true
11
+ channel: rubocop-0-63
12
+ reek:
13
+ enabled: true
14
+ bundler-audit:
15
+ enabled: true
@@ -2,6 +2,13 @@
2
2
 
3
3
  0.7.x
4
4
  ---------
5
+ - Added Datahog middleware #42 by @gabriel-augusto
6
+ - Added redis to CI #40 by #henrich-m
7
+ - Specs improvements #34 and #35, #37 by @gabriel-augusto
8
+ - Enable Rubocop #32 by @henrich-m
9
+ - Added codeclimate #31 by @henrich-m
10
+
11
+
5
12
  - Extract Buffered Queue behavior to its own strategy #29
6
13
 
7
14
  0.6.x
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- upperkut (0.7.0)
4
+ upperkut (0.7.1)
5
5
  connection_pool (~> 2.2, >= 2.2.2)
6
6
  redis (>= 3.3.3, < 5)
7
7
 
data/README.md CHANGED
@@ -68,7 +68,7 @@ Examples:
68
68
 
69
69
  ## Development
70
70
 
71
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
71
+ After checking out the repo, run `bundle install` to install dependencies. Then, run `bundle exec rspec` to run the tests.
72
72
 
73
73
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
74
74
 
@@ -5,7 +5,7 @@ class MyWorker
5
5
 
6
6
  def perform(items)
7
7
  puts 'starting performing'
8
- exec_time = rand(9000..50000)
8
+ exec_time = rand(9000..50_000)
9
9
  sleep (exec_time.to_f / 1000.to_f)
10
10
  puts "performed #{items.size} items in #{exec_time.to_f / 1000.to_f} ms"
11
11
  end
@@ -34,8 +34,8 @@ class WithMiddlewares
34
34
  end
35
35
  end
36
36
 
37
- def perform(items)
38
- puts "executing........."
37
+ def perform(_items)
38
+ puts 'executing.........'
39
39
  exec_time = rand(80..200)
40
40
  sleep (exec_time.to_f / 1000.to_f)
41
41
  end
@@ -89,9 +89,13 @@ module Upperkut
89
89
  chain.add(Upperkut::Middlewares::Rollbar)
90
90
  end
91
91
 
92
+ if defined?(Datadog)
93
+ require_relative 'upperkut/middlewares/datadog'
94
+ chain.add(Upperkut::Middlewares::Datadog)
95
+ end
96
+
92
97
  chain
93
98
  end
94
-
95
99
  end
96
100
 
97
101
  # Error class responsible to signal the shutdown process
@@ -20,7 +20,6 @@ module Upperkut
20
20
  @worker.server_middlewares.invoke(@worker, items) do
21
21
  worker_instance.perform(items_body.dup)
22
22
  end
23
-
24
23
  rescue Exception => ex
25
24
  @worker.push_items(items_body)
26
25
 
@@ -18,7 +18,7 @@ module Upperkut
18
18
  require 'rails'
19
19
  if ::Rails::VERSION::MAJOR == 4
20
20
  require File.expand_path("#{@options[:require]}/config/application.rb")
21
- ::Rails::Application.initializer "upperkut.eager_load" do
21
+ ::Rails::Application.initializer 'upperkut.eager_load' do
22
22
  ::Rails.application.config.eager_load = true
23
23
  end
24
24
 
@@ -4,9 +4,8 @@ require 'socket'
4
4
 
5
5
  module Upperkut
6
6
  module Logging
7
-
8
7
  class DefaultFormatter < Logger::Formatter
9
- def call(severity, time, program_name, message)
8
+ def call(severity, time, _program_name, message)
10
9
  "upperkut: #{time.utc.iso8601(3)} hostname=#{Socket.gethostname} "\
11
10
  "pid=#{::Process.pid} severity=#{severity} #{format_message(message)}\n"
12
11
  end
@@ -16,11 +15,10 @@ module Upperkut
16
15
  def format_message(message)
17
16
  return "msg=#{message} " unless message.is_a?(Hash)
18
17
 
19
- message.each_with_object('') do |(k,v), memo|
18
+ message.each_with_object('') do |(k, v), memo|
20
19
  memo << "#{k}=#{v}\s"
21
20
  memo
22
21
  end
23
-
24
22
  end
25
23
  end
26
24
 
@@ -9,6 +9,7 @@ module Upperkut
9
9
 
10
10
  def add(item)
11
11
  return @items if @items.include?(item)
12
+
12
13
  @items << item
13
14
  end
14
15
 
@@ -0,0 +1,11 @@
1
+ module Upperkut
2
+ module Middlewares
3
+ class Datadog
4
+ def call(worker, _items)
5
+ ::Datadog.tracer.trace(worker.name) do
6
+ yield
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -14,13 +14,12 @@ module Upperkut
14
14
  def handle_exception(e, worker, items)
15
15
  scope = {
16
16
  framework: "Upperkut #{::Upperkut::VERSION}",
17
- request: { params: { items_size: items.size } },
18
- context: worker.name
17
+ request: { params: { items_size: items.size } },
18
+ context: worker.name
19
19
  }
20
20
 
21
- ::Rollbar.scope(scope).error(e, :use_exception_level_filters => true)
21
+ ::Rollbar.scope(scope).error(e, use_exception_level_filters: true)
22
22
  end
23
23
  end
24
24
  end
25
25
  end
26
-
@@ -28,6 +28,7 @@ module Upperkut
28
28
 
29
29
  def kill
30
30
  return unless @thread
31
+
31
32
  @thread.raise Upperkut::Shutdown
32
33
  @thread.value # wait
33
34
  end
@@ -3,14 +3,13 @@ require 'redis'
3
3
 
4
4
  module Upperkut
5
5
  class RedisPool
6
-
7
6
  DEFAULT_OPTIONS = {
8
- pool_timeout: 1, # pool related option
9
- size: 2, # pool related option
10
- connect_timeout: 0.2,
11
- read_timeout: 5.0,
12
- write_timeout: 0.5,
13
- url: ENV['REDIS_URL'],
7
+ pool_timeout: 1, # pool related option
8
+ size: 2, # pool related option
9
+ connect_timeout: 0.2,
10
+ read_timeout: 5.0,
11
+ write_timeout: 0.5,
12
+ url: ENV['REDIS_URL']
14
13
  }.freeze
15
14
 
16
15
  def initialize(options)
@@ -22,7 +21,7 @@ module Upperkut
22
21
  end
23
22
 
24
23
  def create
25
- ConnectionPool.new(:timeout => @pool_timeout, :size => @size) do
24
+ ConnectionPool.new(timeout: @pool_timeout, size: @size) do
26
25
  Redis.new(@options)
27
26
  end
28
27
  end
@@ -6,7 +6,7 @@ module Upperkut
6
6
  # items - The Array of items do be inserted.
7
7
  #
8
8
  # Returns true when success, raise when error.
9
- def push_items(items = [])
9
+ def push_items(_items = [])
10
10
  raise NotImplementedError
11
11
  end
12
12
 
@@ -15,7 +15,7 @@ module Upperkut
15
15
  # batch_size: # of items to be retrieved.
16
16
  #
17
17
  # Returns an Array containing events as hash.
18
- def fetch_items(batch_size)
18
+ def fetch_items(_batch_size)
19
19
  raise NotImplementedError
20
20
  end
21
21
 
@@ -10,7 +10,7 @@ module Upperkut
10
10
  attr_reader :options
11
11
 
12
12
  def initialize(worker, options = {})
13
- @options = options
13
+ @options = options
14
14
  @redis_options = options.fetch(:redis, {})
15
15
  @redis_pool = setup_redis_pool
16
16
  @worker = worker
@@ -30,6 +30,7 @@ module Upperkut
30
30
  def push_items(items = [])
31
31
  items = [items] if items.is_a?(Hash)
32
32
  return false if items.empty?
33
+
33
34
  redis do |conn|
34
35
  conn.rpush(key, encode_json_items(items))
35
36
  end
@@ -56,7 +57,7 @@ module Upperkut
56
57
  def metrics
57
58
  {
58
59
  'latency' => latency,
59
- 'size' => size
60
+ 'size' => size
60
61
  }
61
62
  end
62
63
 
@@ -76,6 +77,7 @@ module Upperkut
76
77
 
77
78
  def fulfill_condition?(buff_size)
78
79
  return false if buff_size.zero?
80
+
79
81
  buff_size >= @batch_size || @waiting_time >= @max_wait
80
82
  end
81
83
 
@@ -89,19 +91,20 @@ module Upperkut
89
91
  item = redis { |conn| conn.lrange(key, 0, 0) }
90
92
  item = decode_json_items(item).first
91
93
  return 0 unless item
94
+
92
95
  now = Time.now.to_f
93
96
  now - item.fetch('enqueued_at', Time.now).to_f
94
97
  end
95
98
 
96
-
97
-
98
99
  def setup_redis_pool
99
100
  return @redis_options if @redis_options.is_a?(ConnectionPool)
101
+
100
102
  RedisPool.new(options.fetch(:redis, {})).create
101
103
  end
102
104
 
103
105
  def redis
104
- raise ArgumentError, "requires a block" unless block_given?
106
+ raise ArgumentError, 'requires a block' unless block_given?
107
+
105
108
  @redis_pool.with do |conn|
106
109
  yield conn
107
110
  end
@@ -16,7 +16,7 @@ module Upperkut
16
16
  items = items.collect do |i|
17
17
  JSON.generate(
18
18
  'enqueued_at' => Time.now.to_i,
19
- 'body' => i
19
+ 'body' => i
20
20
  )
21
21
  end
22
22
  end
@@ -1,3 +1,3 @@
1
1
  module Upperkut
2
- VERSION = '0.7.0'.freeze
2
+ VERSION = '0.7.1'.freeze
3
3
  end
@@ -1,4 +1,3 @@
1
-
2
1
  lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'upperkut/version'
@@ -22,8 +21,8 @@ Gem::Specification.new do |spec|
22
21
 
23
22
  spec.required_ruby_version = '>= 2.2.2'
24
23
 
25
- spec.add_dependency 'redis', '>= 3.3.3', '< 5'
26
24
  spec.add_dependency 'connection_pool', '~> 2.2', '>= 2.2.2'
25
+ spec.add_dependency 'redis', '>= 3.3.3', '< 5'
27
26
  spec.add_development_dependency 'bundler', '~> 1.16'
28
27
  spec.add_development_dependency 'rake', '~> 10.0'
29
28
  spec.add_development_dependency 'rspec', '~> 3.0'
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upperkut
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Sousa
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-02 00:00:00.000000000 Z
11
+ date: 2019-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: redis
14
+ name: connection_pool
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.3.3
20
- - - "<"
19
+ version: '2.2'
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: '5'
22
+ version: 2.2.2
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - ">="
27
+ - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 3.3.3
30
- - - "<"
29
+ version: '2.2'
30
+ - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: '5'
32
+ version: 2.2.2
33
33
  - !ruby/object:Gem::Dependency
34
- name: connection_pool
34
+ name: redis
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '2.2'
40
37
  - - ">="
41
38
  - !ruby/object:Gem::Version
42
- version: 2.2.2
39
+ version: 3.3.3
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '5'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '2.2'
50
47
  - - ">="
51
48
  - !ruby/object:Gem::Version
52
- version: 2.2.2
49
+ version: 3.3.3
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '5'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: bundler
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -101,6 +101,7 @@ extensions: []
101
101
  extra_rdoc_files: []
102
102
  files:
103
103
  - ".circleci/config.yml"
104
+ - ".codeclimate.yml"
104
105
  - ".gitignore"
105
106
  - ".rspec"
106
107
  - CHANGELOG.md
@@ -120,6 +121,7 @@ files:
120
121
  - lib/upperkut/logging.rb
121
122
  - lib/upperkut/manager.rb
122
123
  - lib/upperkut/middleware.rb
124
+ - lib/upperkut/middlewares/datadog.rb
123
125
  - lib/upperkut/middlewares/new_relic.rb
124
126
  - lib/upperkut/middlewares/rollbar.rb
125
127
  - lib/upperkut/processor.rb