logstash-output-scalyr 0.1.25.beta → 0.2.1.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -0
- data/Gemfile +4 -0
- data/README.md +127 -4
- data/lib/logstash/outputs/scalyr.rb +205 -39
- data/lib/scalyr/common/client.rb +10 -1
- data/lib/scalyr/common/util.rb +28 -1
- data/lib/scalyr/constants.rb +4 -1
- data/logstash-output-scalyr.gemspec +3 -2
- data/spec/benchmarks/bignum_fixing.rb +2 -5
- data/spec/benchmarks/flattening_and_serialization.rb +2 -27
- data/spec/benchmarks/json_serialization.rb +85 -0
- data/spec/benchmarks/set_session_level_serverhost_on_events.rb +107 -0
- data/spec/benchmarks/util.rb +24 -0
- data/spec/logstash/outputs/scalyr_integration_spec.rb +63 -16
- data/spec/logstash/outputs/scalyr_spec.rb +523 -15
- data/spec/scalyr/common/util_spec.rb +4 -0
- data/vendor/bundle/jruby/2.5.0/cache/jrjackson-0.4.14-java.gem +0 -0
- data/vendor/bundle/jruby/2.5.0/cache/json-1.8.6-java.gem +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/Gemfile +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/Mavenfile +1 -7
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/README.md +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/Rakefile +8 -2
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/alt_bench.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/changelog.md +25 -2
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/jrjackson.gemspec +2 -1
- data/vendor/bundle/jruby/2.5.0/gems/jrjackson-0.4.14-java/lib/com/fasterxml/jackson/core/jackson-annotations/2.9.10/jackson-annotations-2.9.10.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/jrjackson-0.4.14-java/lib/com/fasterxml/jackson/core/jackson-core/2.9.10/jackson-core-2.9.10.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/jrjackson-0.4.14-java/lib/com/fasterxml/jackson/core/jackson-databind/2.9.10.8/jackson-databind-2.9.10.8.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/jrjackson-0.4.14-java/lib/com/fasterxml/jackson/module/jackson-module-afterburner/2.9.10/jackson-module-afterburner-2.9.10.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/lib/jrjackson/build_info.rb +9 -5
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java/lib/jrjackson/jars/jrjackson-1.2.26.jar → jrjackson-0.4.14-java/lib/jrjackson/jars/jrjackson-1.2.32.jar} +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/lib/jrjackson/jrjackson.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/lib/jrjackson.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/lib/jrjackson_jars.rb +8 -8
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/lib/require_relative_patch.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/pom.xml +8 -25
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/profiling/profiled.rb +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/run_all_individual_bench.sh +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/run_jruby_individual_bench.sh +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/run_mri_individual_bench.sh +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/IParseHandler.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JavaBigDecimalValueConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JavaBigIntValueConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JavaConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JavaFloatValueConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JavaHandler.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JavaLongValueConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JjParse.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JrJacksonBase.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JrJacksonJava.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JrJacksonRaw.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JrJacksonRuby.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JrJacksonSaj.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JrJacksonSch.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JrJacksonService.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/JrParse.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/ParseError.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyAnySerializer.java +4 -4
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyBigDecimalValueConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyBigIntValueConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyDateFormat.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyFloatValueConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyHandler.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyIntValueConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyJacksonModule.java +18 -6
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyKeyConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyNameConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyObjectDeserializer.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyStringConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyStringKeyConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyStringNameConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubySymbolKeyConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubySymbolNameConverter.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/RubyUtils.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/SajParse.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/SchParse.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/main/java/com/jrjackson/StreamParse.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/src/test/java/com/jrjackson/RubyAnySerializerTest.java +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/{jrjackson-0.4.8-java → jrjackson-0.4.14-java}/test/jrjackson_test.rb +15 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/bigdecimal.rb +28 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/complex.rb +28 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/core.rb +11 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/date.rb +34 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/date_time.rb +50 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/exception.rb +31 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/ostruct.rb +31 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/range.rb +29 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/rational.rb +27 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/regexp.rb +30 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/struct.rb +30 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/symbol.rb +25 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/add/time.rb +38 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/common.rb +484 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/ext/generator.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/ext/parser.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/ext.rb +21 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/generic_object.rb +70 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/pure/generator.rb +530 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/pure/parser.rb +359 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/pure.rb +21 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json/version.rb +8 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/lib/json.rb +62 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail1.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail10.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail11.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail12.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail13.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail14.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail18.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail19.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail2.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail20.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail21.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail22.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail23.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail24.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail25.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail27.json +2 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail28.json +2 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail3.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail4.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail5.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail6.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail7.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail8.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/fail9.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/pass1.json +56 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/pass15.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/pass16.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/pass17.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/pass2.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/pass26.json +1 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/fixtures/pass3.json +6 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/setup_variant.rb +11 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/test_json.rb +519 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/test_json_addition.rb +196 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/test_json_encoding.rb +65 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/test_json_fixtures.rb +35 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/test_json_generate.rb +348 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/test_json_generic_object.rb +75 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/test_json_string_matching.rb +39 -0
- data/vendor/bundle/jruby/2.5.0/gems/json-1.8.6-java/tests/test_json_unicode.rb +72 -0
- data/vendor/bundle/jruby/2.5.0/specifications/{jrjackson-0.4.8-java.gemspec → jrjackson-0.4.14-java.gemspec} +7 -7
- data/vendor/bundle/jruby/2.5.0/specifications/json-1.8.6-java.gemspec +37 -0
- metadata +165 -66
- data/vendor/bundle/jruby/2.5.0/cache/jrjackson-0.4.8-java.gem +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/jrjackson-0.4.8-java/lib/com/fasterxml/jackson/core/jackson-annotations/2.9.7/jackson-annotations-2.9.7.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/jrjackson-0.4.8-java/lib/com/fasterxml/jackson/core/jackson-core/2.9.7/jackson-core-2.9.7.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/jrjackson-0.4.8-java/lib/com/fasterxml/jackson/core/jackson-databind/2.9.7/jackson-databind-2.9.7.jar +0 -0
- data/vendor/bundle/jruby/2.5.0/gems/jrjackson-0.4.8-java/lib/com/fasterxml/jackson/module/jackson-module-afterburner/2.9.7/jackson-module-afterburner-2.9.7.jar +0 -0
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'benchmark'
|
2
|
+
require 'json'
|
3
|
+
require 'jrjackson'
|
4
|
+
|
5
|
+
require_relative '../../lib/scalyr/common/util'
|
6
|
+
require_relative './util'
|
7
|
+
|
8
|
+
ITERATIONS = 500
|
9
|
+
|
10
|
+
def json_serialize_data_native(data)
|
11
|
+
data.to_json
|
12
|
+
end
|
13
|
+
|
14
|
+
def json_serialize_data_jrjackson(data)
|
15
|
+
JrJackson::Json.dump(data)
|
16
|
+
end
|
17
|
+
|
18
|
+
DATASETS = {
|
19
|
+
:keys_50 => generate_data_array_for_spec([3, 3, 3, 2]),
|
20
|
+
:keys_200 => generate_data_array_for_spec([4, 4, 3, 4]),
|
21
|
+
:keys_200_flat => generate_data_array_for_spec([200]),
|
22
|
+
:keys_512 => generate_data_array_for_spec([8, 4, 4, 4]),
|
23
|
+
:keys_960 => generate_data_array_for_spec([12, 5, 4, 4]),
|
24
|
+
:keys_2700 => generate_data_array_for_spec([14, 8, 6, 4])
|
25
|
+
}
|
26
|
+
|
27
|
+
def run_benchmark_and_print_results(data, run_benchmark_func)
|
28
|
+
puts ""
|
29
|
+
puts "Using %s total keys in a hash" % [Scalyr::Common::Util.flatten(data[0]).count]
|
30
|
+
puts ""
|
31
|
+
|
32
|
+
result = []
|
33
|
+
ITERATIONS.times do |i|
|
34
|
+
result << Benchmark.measure { run_benchmark_func.(data[i]) }
|
35
|
+
end
|
36
|
+
|
37
|
+
sum = result.inject(nil) { |sum, t| sum.nil? ? sum = t : sum += t }
|
38
|
+
avg = sum / result.size
|
39
|
+
|
40
|
+
Benchmark.bm(7, "sum:", "avg:") do |b|
|
41
|
+
[sum, avg]
|
42
|
+
end
|
43
|
+
puts ""
|
44
|
+
end
|
45
|
+
|
46
|
+
puts "Using %s iterations" % [ITERATIONS]
|
47
|
+
puts ""
|
48
|
+
|
49
|
+
puts "native"
|
50
|
+
puts "==============================="
|
51
|
+
|
52
|
+
# Around ~50 keys in a hash
|
53
|
+
data = DATASETS[:keys_50]
|
54
|
+
run_benchmark_and_print_results(data, method(:json_serialize_data_native))
|
55
|
+
|
56
|
+
# Around ~200 keys in a hash
|
57
|
+
data = DATASETS[:keys_200]
|
58
|
+
run_benchmark_and_print_results(data, method(:json_serialize_data_native))
|
59
|
+
|
60
|
+
# Around ~200 keys in a hash (single level)
|
61
|
+
data = DATASETS[:keys_200_flat]
|
62
|
+
run_benchmark_and_print_results(data, method(:json_serialize_data_native))
|
63
|
+
|
64
|
+
# Around ~2700 keys in a hash
|
65
|
+
data = DATASETS[:keys_2700]
|
66
|
+
run_benchmark_and_print_results(data, method(:json_serialize_data_native))
|
67
|
+
|
68
|
+
puts "jrjackson"
|
69
|
+
puts "==============================="
|
70
|
+
|
71
|
+
# Around ~50 keys in a hash
|
72
|
+
data = DATASETS[:keys_50]
|
73
|
+
run_benchmark_and_print_results(data, method(:json_serialize_data_jrjackson))
|
74
|
+
|
75
|
+
# Around ~200 keys in a hash
|
76
|
+
data = DATASETS[:keys_200]
|
77
|
+
run_benchmark_and_print_results(data, method(:json_serialize_data_jrjackson))
|
78
|
+
|
79
|
+
# Around ~200 keys in a hash (single level)
|
80
|
+
data = DATASETS[:keys_200_flat]
|
81
|
+
run_benchmark_and_print_results(data, method(:json_serialize_data_jrjackson))
|
82
|
+
|
83
|
+
# Around ~2700 keys in a hash
|
84
|
+
data = DATASETS[:keys_2700]
|
85
|
+
run_benchmark_and_print_results(data, method(:json_serialize_data_jrjackson))
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'benchmark'
|
2
|
+
require 'quantile'
|
3
|
+
|
4
|
+
require_relative '../../lib/scalyr/constants'
|
5
|
+
require_relative '../../lib/scalyr/common/util'
|
6
|
+
require_relative './util'
|
7
|
+
|
8
|
+
# Micro benchmark which measures how long "set_session_level_serverhost_on_events" takes
|
9
|
+
|
10
|
+
ITERATIONS = 100
|
11
|
+
|
12
|
+
def run_benchmark_and_print_results(data, run_benchmark_func)
|
13
|
+
puts ""
|
14
|
+
puts "Using %s total events in a batch" % [data[0].size]
|
15
|
+
puts ""
|
16
|
+
|
17
|
+
result = []
|
18
|
+
ITERATIONS.times do |i|
|
19
|
+
result << Benchmark.measure { run_benchmark_func.(data[i]) }
|
20
|
+
end
|
21
|
+
|
22
|
+
sum = result.inject(nil) { |sum, t| sum.nil? ? sum = t : sum += t }
|
23
|
+
avg = sum / result.size
|
24
|
+
|
25
|
+
Benchmark.bm(7, "sum:", "avg:") do |b|
|
26
|
+
[sum, avg]
|
27
|
+
end
|
28
|
+
puts ""
|
29
|
+
end
|
30
|
+
|
31
|
+
# Generate random event with only single event having special server host attribute set which
|
32
|
+
# represents a worst case scenario since we need to backfill rest of the events.
|
33
|
+
def generate_events(count)
|
34
|
+
result = []
|
35
|
+
|
36
|
+
ITERATIONS.times do |iteration|
|
37
|
+
events = []
|
38
|
+
|
39
|
+
count.times do |index|
|
40
|
+
event = generate_hash([2])
|
41
|
+
event[:attrs] = Hash.new
|
42
|
+
event[:log] = 1
|
43
|
+
|
44
|
+
if index == count - 1
|
45
|
+
event[:attrs][EVENT_LEVEL_SERVER_HOST_ATTRIBUTE_NAME] = format("test-host-%s", index)
|
46
|
+
end
|
47
|
+
|
48
|
+
events << event
|
49
|
+
end
|
50
|
+
|
51
|
+
raise "Assertion failed" unless events.size == count
|
52
|
+
|
53
|
+
result << events
|
54
|
+
end
|
55
|
+
|
56
|
+
raise "Assertion failed" unless result.size == ITERATIONS
|
57
|
+
result
|
58
|
+
end
|
59
|
+
|
60
|
+
def run_func(events)
|
61
|
+
# NOTE: This function manipulates events in place
|
62
|
+
events.each_with_index do |event, index|
|
63
|
+
if index < events.size - 1
|
64
|
+
# Last event will have _origServerHost set, but others won't
|
65
|
+
raise "Assertion failed" unless event[:attrs][EVENT_LEVEL_SERVER_HOST_ATTRIBUTE_NAME].nil?
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
Scalyr::Common::Util.set_session_level_serverhost_on_events("session-server-host-dummy", events, {}, true)
|
70
|
+
|
71
|
+
events.each do |event|
|
72
|
+
raise "Assertion failed" unless event[:attrs][EVENT_LEVEL_SERVER_HOST_ATTRIBUTE_NAME].nil? == false
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
|
77
|
+
puts "Using %s iterations" % [ITERATIONS]
|
78
|
+
puts ""
|
79
|
+
|
80
|
+
@value = Quantile::Estimator.new
|
81
|
+
|
82
|
+
puts "Util.set_session_level_serverhost_on_events()"
|
83
|
+
puts "==============================="
|
84
|
+
|
85
|
+
# 100 events in a batch
|
86
|
+
data = generate_events(100)
|
87
|
+
run_benchmark_and_print_results(data, method(:run_func))
|
88
|
+
|
89
|
+
# 500 events in a batch
|
90
|
+
data = generate_events(500)
|
91
|
+
run_benchmark_and_print_results(data, method(:run_func))
|
92
|
+
|
93
|
+
# 1000 events in a batch
|
94
|
+
data = generate_events(1000)
|
95
|
+
run_benchmark_and_print_results(data, method(:run_func))
|
96
|
+
|
97
|
+
# 2000 events in a batch
|
98
|
+
data = generate_events(2000)
|
99
|
+
run_benchmark_and_print_results(data, method(:run_func))
|
100
|
+
|
101
|
+
# 3000 events in a batch
|
102
|
+
data = generate_events(3000)
|
103
|
+
run_benchmark_and_print_results(data, method(:run_func))
|
104
|
+
|
105
|
+
# 5000 events in a batch
|
106
|
+
data = generate_events(5000)
|
107
|
+
run_benchmark_and_print_results(data, method(:run_func))
|
@@ -0,0 +1,24 @@
|
|
1
|
+
def rand_str(len)
|
2
|
+
return (0...len).map { (65 + rand(26)).chr }.join
|
3
|
+
end
|
4
|
+
|
5
|
+
def generate_hash(widths)
|
6
|
+
result = {}
|
7
|
+
if widths.empty?
|
8
|
+
return rand_str(20)
|
9
|
+
else
|
10
|
+
widths[0].times do
|
11
|
+
result[rand_str(9)] = generate_hash(widths[1..widths.length])
|
12
|
+
end
|
13
|
+
return result
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def generate_data_array_for_spec(spec)
|
18
|
+
data = []
|
19
|
+
ITERATIONS.times do
|
20
|
+
data << generate_hash(spec)
|
21
|
+
end
|
22
|
+
|
23
|
+
data
|
24
|
+
end
|
@@ -5,6 +5,11 @@ require "logstash/codecs/plain"
|
|
5
5
|
require "logstash/event"
|
6
6
|
require "json"
|
7
7
|
require 'webmock/rspec'
|
8
|
+
|
9
|
+
# Require the specific version of `json` used in logstash
|
10
|
+
gem 'json', '1.8.6'
|
11
|
+
require 'json'
|
12
|
+
|
8
13
|
WebMock.allow_net_connect!
|
9
14
|
|
10
15
|
RSpec.configure do |rspec|
|
@@ -31,7 +36,10 @@ describe LogStash::Outputs::Scalyr do
|
|
31
36
|
describe "#ssl_tests" do
|
32
37
|
context "with default SSL configuration" do
|
33
38
|
it "throws a ServerError due to fake api key" do
|
34
|
-
plugin = LogStash::Outputs::Scalyr.new({
|
39
|
+
plugin = LogStash::Outputs::Scalyr.new({
|
40
|
+
'api_write_token' => '1234',
|
41
|
+
'perform_connectivity_check' => false,
|
42
|
+
})
|
35
43
|
plugin.register
|
36
44
|
plugin.instance_variable_set(:@running, false)
|
37
45
|
allow(plugin.instance_variable_get(:@logger)).to receive(:error)
|
@@ -42,7 +50,7 @@ describe LogStash::Outputs::Scalyr do
|
|
42
50
|
:batch_num=>1,
|
43
51
|
:code=>401,
|
44
52
|
:message=>"error/client/badParam",
|
45
|
-
:payload_size=>
|
53
|
+
:payload_size=>737,
|
46
54
|
:record_count=>3,
|
47
55
|
:total_batches=>1,
|
48
56
|
:url=>"https://agent.scalyr.com/addEvents",
|
@@ -55,7 +63,12 @@ describe LogStash::Outputs::Scalyr do
|
|
55
63
|
|
56
64
|
context "when pointing at a location without any valid certs and not using builtin" do
|
57
65
|
it "throws an SSLError" do
|
58
|
-
plugin = LogStash::Outputs::Scalyr.new({
|
66
|
+
plugin = LogStash::Outputs::Scalyr.new({
|
67
|
+
'api_write_token' => '1234',
|
68
|
+
'perform_connectivity_check' => false,
|
69
|
+
'ssl_ca_bundle_path' => '/fakepath/nocerts',
|
70
|
+
'append_builtin_cert' => false,
|
71
|
+
})
|
59
72
|
plugin.register
|
60
73
|
plugin.instance_variable_set(:@running, false)
|
61
74
|
allow(plugin.instance_variable_get(:@logger)).to receive(:error)
|
@@ -65,7 +78,7 @@ describe LogStash::Outputs::Scalyr do
|
|
65
78
|
:error_class=>"Manticore::UnknownException",
|
66
79
|
:batch_num=>1,
|
67
80
|
:message=>"java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty",
|
68
|
-
:payload_size=>
|
81
|
+
:payload_size=>737,
|
69
82
|
:record_count=>3,
|
70
83
|
:total_batches=>1,
|
71
84
|
:url=>"https://agent.scalyr.com/addEvents",
|
@@ -81,7 +94,11 @@ describe LogStash::Outputs::Scalyr do
|
|
81
94
|
`sudo mv #{OpenSSL::X509::DEFAULT_CERT_DIR} /tmp/system_certs`
|
82
95
|
|
83
96
|
begin
|
84
|
-
plugin = LogStash::Outputs::Scalyr.new({
|
97
|
+
plugin = LogStash::Outputs::Scalyr.new({
|
98
|
+
'api_write_token' => '1234',
|
99
|
+
'perform_connectivity_check' => false,
|
100
|
+
'append_builtin_cert' => false,
|
101
|
+
})
|
85
102
|
plugin.register
|
86
103
|
plugin.instance_variable_set(:@running, false)
|
87
104
|
allow(plugin.instance_variable_get(:@logger)).to receive(:error)
|
@@ -91,7 +108,7 @@ describe LogStash::Outputs::Scalyr do
|
|
91
108
|
:error_class=>"Manticore::UnknownException",
|
92
109
|
:batch_num=>1,
|
93
110
|
:message=>"java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty",
|
94
|
-
:payload_size=>
|
111
|
+
:payload_size=>737,
|
95
112
|
:record_count=>3,
|
96
113
|
:total_batches=>1,
|
97
114
|
:url=>"https://agent.scalyr.com/addEvents",
|
@@ -120,7 +137,11 @@ describe LogStash::Outputs::Scalyr do
|
|
120
137
|
`echo "#{etc_hosts_entry}" | sudo tee -a /etc/hosts`
|
121
138
|
|
122
139
|
begin
|
123
|
-
plugin = LogStash::Outputs::Scalyr.new({
|
140
|
+
plugin = LogStash::Outputs::Scalyr.new({
|
141
|
+
'api_write_token' => '1234',
|
142
|
+
'perform_connectivity_check' => false,
|
143
|
+
'scalyr_server' => 'https://invalid.mitm.should.fail.test.agent.scalyr.com:443',
|
144
|
+
})
|
124
145
|
plugin.register
|
125
146
|
plugin.instance_variable_set(:@running, false)
|
126
147
|
allow(plugin.instance_variable_get(:@logger)).to receive(:error)
|
@@ -130,7 +151,7 @@ describe LogStash::Outputs::Scalyr do
|
|
130
151
|
:error_class=>"Manticore::UnknownException",
|
131
152
|
:batch_num=>1,
|
132
153
|
:message=>"Host name 'invalid.mitm.should.fail.test.agent.scalyr.com' does not match the certificate subject provided by the peer (CN=*.scalyr.com)",
|
133
|
-
:payload_size=>
|
154
|
+
:payload_size=>737,
|
134
155
|
:record_count=>3,
|
135
156
|
:total_batches=>1,
|
136
157
|
:url=>"https://invalid.mitm.should.fail.test.agent.scalyr.com/addEvents",
|
@@ -147,7 +168,13 @@ describe LogStash::Outputs::Scalyr do
|
|
147
168
|
|
148
169
|
context "when an error occurs with retries at 5" do
|
149
170
|
it "exits after 5 retries and emits a log" do
|
150
|
-
plugin = LogStash::Outputs::Scalyr.new({
|
171
|
+
plugin = LogStash::Outputs::Scalyr.new({
|
172
|
+
'api_write_token' => '1234',
|
173
|
+
'perform_connectivity_check' => false,
|
174
|
+
'retry_initial_interval' => 0.1,
|
175
|
+
'ssl_ca_bundle_path' => '/fakepath/nocerts',
|
176
|
+
'append_builtin_cert' => false
|
177
|
+
})
|
151
178
|
plugin.register
|
152
179
|
allow(plugin.instance_variable_get(:@logger)).to receive(:error)
|
153
180
|
plugin.multi_receive(sample_events)
|
@@ -163,7 +190,12 @@ describe LogStash::Outputs::Scalyr do
|
|
163
190
|
stub_request(:post, "https://agent.scalyr.com/addEvents").
|
164
191
|
to_return(status: 503, body: "stubbed response", headers: {})
|
165
192
|
|
166
|
-
plugin = LogStash::Outputs::Scalyr.new({
|
193
|
+
plugin = LogStash::Outputs::Scalyr.new({
|
194
|
+
'api_write_token' => '1234',
|
195
|
+
'perform_connectivity_check' => false,
|
196
|
+
'ssl_ca_bundle_path' => '/fakepath/nocerts',
|
197
|
+
'append_builtin_cert' => false
|
198
|
+
})
|
167
199
|
plugin.register
|
168
200
|
plugin.instance_variable_set(:@running, false)
|
169
201
|
|
@@ -175,7 +207,7 @@ describe LogStash::Outputs::Scalyr do
|
|
175
207
|
:batch_num=>1,
|
176
208
|
:code=>503,
|
177
209
|
:message=>"Invalid JSON response from server",
|
178
|
-
:payload_size=>
|
210
|
+
:payload_size=>737,
|
179
211
|
:record_count=>3,
|
180
212
|
:total_batches=>1,
|
181
213
|
:url=>"https://agent.scalyr.com/addEvents",
|
@@ -191,7 +223,12 @@ describe LogStash::Outputs::Scalyr do
|
|
191
223
|
stub_request(:post, "https://agent.scalyr.com/addEvents").
|
192
224
|
to_return(status: 500, body: "stubbed response", headers: {})
|
193
225
|
|
194
|
-
plugin = LogStash::Outputs::Scalyr.new({
|
226
|
+
plugin = LogStash::Outputs::Scalyr.new({
|
227
|
+
'api_write_token' => '1234',
|
228
|
+
'perform_connectivity_check' => false,
|
229
|
+
'ssl_ca_bundle_path' => '/fakepath/nocerts',
|
230
|
+
'append_builtin_cert' => false
|
231
|
+
})
|
195
232
|
plugin.register
|
196
233
|
plugin.instance_variable_set(:@running, false)
|
197
234
|
|
@@ -203,7 +240,7 @@ describe LogStash::Outputs::Scalyr do
|
|
203
240
|
:batch_num=>1,
|
204
241
|
:code=>500,
|
205
242
|
:message=>"Invalid JSON response from server",
|
206
|
-
:payload_size=>
|
243
|
+
:payload_size=>737,
|
207
244
|
:record_count=>3,
|
208
245
|
:total_batches=>1,
|
209
246
|
:url=>"https://agent.scalyr.com/addEvents",
|
@@ -219,7 +256,12 @@ describe LogStash::Outputs::Scalyr do
|
|
219
256
|
stub_request(:post, "https://agent.scalyr.com/addEvents").
|
220
257
|
to_return(status: 500, body: "0123456789" * 52, headers: {})
|
221
258
|
|
222
|
-
plugin = LogStash::Outputs::Scalyr.new({
|
259
|
+
plugin = LogStash::Outputs::Scalyr.new({
|
260
|
+
'api_write_token' => '1234',
|
261
|
+
'perform_connectivity_check' => false,
|
262
|
+
'ssl_ca_bundle_path' => '/fakepath/nocerts',
|
263
|
+
'append_builtin_cert' => false
|
264
|
+
})
|
223
265
|
plugin.register
|
224
266
|
plugin.instance_variable_set(:@running, false)
|
225
267
|
|
@@ -231,7 +273,7 @@ describe LogStash::Outputs::Scalyr do
|
|
231
273
|
:batch_num=>1,
|
232
274
|
:code=>500,
|
233
275
|
:message=>"Invalid JSON response from server",
|
234
|
-
:payload_size=>
|
276
|
+
:payload_size=>737,
|
235
277
|
:record_count=>3,
|
236
278
|
:total_batches=>1,
|
237
279
|
:url=>"https://agent.scalyr.com/addEvents",
|
@@ -248,7 +290,12 @@ describe LogStash::Outputs::Scalyr do
|
|
248
290
|
stub_request(:post, "https://agent.scalyr.com/addEvents").
|
249
291
|
to_return(status: 500, body: "stubbed response", headers: {})
|
250
292
|
|
251
|
-
plugin = LogStash::Outputs::Scalyr.new({
|
293
|
+
plugin = LogStash::Outputs::Scalyr.new({
|
294
|
+
'api_write_token' => '1234',
|
295
|
+
'perform_connectivity_check' => false,
|
296
|
+
'ssl_ca_bundle_path' => '/fakepath/nocerts',
|
297
|
+
'append_builtin_cert' => false
|
298
|
+
})
|
252
299
|
plugin.register
|
253
300
|
plugin.instance_variable_set(:@running, false)
|
254
301
|
plugin.instance_variable_set('@dlq_writer', dlq_writer)
|