From d832fe70633d52bb9f1d4546fc159a7b41c7d59b Mon Sep 17 00:00:00 2001 From: Armin Braun Date: Wed, 3 May 2017 07:54:00 +0200 Subject: [PATCH] #5 works --- lib/logstash/filters/cli_transcoder.rb | 51 +++++++++++++++++++ .../logstash/uaparser/UserAgentParser.java | 30 +++++------ 2 files changed, 66 insertions(+), 15 deletions(-) create mode 100644 lib/logstash/filters/cli_transcoder.rb diff --git a/lib/logstash/filters/cli_transcoder.rb b/lib/logstash/filters/cli_transcoder.rb new file mode 100644 index 0000000..06f43a8 --- /dev/null +++ b/lib/logstash/filters/cli_transcoder.rb @@ -0,0 +1,51 @@ +# encoding: utf-8 + +require "logstash-core" +require "logstash/logging" +require "logstash/environment" +require "logstash/devutils/rspec/logstash_helpers" +require "logstash/devutils/rspec/shared_examples" +require "logstash/filters/useragent" +require "logstash/filters/useragent_java" +require "yaml" + +testcases = [ + "additional_os_tests.yaml", "firefox_user_agent_strings.yaml", + "opera_mini_user_agent_strings.yaml", "pgts_browser_list.yaml", + "pgts_browser_list-orig.yaml", "test_device.yaml", "test_os.yaml", + "test_ua.yaml" +] + +test_case_path = File.expand_path('../../../../ua-parser/src/test/resources', __FILE__) + +lines = testcases.flat_map do |test_case_file| + YAML.load_file(File.join(test_case_path, test_case_file))['test_cases'].map do |test_case| + test_case['user_agent_string'] + end +end + +# +#::File.open('/tmp/lines.txt', 'a+') do |f| +# lines.each do |line| +# f.write "#{line}\n" +# end +# f.flush +#end + +ruby_filter = LogStash::Filters::UserAgent.new("source" => "foo") +ruby_filter.register +java_filter = LogStash::Filters::UserAgentJava.new("source" => "foo") +java_filter.register + +puts(Time.now.to_s) +(1..lines.length).each do |n| + ruby_filter.lookup_useragent lines[n] +end + +puts(Time.now.to_s) + +(1..lines.length).each do |n| + java_filter.lookup_useragent lines[n] +end + +puts(Time.now.to_s) diff --git a/ua-parser/src/main/java/org/logstash/uaparser/UserAgentParser.java b/ua-parser/src/main/java/org/logstash/uaparser/UserAgentParser.java index d62485d..2966074 100644 --- a/ua-parser/src/main/java/org/logstash/uaparser/UserAgentParser.java +++ b/ua-parser/src/main/java/org/logstash/uaparser/UserAgentParser.java @@ -46,7 +46,7 @@ public UserAgent parse(String agentString) { return null; } UserAgent agent; - for (UserAgentParser.UAPattern p : patterns) { + for (UserAgentParser.UAPattern p : this.patterns) { if ((agent = p.match(agentString)) != null) { return agent; } @@ -54,20 +54,7 @@ public UserAgent parse(String agentString) { return new UserAgent("Other", null, null, null); } - protected static UserAgentParser.UAPattern patternFromMap(Map configMap) { - String regex = configMap.get("regex"); - if (regex == null) { - throw new IllegalArgumentException("User agent is missing regex"); - } - return new UAPattern( - Pattern.compile(regex), - configMap.get("family_replacement"), - configMap.get("v1_replacement"), - configMap.get("v2_replacement") - ); - } - - protected static class UAPattern { + private static class UAPattern { private final Pattern pattern; private final String familyReplacement, v1Replacement, v2Replacement; @@ -113,4 +100,17 @@ public UserAgent match(String agentString) { return family == null ? null : new UserAgent(family, v1, v2, v3); } } + + private static UserAgentParser.UAPattern patternFromMap(Map configMap) { + String regex = configMap.get("regex"); + if (regex == null) { + throw new IllegalArgumentException("User agent is missing regex"); + } + return new UserAgentParser.UAPattern( + Pattern.compile(regex), + configMap.get("family_replacement"), + configMap.get("v1_replacement"), + configMap.get("v2_replacement") + ); + } }