logstash-input-faker 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 36d8b31ac016bd92319e5ae44622638e939ee1d8
4
+ data.tar.gz: b05d8e7ed0df4ceee77c5231c879b74a987ac952
5
+ SHA512:
6
+ metadata.gz: ce2f6fd7c5073eaac2e8c3a313d4da55fd053f42db1abfad3e7fc259218fd2dae62f3eb7b01bdce167ca570af409eea5091eb6e49a1019534ca3ca66d7bb44ed
7
+ data.tar.gz: 6ec81fe0774de8102c1bfdbc0f4433815af3d255fd4476c84bd4fdbbf77814eea065a2626cd6285f035bc98690bd59643e72409ba96f70e47863b65b8c796bb8
data/CONTRIBUTORS ADDED
@@ -0,0 +1,10 @@
1
+ The following is a list of people who have contributed ideas, code, bug
2
+ reports, or in general have helped logstash along its way.
3
+
4
+ Contributors:
5
+ * jsericks - jsericks@gmail.com
6
+
7
+ Note: If you've sent us patches, bug reports, or otherwise contributed to
8
+ Logstash, and you aren't on the list above and want to be, please let us know
9
+ and we'll make sure you're here. Contributions from folks like you are what make
10
+ open source awesome.
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ logstash_path = "../../logstash"
6
+
7
+ if Dir.exist?(logstash_path) && ENV["LOGSTASH_SOURCE"] == 1
8
+ gem 'logstash-core', :path => "#{logstash_path}/logstash-core"
9
+ gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api"
10
+ end
data/LICENSE ADDED
@@ -0,0 +1,11 @@
1
+ Licensed under the Apache License, Version 2.0 (the "License");
2
+ you may not use this file except in compliance with the License.
3
+ You may obtain a copy of the License at
4
+
5
+ http://www.apache.org/licenses/LICENSE-2.0
6
+
7
+ Unless required by applicable law or agreed to in writing, software
8
+ distributed under the License is distributed on an "AS IS" BASIS,
9
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ See the License for the specific language governing permissions and
11
+ limitations under the License.
data/README.md ADDED
File without changes
@@ -0,0 +1,89 @@
1
+ # encoding: utf-8
2
+ # require "logstash-core"
3
+ require "logstash/inputs/base"
4
+ require "logstash/namespace"
5
+ require "logstash/util/decorators"
6
+ require "faker"
7
+ require "socket" # for Socket.gethostname
8
+
9
+ I18n.reload!
10
+
11
+ # [NOTE]
12
+ # ===================================================================
13
+ # The values put into the add_faker_field params must be available
14
+ # modules and method calls from the Faker gem library seen at
15
+ # https://github.com/stympy/faker/
16
+ # ===================================================================
17
+ # Example:
18
+ # [source, ruby]
19
+ # input {
20
+ # faker {
21
+ # count => 1
22
+ # add_faker_field => {
23
+ # "[name][last_name]" => "Name.last_name"
24
+ # "[name][first_name]" => "Name.first_name"
25
+ # "[address][city]" => "Address.city"
26
+ # "[address][address1]" => "Address.street_address"
27
+ # }
28
+ # overwrite_fields => true
29
+ # }
30
+ # }
31
+
32
+ class LogStash::Inputs::Faker < LogStash::Inputs::Base
33
+ config_name "faker"
34
+
35
+ default :codec, "plain"
36
+
37
+ config :add_faker_field, :validate => :hash, :default => {}
38
+
39
+ # Will overwrite fields that are in the event prior to add_faker_field
40
+ # being invoked ( usually fields created using add_field ) if true
41
+ # when false this will insert the new faker values into an array with
42
+ # the previously defined event values
43
+ config :overwrite_fields, :validate => :boolean, :default => false
44
+
45
+ # The number of events to generate
46
+ # When not explicitly defined plugin will
47
+ # generate events until stopped
48
+ config :count, :validate => :number, :default => 0
49
+
50
+ public
51
+ def register
52
+ @host = Socket.gethostname
53
+ @count = Array(@count).first
54
+ end
55
+
56
+ def run(queue)
57
+ number = 0
58
+
59
+ while !stop? && (@count <= 0 || number < @count)
60
+ event = LogStash::Event.new({})
61
+ add_faker_fields(event)
62
+ decorate(event)
63
+ event.set("host", @host)
64
+ queue << event
65
+ number += 1
66
+ end #end loop
67
+ end # end run
68
+
69
+ protected
70
+ def add_faker_fields(event)
71
+ new_fields = {}
72
+ @add_faker_field.each do |field, faker_string|
73
+ event.remove(field) if @overwrite_fields
74
+ new_fields[field] = Faker.class_eval(faker_string)
75
+ end
76
+ LogStash::Util::Decorators.add_fields(new_fields,event,"inputs/#{self.class.name}")
77
+ end
78
+
79
+ public
80
+ def close
81
+ if @codec.respond_to?(:flush)
82
+ @codec.flush do |event|
83
+ decorate(event)
84
+ event.set("host", @host)
85
+ queue << event
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,29 @@
1
+ Gem::Specification.new do |s|
2
+
3
+ s.name = 'logstash-input-faker'
4
+ s.version = '0.1.0'
5
+ s.licenses = ['Apache License (2.0)']
6
+ s.summary = "Generate log events with fake data"
7
+ s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
8
+ s.authors = ["Jsericks"]
9
+ s.email = 'jsericks@gmail.com'
10
+ s.homepage = "http://www.elastic.co/guide/en/logstash/current/index.html"
11
+ s.require_paths = ["lib"]
12
+
13
+ # Files
14
+ s.files = Dir["lib/**/*","spec/**/*","*.gemspec","*.md","CONTRIBUTORS","Gemfile","LICENSE","NOTICE.TXT", "vendor/jar-dependencies/**/*.jar", "vendor/jar-dependencies/**/*.rb", "VERSION", "docs/**/*"]
15
+
16
+ # Tests
17
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
18
+
19
+ # Special flag to let us know this is actually a logstash plugin
20
+ s.metadata = { "logstash_plugin" => "true", "logstash_group" => "input" }
21
+
22
+ # Gem dependencies
23
+ s.add_runtime_dependency "logstash-core"
24
+ s.add_runtime_dependency "logstash-core-plugin-api"
25
+ s.add_runtime_dependency "logstash-codec-plain"
26
+ s.add_runtime_dependency "faker", "~> 1.7", ">= 1.7.3"
27
+
28
+ s.add_development_dependency 'logstash-devutils'
29
+ end
@@ -0,0 +1,59 @@
1
+
2
+ require "logstash/devutils/rspec/spec_helper"
3
+ require "logstash/inputs/faker"
4
+
5
+ describe LogStash::Inputs::Faker do
6
+ it_behaves_like "an interruptible input plugin" do
7
+ let(:config) { { } }
8
+ end
9
+
10
+ it "should generate a message and remove the Faker calls" do
11
+ plg = LogStash::Inputs::Faker.new
12
+ plg.count = 1
13
+ plg.add_faker_field = {
14
+ "first_name" => "Name.first_name",
15
+ "last_name" => "Name.last_name"
16
+ }
17
+
18
+ event = plugin_input(plg) do |result|
19
+ result.pop
20
+ end
21
+
22
+ insist { event }.is_a? LogStash::Event
23
+ insist { event.get("first_name") } != "Name.first_name"
24
+ insist { event.get("last_name") } != "Name.last_name"
25
+ end
26
+
27
+ it "should generate a message with nested fields and the added_field" do
28
+ plg = LogStash::Inputs::Faker.new
29
+ plg.count = 1
30
+ plg.add_faker_field = {
31
+ "[name][first_name]" => "Name.first_name",
32
+ "[name][last_name]" => "Name.last_name"
33
+ }
34
+ plg.add_field = { "[name][middle_name]" => "Jimmy" }
35
+
36
+ event = plugin_input(plg) do |result|
37
+ result.pop
38
+ end
39
+
40
+ insist { event }.is_a? LogStash::Event
41
+ insist { event.get("[name][middle_name]") } == "Jimmy"
42
+ insist { event.get("[name][first_name]") } != "Name.first_name"
43
+ insist { event.get("[name][last_name]") } != "Name.last_name"
44
+ end
45
+
46
+ it "should generate 100 messages" do
47
+ plg = LogStash::Inputs::Faker.new
48
+ plg.count = 100
49
+ plg.add_faker_field = {
50
+ "first_name" => "Name.first_name",
51
+ "last_name" => "Name.last_name"
52
+ }
53
+ events = plugin_input(plg) do |result|
54
+ 100.times.map{result.pop}
55
+ end
56
+
57
+ insist { events.size } == 100
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: logstash-input-faker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Jsericks
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-05-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ name: logstash-core
20
+ prerelease: false
21
+ type: :runtime
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ name: logstash-core-plugin-api
34
+ prerelease: false
35
+ type: :runtime
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ name: logstash-codec-plain
48
+ prerelease: false
49
+ type: :runtime
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.7'
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 1.7.3
64
+ name: faker
65
+ prerelease: false
66
+ type: :runtime
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '1.7'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.7.3
75
+ - !ruby/object:Gem::Dependency
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ name: logstash-devutils
82
+ prerelease: false
83
+ type: :development
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ description: This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program
90
+ email: jsericks@gmail.com
91
+ executables: []
92
+ extensions: []
93
+ extra_rdoc_files: []
94
+ files:
95
+ - CONTRIBUTORS
96
+ - Gemfile
97
+ - LICENSE
98
+ - README.md
99
+ - lib/logstash/inputs/faker.rb
100
+ - logstash-input-faker.gemspec
101
+ - spec/inputs/faker_spec.rb
102
+ homepage: http://www.elastic.co/guide/en/logstash/current/index.html
103
+ licenses:
104
+ - Apache License (2.0)
105
+ metadata:
106
+ logstash_plugin: 'true'
107
+ logstash_group: input
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 2.6.6
125
+ signing_key:
126
+ specification_version: 4
127
+ summary: Generate log events with fake data
128
+ test_files:
129
+ - spec/inputs/faker_spec.rb