class StructuredNoise::Generator
Constants
- MAGIC_BYTE
Public Class Methods
new(schema:, base64: false, messages_per_second: 0)
click to toggle source
# File lib/structured_noise/generator.rb, line 11 def initialize(schema:, base64: false, messages_per_second: 0) @schema_file_name = schema @output_base64 = base64 @messages_per_second = messages_per_second @schemas = {} AvroPinions.configure({ wire_format: :single_object }) @message = Class.new(AvroPinions::Message) do def initialize(avro_schema, data) @avro_schema = avro_schema @data = data end def record @data end def avro_schema @avro_schema end end end
Public Instance Methods
avro_schema()
click to toggle source
# File lib/structured_noise/generator.rb, line 29 def avro_schema @avro_schema end
generate_output()
click to toggle source
# File lib/structured_noise/generator.rb, line 43 def generate_output with_timing do msg = @message.new(@avro_schema, generate_random_fields).encode if @output_base64 msg = Base64.encode64(msg) end puts msg end end
generate_random_fields()
click to toggle source
# File lib/structured_noise/generator.rb, line 53 def generate_random_fields @avro_schema.fields.inject(Hash.new) do |hash, field| type_gen = TypeGenerator.new(field) hash[field.name] = type_gen.generate_value hash end end
load_schema()
click to toggle source
# File lib/structured_noise/generator.rb, line 35 def load_schema json = JSON.parse(File.read(@schema_file_name)) @schema_name = json["name"] @namespace = json["namespace"] || "" @avro_schema = Avro::Schema.real_parse(json) end
record()
click to toggle source
# File lib/structured_noise/generator.rb, line 25 def record @data end
with_timing() { || ... }
click to toggle source
# File lib/structured_noise/generator.rb, line 61 def with_timing while true yield if(@messages_per_second) sleep (1 / @messages_per_second) end end end