class LogStash::Inputs::Faker
- NOTE
-
¶ ↑
The values put into the add_faker_field params must be available modules and method calls from the
Faker
gem library seen at github.com/stympy/faker/¶ ↑
Example:
- source, ruby
-
input {
faker { count => 1 add_faker_field => { "[name][last_name]" => "Name.last_name" "[name][first_name]" => "Name.first_name" "[address][city]" => "Address.city" "[address][address1]" => "Address.street_address" } overwrite_fields => true }
}
Public Instance Methods
close()
click to toggle source
# File lib/logstash/inputs/faker.rb, line 211 def close if @codec.respond_to?(:flush) @codec.flush do |event| decorate(event) event.set("host", @host) queue << event end end end
register()
click to toggle source
# File lib/logstash/inputs/faker.rb, line 87 def register @host = Socket.gethostname @count = Array(@count).first end
run(queue)
click to toggle source
# File lib/logstash/inputs/faker.rb, line 92 def run(queue) number = 0 set_primary_key if @add_primary_key_to_events set_foreign_keys if @add_foreign_keys_to_events while !stop? && (@count <= 0 || number < @count) event = LogStash::Event.new({}) add_faker_fields(event) if @splitable_field add_splitable_fields(event) end if @add_primary_key_to_events LogStash::Util::Decorators.add_fields(@primary_key, event,"inputs/#{self.class.name}") end decorate(event) event.set("host", @host) queue << event number += 1 end #end loop end
Protected Instance Methods
add_faker_fields(event)
click to toggle source
# File lib/logstash/inputs/faker.rb, line 123 def add_faker_fields(event) new_fields = {} @add_faker_field.each do |field, faker_string| if @multiply_field[field] event.remove(field) if @overwrite_fields new_fields[field] = generate_multiplied_values(faker_string, @multiply_field[field], true) else event.remove(field) if @overwrite_fields new_fields[field] = Faker.class_eval(faker_string) end end LogStash::Util::Decorators.add_fields(new_fields, event,"inputs/#{self.class.name}") end
add_splitable_fields(event)
click to toggle source
# File lib/logstash/inputs/faker.rb, line 138 def add_splitable_fields(event) event.remove(@splitable_field) splitable_events = [] used_ids = [] if @splitable_field_count <= 0 @splitable_field_count = rand(100) end @splitable_field_count.times do new_event = LogStash::Event.new() @add_splitable_field.each do |field, value| if @multiply_splitable_field[field] new_event.set(field, generate_multiplied_values(faker_string, @multiply_splitable_field[field], false)) else new_event.set(field, event.sprintf(value)) end end @add_splitable_faker_field.each do |field, faker_string| if @multiply_splitable_field[field] new_event.set(field, generate_multiplied_values(faker_string, @multiply_splitable_field[field], true)) else new_event.set(field, event.sprintf(Faker.class_eval(faker_string))) end end if @add_foreign_keys_to_events key = (@foreign_keys - used_ids).sample if key.nil? used_ids = [] key = (@foreign_keys - used_ids).sample else new_event.set(@foreign_key_field, key) end used_ids.push(key) end new_event.remove("@timestamp") new_event.remove("@version") splitable_events << new_event.to_hash end event.set(@splitable_field, splitable_events) end
generate_foreign_keys(key_count)
click to toggle source
# File lib/logstash/inputs/faker.rb, line 202 def generate_foreign_keys(key_count) @foreign_keys = [] while @foreign_keys.size < key_count @foreign_keys.push(Faker::Number.number(10).to_s) @foreign_keys.uniq! end end
generate_multiplied_values(value, count, is_faker=false)
click to toggle source
# File lib/logstash/inputs/faker.rb, line 113 def generate_multiplied_values(value, count, is_faker=false) num = (count == 0 ? rand(1000) : count) if is_faker return num.times.map{ Faker.class_eval(value) } else return num.times.map{ value } end end
set_foreign_keys()
click to toggle source
# File lib/logstash/inputs/faker.rb, line 186 def set_foreign_keys if @add_foreign_keys_to_events && @foreign_keys.empty? @foreign_key_field = "[foreign_id]" if @foreign_key_field.to_s.empty? if @splitable_field_count <= 0 if @count <= 0 generate_foreign_keys(@count) else generate_foreign_keys(1000) end else generate_foreign_keys(@splitable_field_count) end end end
set_primary_key()
click to toggle source
# File lib/logstash/inputs/faker.rb, line 179 def set_primary_key if @add_primary_key_to_events && @primary_key.empty? @primary_key = { "[id]" => Faker::Number.number(10).to_s } end end