reduce metrics generated by UA tracker

This commit is contained in:
Konstantin Haase 2014-10-28 11:11:52 +01:00
parent 14623ed088
commit 950b8ce4d8
2 changed files with 6 additions and 48 deletions

View File

@ -37,27 +37,14 @@ class Travis::Api::App
end
def mark_travis(agent)
os, *rest = agent.application.comment
ruby, rubygems, command = "unknown", "unknown", nil
rest.each do |comment|
case comment
when /^Ruby (\d\.\d.\d)/ then ruby = $1
when /^RubyGems (.+)$/ then rubygems = $1
when /^command (.+)$/ then command = $1
end
end
# "Ubuntu 12.04 like Linux" => "linux.ubuntu.12.04"
if os =~ /^(.+) (\S+) like (\S+)$/
os = "#{$3}.#{$1}.#{$2[/\d+\.\d+/]}"
end
command = agent.application.comment.detect { |c| c.start_with? "command " }
if command
mark(:cli, version: agent.version, ruby: ruby, rubygems: rubygems, command: command, os: os)
mark(:cli, :version, agent.version)
mark(:cli, command.sub(' ', '.'))
else
# only track ruby version and library version for non-cli usage
mark(:script, :ruby, :travis, version: agent.version, ruby: ruby)
mark(:script, :ruby, :travis, :version, agent.version)
end
end
@ -66,19 +53,9 @@ class Travis::Api::App
mark(:unknown)
end
def track_key(string)
string.to_s.downcase.gsub(/[^a-z0-9\-\.]+/, '_')
end
def mark(*keys)
key = "api.user_agent"
keys.each do |subkey|
if subkey.is_a? Hash
subkey.each_pair { |k, v| ::Metriks.meter("#{key}.#{track_key(k)}.#{track_key(v)}").mark }
else
::Metriks.meter(key << "." << track_key(subkey)).mark
end
end
key = "api.user_agent." << keys.map { |k| k.to_s.downcase.gsub(/[^a-z0-9\-\.]+/, '_') }.join('.')
::Metriks.meter(key).mark
end
end
end

View File

@ -35,13 +35,11 @@ describe Travis::Api::App::Middleware::UserAgentTracker do
let(:agent) { "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.36 Safari/537.36" }
specify 'without X-User-Agent' do
expect_meter("api.user_agent.browser")
expect_meter("api.user_agent.browser.unknown")
get
end
specify 'with X-User-Agent' do
expect_meter("api.user_agent.browser")
expect_meter("api.user_agent.browser.travis-web")
get('HTTP_X_USER_AGENT' => 'travis-web')
end
@ -50,7 +48,6 @@ describe Travis::Api::App::Middleware::UserAgentTracker do
context 'console' do
let(:agent) { 'curl' }
specify do
expect_meter("api.user_agent.console")
expect_meter("api.user_agent.console.curl")
get
end
@ -59,8 +56,6 @@ describe Travis::Api::App::Middleware::UserAgentTracker do
context 'travis-api-wrapper' do
let(:agent) { 'travis-api-wrapper - v0.01 - (cmaujean@gmail.com)' }
specify do
expect_meter("api.user_agent.script")
expect_meter("api.user_agent.script.node_js")
expect_meter("api.user_agent.script.node_js.travis-api-wrapper")
get
end
@ -69,8 +64,6 @@ describe Travis::Api::App::Middleware::UserAgentTracker do
context 'TravisPy' do
let(:agent) { 'TravisPy' }
specify do
expect_meter("api.user_agent.script")
expect_meter("api.user_agent.script.python")
expect_meter("api.user_agent.script.python.travispy")
get
end
@ -79,8 +72,6 @@ describe Travis::Api::App::Middleware::UserAgentTracker do
context 'Ruby' do
let(:agent) { 'Ruby' }
specify do
expect_meter("api.user_agent.script")
expect_meter("api.user_agent.script.ruby")
expect_meter("api.user_agent.script.ruby.vanilla")
get
end
@ -89,8 +80,6 @@ describe Travis::Api::App::Middleware::UserAgentTracker do
context 'Faraday' do
let(:agent) { 'Faraday' }
specify do
expect_meter("api.user_agent.script")
expect_meter("api.user_agent.script.ruby")
expect_meter("api.user_agent.script.ruby.vanilla")
get
end
@ -99,11 +88,7 @@ describe Travis::Api::App::Middleware::UserAgentTracker do
context 'travis.rb' do
let(:agent) { 'Travis/1.6.8 (Mac OS X 10.9.2 like Darwin; Ruby 2.1.1p42; RubyGems 2.0.14) Faraday/0.8.9 Typhoeus/0.6.7' }
specify do
expect_meter("api.user_agent.script")
expect_meter("api.user_agent.script.ruby")
expect_meter("api.user_agent.script.ruby.travis")
expect_meter("api.user_agent.script.ruby.travis.version.1.6.8")
expect_meter("api.user_agent.script.ruby.travis.ruby.2.1.1")
get
end
end
@ -111,12 +96,8 @@ describe Travis::Api::App::Middleware::UserAgentTracker do
context 'Travis CLI' do
let(:agent) { 'Travis/1.6.8 (Mac OS X 10.10.2 like Darwin; Ruby 2.1.1; RubyGems 2.0.14; command whoami) Faraday/0.8.9 Typhoeus/0.6.7' }
specify do
expect_meter("api.user_agent.cli")
expect_meter("api.user_agent.cli.version.1.6.8")
expect_meter("api.user_agent.cli.ruby.2.1.1")
expect_meter("api.user_agent.cli.rubygems.2.0.14")
expect_meter("api.user_agent.cli.command.whoami")
expect_meter("api.user_agent.cli.os.darwin.mac_os_x.10.10")
get
end
end