eventhub-components 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 680acdfc5e9399d253a0fa7f181558a2baa747ae
4
- data.tar.gz: 14bce79d741bf3358ec283e50ec00a3088b21aa9
2
+ SHA256:
3
+ metadata.gz: 75c13a6d27b15f58b9c88d3dd73b1496d05de7330fd542b71e65d9bda69d8d30
4
+ data.tar.gz: 2dde6f21b96c326d7ee0861f939f1536a7e27114eaa56e2d6943dd7e5081766b
5
5
  SHA512:
6
- metadata.gz: e2b1d65c0bf5bcc3fe9e484f87c7486e6f7e8c3595b6002758979bb25e19463fb10cccfd2a61890e165beee477f4a764712f23b87ee27b883d19d9c62c8e5138
7
- data.tar.gz: 0ed39ecc162d85b9ff67e30eb975a0c1612ff01ea1dbb2c41a582ebc84537b17f7334aa789e62cddf943ac33db3f521bd46133b8f15f24572d63bd6d0d14d3f9
6
+ metadata.gz: 63e3bb6c10993627d2467ed62ca557cd20c2f507a46e1ba10fb685f4abadcd43d49ac923199e43d0a323cb0445ae190dfeca2ee6bce16599b942b3ff55076eb6
7
+ data.tar.gz: b6f302e90cc517109683195c795bc54c24b9019769eead8719ffd0a4c73e1c83f63f49bf640fa3db33e84b37f9e63fcb67de09250cfeaea4b834b9956ce09521
@@ -0,0 +1,6 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: 'bundler'
4
+ directory: '/'
5
+ schedule:
6
+ interval: 'weekly'
@@ -0,0 +1,32 @@
1
+ name: cd
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+
8
+ build:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - name: Checkout current code
13
+ uses: actions/checkout@v2
14
+
15
+ - name: Set up Ruby
16
+ uses: ruby/setup-ruby@v1
17
+ with:
18
+ ruby-version: '3.1'
19
+ bundler-cache: true
20
+ cache-version: 1
21
+
22
+ - name: Push to Rubygems
23
+ env:
24
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
25
+ run: |
26
+ git config --global user.email "thomas.steiner@ikey.ch"
27
+ git config --global user.name "thomis"
28
+ mkdir ~/.gem
29
+ echo -e "---\n:rubygems_api_key: ${{ secrets.RUBYGEMS_API_KEY }}" > ~/.gem/credentials
30
+ chmod 600 ~/.gem/credentials
31
+ bundle exec rake release
32
+ rm ~/.gem/credentials
@@ -0,0 +1,52 @@
1
+ name: ci
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - "*"
7
+
8
+ pull_request:
9
+ branches:
10
+ - "*"
11
+
12
+ schedule:
13
+ - cron: 0 2 * * *
14
+
15
+ # Allows you to run this workflow manually from the Actions tab
16
+ workflow_dispatch:
17
+
18
+ jobs:
19
+ build:
20
+ runs-on: ubuntu-latest
21
+ env:
22
+ CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ ruby: [ '3.1', '3.0', '2.7', '2.6']
27
+
28
+ name: Ruby ${{ matrix.ruby }}
29
+ steps:
30
+ - uses: actions/checkout@v1
31
+
32
+ - name: Set up Ruby
33
+ uses: ruby/setup-ruby@v1
34
+ with:
35
+ ruby-version: ${{ matrix.ruby }}
36
+ bundler: latest
37
+ bundler-cache: true
38
+ cache-version: 1
39
+
40
+ - name: Code Climate setup test reporter
41
+ run: |
42
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
43
+ chmod +x ./cc-test-reporter
44
+ ./cc-test-reporter before-build
45
+
46
+ - name: Run default task
47
+ run: |
48
+ bundle exec rake
49
+
50
+ - name: Code Climate publish test coverage
51
+ run: |
52
+ ./cc-test-reporter after-build
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ logs
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.3.0 / 2022-07-27
2
+
3
+ * Add dependabot
4
+ * Add to GitHub actions
5
+ * Remove travis
6
+ * Add Ruby style guide and linter
7
+ * Update badge links in readme
8
+
1
9
  ## 0.2.2 / 2018-02-27
2
10
 
3
11
  * Update gemspec requirement to 0.26 for logstash-logger
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in eventhub-components.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,11 +1,21 @@
1
- [![Dependency Status](https://gemnasium.com/badges/github.com/thomis/eventhub-components.svg)](https://gemnasium.com/github.com/thomis/eventhub-components)
1
+ [![Gem Version](https://badge.fury.io/rb/eventhub-components.svg)](https://badge.fury.io/rb/eventhub-components)
2
2
  [![Maintainability](https://api.codeclimate.com/v1/badges/3f6c9e1a8d32388df0fa/maintainability)](https://codeclimate.com/github/thomis/eventhub-components/maintainability)
3
- [![Build Status](https://travis-ci.org/thomis/eventhub-components.svg?branch=master)](https://travis-ci.org/thomis/eventhub-components)
3
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/3f6c9e1a8d32388df0fa/test_coverage)](https://codeclimate.com/github/thomis/eventhub-components/test_coverage)
4
+ [![ci](https://github.com/thomis/eventhub-components/actions/workflows/ci.yml/badge.svg)](https://github.com/thomis/eventhub-components/actions/workflows/ci.yml)
4
5
 
5
6
  # EventHub::Components
6
7
 
7
8
  Incldues logging, exception writing and pid file facilities for event hub processors.
8
9
 
10
+ ## Supported Ruby Versions
11
+
12
+ Currently supported and tested ruby versions are:
13
+
14
+ - 3.1
15
+ - 3.0
16
+ - 2.7
17
+ - 2.6
18
+
9
19
  ## Installation
10
20
 
11
21
  Add this line to your application's Gemfile:
data/Rakefile CHANGED
@@ -1,6 +1,9 @@
1
- require 'bundler/gem_tasks'
2
- require 'rspec/core/rake_task'
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+ require "standard/rake"
3
4
 
4
- RSpec::Core::RakeTask.new(:spec)
5
+ RSpec::Core::RakeTask.new(:spec) do |t|
6
+ t.verbose = false
7
+ end
5
8
 
6
- task default: :spec
9
+ task default: [:spec, :standard]
@@ -1,25 +1,26 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'eventhub/components/version'
3
+ require "eventhub/components/version"
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = 'eventhub-components'
8
- spec.version = EventHub::Components::VERSION
9
- spec.authors = ['Steiner, Thomas']
10
- spec.email = ['thomas.steiner@ikey.ch']
11
- spec.summary = 'Additional eventhub components'
12
- spec.description = 'Additional eventhub components'
13
- spec.homepage = ''
14
- spec.license = 'MIT'
6
+ spec.name = "eventhub-components"
7
+ spec.version = EventHub::Components::VERSION
8
+ spec.authors = ["Steiner, Thomas"]
9
+ spec.email = ["thomas.steiner@ikey.ch"]
10
+ spec.summary = "Additional eventhub components"
11
+ spec.description = "Additional eventhub components"
12
+ spec.homepage = ""
13
+ spec.license = "MIT"
15
14
 
16
- spec.files = `git ls-files -z`.split("\x0")
17
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ['lib']
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.require_paths = ["lib"]
20
18
 
21
- spec.add_development_dependency 'bundler', '~> 1.16'
22
- spec.add_development_dependency 'rake', '~> 12.3'
23
- spec.add_development_dependency 'rspec', '~> 3.7.0'
24
- spec.add_runtime_dependency 'logstash-logger', '~> 0.26'
19
+ spec.add_development_dependency "bundler", "~> 2.1"
20
+ spec.add_development_dependency "rake", "~> 13.0"
21
+ spec.add_development_dependency "rspec", "~> 3.11"
22
+ spec.add_development_dependency "standard", "~> 1.14"
23
+ spec.add_development_dependency "simplecov", "~> 0.21"
24
+
25
+ spec.add_runtime_dependency "logstash-logger", "~> 0.26"
25
26
  end
@@ -1,16 +1,14 @@
1
1
  class EventHub::Components::ExceptionWriter
2
-
3
2
  MAX_EXCEPTIONS_FILES = 500
4
3
 
5
4
  attr_accessor :folder, :max_files
6
5
 
7
6
  def initialize(base = nil, max_files = MAX_EXCEPTIONS_FILES)
8
- base = base ||= Dir.pwd
9
- @folder = File.join(base, 'exceptions')
7
+ base ||= Dir.pwd
8
+ @folder = File.join(base, "exceptions")
10
9
  @max_files = max_files
11
10
  end
12
11
 
13
-
14
12
  def write(exception, message = nil)
15
13
  time = Time.now
16
14
  stamp = "#{time.strftime("%Y%m%d_%H%M%S")}_%i" % time.usec
@@ -26,19 +24,16 @@ class EventHub::Components::ExceptionWriter
26
24
  stamp
27
25
  end
28
26
 
29
-
30
27
  private
31
28
 
32
29
  def restrict_to_max_files
33
- exception_files = Dir.glob(File.join(folder, '*.log'))
30
+ exception_files = Dir.glob(File.join(folder, "*.log"))
34
31
  if exception_files.size > max_files
35
- exception_files.reverse[max_files..-1].each do |file|
36
- begin
37
- File.delete(file)
38
- raw = File.join(File.dirname(file), File.basename(file, ".*"), '.msg.raw')
39
- File.delete(raw)
40
- rescue
41
- end
32
+ exception_files.reverse[max_files..].each do |file|
33
+ File.delete(file)
34
+ raw = File.join(File.dirname(file), File.basename(file, ".*"), ".msg.raw")
35
+ File.delete(raw)
36
+ rescue
42
37
  end
43
38
  end
44
39
  end
@@ -46,19 +41,16 @@ class EventHub::Components::ExceptionWriter
46
41
  def write_exception(filename, exception)
47
42
  File.open("#{folder}/#{filename}", "w") do |output|
48
43
  output.write("#{exception}\n\n")
49
- output.write("Exception: #{exception.class.to_s}\n\n")
44
+ output.write("Exception: #{exception.class}\n\n")
50
45
  output.write("Call Stack:\n")
51
- exception.backtrace.each do |line|
46
+ exception.backtrace&.each do |line|
52
47
  output.write("#{line}\n")
53
- end if exception.backtrace
48
+ end
54
49
  end
55
50
  end
56
51
 
57
52
  def write_message(filename, message)
58
53
  return unless message
59
- File.open("#{folder}/#{filename}","wb") do |output|
60
- output.write(message)
61
- end
54
+ File.binwrite("#{folder}/#{filename}", message)
62
55
  end
63
-
64
56
  end
@@ -1,7 +1,7 @@
1
1
  # format adaptation
2
2
  class EventHub::Components::LogFormatter
3
3
  def call(severity, time, progname, msg)
4
- time_in_string = "#{time.strftime("%Y-%m-%d %H:%M:%S")}.#{"%04d" % (time.usec/100)}"
4
+ time_in_string = "#{time.strftime("%Y-%m-%d %H:%M:%S")}.#{"%04d" % (time.usec / 100)}"
5
5
  [time_in_string, Process.pid, severity, msg].join("\t") + "\n"
6
6
  end
7
7
  end
@@ -1,17 +1,16 @@
1
1
  class EventHub::Components::Logger
2
-
3
2
  def self.stdout
4
- logger = Logger.new(STDOUT)
3
+ logger = Logger.new($stdout)
5
4
  logger.formatter = proc do |severity, time, progname, msg|
6
- time_in_string = "#{time.strftime("%Y-%m-%d %H:%M:%S")}.#{"%04d" % (time.usec/100)}"
5
+ time_in_string = "#{time.strftime("%Y-%m-%d %H:%M:%S")}.#{"%04d" % (time.usec / 100)}"
7
6
  "#{time_in_string}: #{"%10s" % severity} - #{msg}\n"
8
7
  end
9
8
  logger
10
9
  end
11
10
 
12
11
  def self.logstash(processor_name, environment)
13
- #configure logstash with custom fields
14
- config = LogStashLogger.configure do |config|
12
+ # configure logstash with custom fields
13
+ LogStashLogger.configure do |config|
15
14
  config.customize_event do |event|
16
15
  event["app_name"] = processor_name
17
16
  event["env"] = environment
@@ -1,8 +1,7 @@
1
1
  class EventHub::Components::MultiLogger
2
-
3
2
  attr_accessor :devices
4
3
 
5
- def initialize(folder=nil)
4
+ def initialize(folder = nil)
6
5
  @devices = []
7
6
  end
8
7
 
@@ -12,17 +11,18 @@ class EventHub::Components::MultiLogger
12
11
  self
13
12
  end
14
13
 
15
-
16
14
  private
17
15
 
18
16
  def method_missing(method, *args, &block)
19
17
  devices.map do |target|
20
- begin
21
- target.send(method, *args, &block)
22
- rescue => e
23
- ::STDERR.puts "WARNING: Could not call #{method} in #{target} with #{args} because of #{e.message}"
24
- e
25
- end
18
+ target.send(method, *args, &block)
19
+ rescue => e
20
+ warn "WARNING: Could not call #{method} in #{target} with #{args} because of #{e.message}"
21
+ e
26
22
  end
27
23
  end
24
+
25
+ def respond_to_missing?(method)
26
+ true
27
+ end
28
28
  end
@@ -13,19 +13,15 @@ class EventHub::Components::Pidfile
13
13
 
14
14
  # Try to delete file, ignore all errors
15
15
  def delete
16
- begin
17
- File.delete(file_name)
18
- rescue
19
- # ignore
20
- end
16
+ File.delete(file_name)
17
+ rescue
18
+ # ignore
21
19
  end
22
20
 
23
21
  # Read the PID from the file
24
22
  def read
25
- begin
26
- File.read(file_name)
27
- rescue Errno::ENOENT => e
28
- # ignore, will return nil
29
- end
23
+ File.read(file_name)
24
+ rescue Errno::ENOENT
25
+ # ignore, will return nil
30
26
  end
31
27
  end
@@ -1,6 +1,4 @@
1
- require 'socket'
2
- require 'thread'
3
-
1
+ require "socket"
4
2
  # A wrapper for loggers to enrich the log message with structured data (a Hash).
5
3
  # All methods besides debug/info/warn/error/fatal are forwarded to the target by the means of method_missing.
6
4
  class EventHub::Components::StructuredDataLogger
@@ -23,8 +21,8 @@ class EventHub::Components::StructuredDataLogger
23
21
  def initialize(target, options)
24
22
  @target = target
25
23
  @options = options
26
- @options['pid'] ||= ::Process.pid
27
- @options['hostname'] ||= ::Socket.gethostname
24
+ @options["pid"] ||= ::Process.pid
25
+ @options["hostname"] ||= ::Socket.gethostname
28
26
  verify_options!
29
27
  end
30
28
 
@@ -55,20 +53,23 @@ class EventHub::Components::StructuredDataLogger
55
53
  target.send(method, *args, &block)
56
54
  end
57
55
 
56
+ def respond_to_missing?(method)
57
+ true
58
+ end
59
+
58
60
  def build_message(severity, message, structured_data)
59
61
  options.merge({
60
- 'severity' => severity,
61
- 'data' => structured_data,
62
- 'message' => message
62
+ "severity" => severity,
63
+ "data" => structured_data,
64
+ "message" => message
63
65
  })
64
66
  end
65
67
 
66
68
  def verify_options!
67
- raise ::ArgumentError.new('target must not be nil') if target.nil?
68
- raise ::ArgumentError.new('data is a reserved key') if options.has_key?('data')
69
- raise ::ArgumentError.new('message is a reserved key') if options.has_key?('message')
70
- raise ::ArgumentError.new('app_name is required') if !options['app_name']
71
- raise ::ArgumentError.new('env is required') if !options['env']
69
+ raise ::ArgumentError.new("target must not be nil") if target.nil?
70
+ raise ::ArgumentError.new("data is a reserved key") if options.has_key?("data")
71
+ raise ::ArgumentError.new("message is a reserved key") if options.has_key?("message")
72
+ raise ::ArgumentError.new("app_name is required") if !options["app_name"]
73
+ raise ::ArgumentError.new("env is required") if !options["env"]
72
74
  end
73
-
74
75
  end
@@ -1,5 +1,5 @@
1
1
  module EventHub
2
2
  module Components
3
- VERSION = '0.2.2'
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
@@ -3,9 +3,9 @@ module EventHub
3
3
  end
4
4
  end
5
5
 
6
- require 'fileutils'
7
- require 'logger'
8
- require 'logstash-logger'
6
+ require "fileutils"
7
+ require "logger"
8
+ require "logstash-logger"
9
9
 
10
10
  require_relative "components/version"
11
11
  require_relative "components/log_formatter"
@@ -14,4 +14,3 @@ require_relative "components/multi_logger"
14
14
  require_relative "components/structured_data_logger"
15
15
  require_relative "components/exception_writer"
16
16
  require_relative "components/pid_file"
17
-
@@ -1,8 +1,7 @@
1
- require_relative '../spec_helper'
1
+ require_relative "../spec_helper"
2
2
 
3
3
  RSpec.describe EventHub::Components::StructuredDataLogger do
4
- context 'logger' do
5
-
4
+ context "logger" do
6
5
  before(:each) do
7
6
  remove_all_exception_files
8
7
  end
@@ -12,28 +11,28 @@ RSpec.describe EventHub::Components::StructuredDataLogger do
12
11
  end
13
12
 
14
13
  let(:writer) {
15
- EventHub::Components::ExceptionWriter.new('tmp', 5)
14
+ EventHub::Components::ExceptionWriter.new("tmp", 5)
16
15
  }
17
16
 
18
- it 'writes an exception' do
17
+ it "writes an exception" do
19
18
  begin
20
19
  raise
21
20
  rescue => e
22
- name = writer.write(e)
21
+ writer.write(e)
23
22
  end
24
- expect(Dir['tmp/exceptions/*'].size).to eq(1)
23
+ expect(Dir["tmp/exceptions/*"].size).to eq(1)
25
24
  end
26
25
 
27
- it 'writes an exception and a message' do
26
+ it "writes an exception and a message" do
28
27
  begin
29
28
  raise
30
29
  rescue => e
31
- name = writer.write(e, "hi")
30
+ writer.write(e, "hi")
32
31
  end
33
- expect(Dir['tmp/exceptions/*'].size).to eq(2)
32
+ expect(Dir["tmp/exceptions/*"].size).to eq(2)
34
33
  end
35
34
 
36
- it 'limits number of files' do
35
+ it "limits number of files" do
37
36
  begin
38
37
  raise
39
38
  rescue => e
@@ -41,13 +40,12 @@ RSpec.describe EventHub::Components::StructuredDataLogger do
41
40
  writer.write(e)
42
41
  end
43
42
  end
44
- expect(Dir['tmp/exceptions/*'].size).to eq(5)
43
+ expect(Dir["tmp/exceptions/*"].size).to eq(5)
45
44
  end
46
-
47
45
  end
48
46
 
49
47
  def remove_all_exception_files
50
- Dir['tmp/exceptions/*'].each do |file|
48
+ Dir["tmp/exceptions/*"].each do |file|
51
49
  File.delete(file)
52
50
  end
53
51
  end
@@ -1,47 +1,60 @@
1
- require_relative '../spec_helper'
1
+ require_relative "../spec_helper"
2
2
 
3
3
  RSpec.describe EventHub::Components::StructuredDataLogger do
4
- context 'logger' do
5
-
4
+ context "logger" do
6
5
  let(:logger) {
7
6
  EventHub::Components::MultiLogger.new
8
7
  }
9
8
 
9
+ it "forwards calls to ALL devices" do
10
+ device_1 = ""
11
+ device_2 = ""
10
12
 
11
- # it 'forwards calls to ALL devices' do
12
- # device_1 = stub(:device_1)
13
- # expect(device_1).to receive(:info).and_return(1)
14
- # device_2 = stub(:device_2)
15
- # expect(device_2).to receive(:info).and_return(2)
13
+ allow(device_1).to receive(:info).and_return(1)
14
+ allow(device_2).to receive(:info).and_return(2)
16
15
 
17
- # logger.add_device(device_1)
18
- # logger.add_device(device_2)
16
+ logger.add_device(device_1)
17
+ logger.add_device(device_2)
19
18
 
20
- # result = logger.info("hans")
21
- # expect(result).to eq([1, 2])
22
- # end
19
+ result = logger.info("hans")
20
+ expect(result).to eq([1, 2])
21
+ end
23
22
 
23
+ it "forwards calls to ALL devices even if one raises" do
24
+ device_1 = ""
25
+ device_2 = ""
24
26
 
25
- # it 'forwards calls to ALL devices even if one raises' do
26
- # device_1 = stub(:device_1)
27
- # expect(device_1).to receive(:info).and_raise
28
- # device_2 = stub(:device_2)
29
- # expect(device_2).to receive(:info).and_return(2)
27
+ allow(device_1).to receive(:info).and_raise
28
+ allow(device_2).to receive(:info).and_return(2)
30
29
 
31
- # logger.add_device(device_1)
32
- # logger.add_device(device_2)
30
+ logger.add_device(device_1)
31
+ logger.add_device(device_2)
33
32
 
34
- # result = logger.info("hans")
35
- # end
33
+ logger.info("hans")
34
+ end
36
35
 
37
- # it 'returns self after adding device' do
38
- # expect(logger.add_device("something")).to eq(logger)
39
- # end
36
+ it "returns self after adding device" do
37
+ expect(logger.add_device("something")).to eq(logger)
38
+ end
40
39
 
41
- it 'does not allow nil as device' do
40
+ it "does not allow nil as device" do
42
41
  expect {
43
42
  logger.add_device nil
44
43
  }.to raise_error(ArgumentError)
45
44
  end
45
+
46
+ it "logs to json lines" do
47
+ logger.add_device(EventHub::Components::Logger.logstash("processor", "development"))
48
+ logger.info("Yes, it works!")
49
+ expect(File.read("logs/ruby/processor.log")).to match(/Yes, it works!/)
50
+ end
51
+
52
+ it "logs to json lines and console" do
53
+ logger.add_device(EventHub::Components::Logger.logstash("processor", "development"))
54
+ logger.add_device(EventHub::Components::Logger.stdout)
55
+
56
+ logger.info("Yes, it works2!")
57
+ expect(File.read("logs/ruby/processor.log")).to match(/Yes, it works2!/)
58
+ end
46
59
  end
47
60
  end
@@ -1,47 +1,47 @@
1
- require 'spec_helper'
2
- require 'fileutils'
1
+ require "spec_helper"
2
+ require "fileutils"
3
3
 
4
4
  describe EventHub::Components::Pidfile do
5
5
  before(:each) do
6
- FileUtils.remove_dir('/tmp/eventhub_pid_test', true)
6
+ FileUtils.remove_dir("/tmp/eventhub_pid_test", true)
7
7
  end
8
8
 
9
9
  after(:each) do
10
- FileUtils.remove_dir('/tmp/eventhub_pid_test', true)
10
+ FileUtils.remove_dir("/tmp/eventhub_pid_test", true)
11
11
  end
12
12
 
13
- let(:pidfile) { pidfile = EventHub::Components::Pidfile.new('/tmp/eventhub_pid_test/some.pid') }
13
+ let(:pidfile) { EventHub::Components::Pidfile.new("/tmp/eventhub_pid_test/some.pid") }
14
14
 
15
- it 'creates the folders if not existing' do
15
+ it "creates the folders if not existing" do
16
16
  pidfile.write(1234)
17
- expect(File.directory?('/tmp/eventhub_pid_test')).to be true
17
+ expect(File.directory?("/tmp/eventhub_pid_test")).to be true
18
18
  end
19
19
 
20
- it 'writes the content to the file' do
20
+ it "writes the content to the file" do
21
21
  pidfile.write(1234)
22
- expect(IO.read('/tmp/eventhub_pid_test/some.pid')).to eq('1234')
22
+ expect(IO.read("/tmp/eventhub_pid_test/some.pid")).to eq("1234")
23
23
  end
24
24
 
25
- it 'deletes the file' do
25
+ it "deletes the file" do
26
26
  pidfile.write(1234)
27
27
  pidfile.delete
28
- expect(File.file?('/tmp/eventhub_pid_test/some.pid')).to be false
28
+ expect(File.file?("/tmp/eventhub_pid_test/some.pid")).to be false
29
29
  end
30
30
 
31
- it 'does not choke when deleting a non-existing pid file' do
31
+ it "does not choke when deleting a non-existing pid file" do
32
32
  pidfile.delete
33
33
  end
34
34
 
35
- it 'does not choke when reading a non-existing pid file' do
35
+ it "does not choke when reading a non-existing pid file" do
36
36
  expect(pidfile.read).to eq(nil)
37
37
  end
38
38
 
39
- it 'reads the pid written to the file' do
39
+ it "reads the pid written to the file" do
40
40
  pidfile.write(1234)
41
41
  expect(pidfile.read).to eq("1234")
42
42
  end
43
43
 
44
- it 'it writes the currents process pid as default' do
44
+ it "it writes the currents process pid as default" do
45
45
  pidfile.write
46
46
  expect(pidfile.read).to eq(Process.pid.to_s)
47
47
  end
@@ -1,77 +1,89 @@
1
- require_relative '../spec_helper'
1
+ require_relative "../spec_helper"
2
2
 
3
3
  RSpec.describe EventHub::Components::StructuredDataLogger do
4
- context 'initalize' do
5
- it 'no raise when all required arguments are given' do
4
+ context "initalize" do
5
+ it "no raise when all required arguments are given" do
6
6
  expect {
7
- EventHub::Components::StructuredDataLogger.new("something not nil", 'app_name' => 'an app', 'env' => 'test')
7
+ EventHub::Components::StructuredDataLogger.new("something not nil", "app_name" => "an app", "env" => "test")
8
8
  }.to_not raise_error
9
9
  end
10
- it 'requires app_name' do
10
+ it "requires app_name" do
11
11
  expect {
12
- EventHub::Components::StructuredDataLogger.new("something not nil", 'env' => 'test')
12
+ EventHub::Components::StructuredDataLogger.new("something not nil", "env" => "test")
13
13
  }.to raise_error(ArgumentError)
14
14
  end
15
- it 'requires app_name' do
15
+ it "requires app_name" do
16
16
  expect {
17
- EventHub::Components::StructuredDataLogger.new("something not nil", 'app_name' => 'an app')
17
+ EventHub::Components::StructuredDataLogger.new("something not nil", "app_name" => "an app")
18
18
  }.to raise_error(ArgumentError)
19
19
  end
20
20
 
21
- it 'adds the default options' do
22
- logger = EventHub::Components::StructuredDataLogger.new("something not nil", 'app_name' => 'an app', 'env' => 'test')
23
- expect(logger.options['pid']).to eq(::Process.pid)
24
- expect(logger.options['hostname']).to eq(::Socket.gethostname)
21
+ it "adds the default options" do
22
+ logger = EventHub::Components::StructuredDataLogger.new("something not nil", "app_name" => "an app", "env" => "test")
23
+ expect(logger.options["pid"]).to eq(::Process.pid)
24
+ expect(logger.options["hostname"]).to eq(::Socket.gethostname)
25
25
  end
26
26
  end
27
27
 
28
- context 'proxy' do
28
+ context "proxy" do
29
29
  let(:logger) do
30
30
  # fake logger that stores a log message
31
31
  # in hash
32
- fake_logger = Hash.new
33
- def fake_logger.debug(message); self[:debug] = message; end
34
- def fake_logger.info(message); self[:info] = message; end
35
- def fake_logger.warn(message); self[:warn] = message; end
36
- def fake_logger.error(message); self[:error] = message; end
37
- def fake_logger.fatal(message); self[:fatal] = message; end
32
+ fake_logger = {}
33
+ def fake_logger.debug(message)
34
+ self[:debug] = message
35
+ end
36
+
37
+ def fake_logger.info(message)
38
+ self[:info] = message
39
+ end
40
+
41
+ def fake_logger.warn(message)
42
+ self[:warn] = message
43
+ end
44
+
45
+ def fake_logger.error(message)
46
+ self[:error] = message
47
+ end
48
+
49
+ def fake_logger.fatal(message)
50
+ self[:fatal] = message
51
+ end
52
+
38
53
  fake_logger
39
54
  end
40
55
  subject {
41
- EventHub::Components::StructuredDataLogger.new(logger, 'app_name' => 'an app', 'env' => 'test')
56
+ EventHub::Components::StructuredDataLogger.new(logger, "app_name" => "an app", "env" => "test")
42
57
  }
43
58
 
44
- it 'enriches and forwards debug calls' do
45
- subject.debug("my message debug", {'some' => 'debug'})
46
- expectation = {'app_name' => 'an app', 'data' => {'some' => 'debug'}, 'env' => 'test', 'hostname' => Socket.gethostname, 'message' => 'my message debug', 'pid' => Process.pid, 'severity' => 7}
59
+ it "enriches and forwards debug calls" do
60
+ subject.debug("my message debug", {"some" => "debug"})
61
+ expectation = {"app_name" => "an app", "data" => {"some" => "debug"}, "env" => "test", "hostname" => Socket.gethostname, "message" => "my message debug", "pid" => Process.pid, "severity" => 7}
47
62
  expect(logger[:debug]).to eq(expectation)
48
63
  end
49
64
 
50
- it 'enriches and forwards info calls' do
51
- subject.info("my message info", {'some' => 'info'})
52
- expectation = {'app_name' => 'an app', 'data' => {'some' => 'info'}, 'env' => 'test', 'hostname' => Socket.gethostname, 'message' => 'my message info', 'pid' => Process.pid, 'severity' => 6}
65
+ it "enriches and forwards info calls" do
66
+ subject.info("my message info", {"some" => "info"})
67
+ expectation = {"app_name" => "an app", "data" => {"some" => "info"}, "env" => "test", "hostname" => Socket.gethostname, "message" => "my message info", "pid" => Process.pid, "severity" => 6}
53
68
  expect(logger[:info]).to eq(expectation)
54
69
  end
55
70
 
56
- it 'enriches and forwards warn calls' do
57
- subject.warn("my message warn", {'some' => 'warn'})
58
- expectation = {'app_name' => 'an app', 'data' => {'some' => 'warn'}, 'env' => 'test', 'hostname' => Socket.gethostname, 'message' => 'my message warn', 'pid' => Process.pid, 'severity' => 4}
71
+ it "enriches and forwards warn calls" do
72
+ subject.warn("my message warn", {"some" => "warn"})
73
+ expectation = {"app_name" => "an app", "data" => {"some" => "warn"}, "env" => "test", "hostname" => Socket.gethostname, "message" => "my message warn", "pid" => Process.pid, "severity" => 4}
59
74
  expect(logger[:warn]).to eq(expectation)
60
75
  end
61
76
 
62
- it 'enriches and forwards error calls' do
63
- subject.error("my message error", {'some' => 'error'})
64
- expectation = {'app_name' => 'an app', 'data' => {'some' => 'error'}, 'env' => 'test', 'hostname' => Socket.gethostname, 'message' => 'my message error', 'pid' => Process.pid, 'severity' => 3}
77
+ it "enriches and forwards error calls" do
78
+ subject.error("my message error", {"some" => "error"})
79
+ expectation = {"app_name" => "an app", "data" => {"some" => "error"}, "env" => "test", "hostname" => Socket.gethostname, "message" => "my message error", "pid" => Process.pid, "severity" => 3}
65
80
  expect(logger[:error]).to eq(expectation)
66
81
  end
67
82
 
68
- it 'enriches and forwards fatal calls' do
69
- subject.fatal("my message fatal", {'some' => 'fatal'})
70
- expectation = {'app_name' => 'an app', 'data' => {'some' => 'fatal'}, 'env' => 'test', 'hostname' => Socket.gethostname, 'message' => 'my message fatal', 'pid' => Process.pid, 'severity' => 0}
83
+ it "enriches and forwards fatal calls" do
84
+ subject.fatal("my message fatal", {"some" => "fatal"})
85
+ expectation = {"app_name" => "an app", "data" => {"some" => "fatal"}, "env" => "test", "hostname" => Socket.gethostname, "message" => "my message fatal", "pid" => Process.pid, "severity" => 0}
71
86
  expect(logger[:fatal]).to eq(expectation)
72
87
  end
73
-
74
88
  end
75
-
76
-
77
89
  end
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,10 @@
1
- require 'bundler/setup'
1
+ require "simplecov"
2
+ SimpleCov.start
3
+
4
+ require "bundler/setup"
2
5
  Bundler.setup
3
- require 'rspec'
4
- require_relative '../lib/eventhub/components'
6
+ require "rspec"
7
+ require_relative "../lib/eventhub/components"
5
8
 
6
9
  RSpec.configure do |config|
7
- #config.mock_with :rspec
8
10
  end
9
-
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventhub-components
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steiner, Thomas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-27 00:00:00.000000000 Z
11
+ date: 2022-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,42 +16,70 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.16'
19
+ version: '2.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.16'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '12.3'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '12.3'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.7.0
47
+ version: '3.11'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.7.0
54
+ version: '3.11'
55
+ - !ruby/object:Gem::Dependency
56
+ name: standard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.14'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.14'
69
+ - !ruby/object:Gem::Dependency
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.21'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.21'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: logstash-logger
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -73,8 +101,10 @@ executables: []
73
101
  extensions: []
74
102
  extra_rdoc_files: []
75
103
  files:
104
+ - ".github/dependabot.yml"
105
+ - ".github/workflows/cd.yml"
106
+ - ".github/workflows/ci.yml"
76
107
  - ".gitignore"
77
- - ".travis.yml"
78
108
  - CHANGELOG.md
79
109
  - Gemfile
80
110
  - LICENSE.txt
@@ -113,14 +143,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
143
  - !ruby/object:Gem::Version
114
144
  version: '0'
115
145
  requirements: []
116
- rubyforge_project:
117
- rubygems_version: 2.6.14
146
+ rubygems_version: 3.3.7
118
147
  signing_key:
119
148
  specification_version: 4
120
149
  summary: Additional eventhub components
121
- test_files:
122
- - spec/components/exception_writer_spec.rb
123
- - spec/components/multi_logger_spec.rb
124
- - spec/components/pid_file_spec.rb
125
- - spec/components/structured_data_logger_spec.rb
126
- - spec/spec_helper.rb
150
+ test_files: []
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- language: ruby
2
- os:
3
- - linux
4
- - osx
5
- osx_image: xcode9.1
6
- rvm:
7
- - 2.4.2
8
- - 2.4.1
9
- - 2.3.1
10
- - 2.1.5
11
- before_install:
12
- - gem install bundler --version '~> 1.16.0'