Sha256: a1eaa906af58eeb76e43d51384a611db59b45e1d2bc6f7816eefa4289522e307
Contents?: true
Size: 1.9 KB
Versions: 2
Compression:
Stored size: 1.9 KB
Contents
#!/usr/bin/env ruby # frozen_string_literal: true require "bundler/setup" require "benchmark/ips" require "tmpdir" require "socket" require "statsd-instrument" revision = %x(git rev-parse HEAD).rstrip master_revision = %x(git rev-parse origin/master).rstrip branch = if revision == master_revision "master" else %x(git rev-parse --abbrev-ref HEAD).rstrip end intermediate_results_filename = "#{Dir.tmpdir}/statsd-instrument-benchmarks/#{File.basename($PROGRAM_NAME)}" FileUtils.mkdir_p(File.dirname(intermediate_results_filename)) # Set up an UDP listener to which we can send StatsD packets receiver = UDPSocket.new receiver.bind("localhost", 0) StatsD.singleton_client = StatsD::Instrument::Environment.new( "STATSD_ADDR" => "#{receiver.addr[2]}:#{receiver.addr[1]}", "STATSD_IMPLEMENTATION" => "dogstatsd", "STATSD_ENV" => "production", ).client report = Benchmark.ips do |bench| bench.report("StatsD metrics to local UDP receiver (branch: #{branch}, sha: #{revision[0, 7]})") do StatsD.increment("StatsD.increment", 10) StatsD.measure("StatsD.measure") { 1 + 1 } StatsD.gauge("StatsD.gauge", 12.0, tags: ["foo:bar", "quc"]) StatsD.set("StatsD.set", "value", tags: { foo: "bar", baz: "quc" }) if StatsD.singleton_client.datagram_builder_class == StatsD::Instrument::DogStatsDDatagramBuilder StatsD.event("StasD.event", "12345") StatsD.service_check("StatsD.service_check", "ok") end end # Store the results in between runs bench.save!(intermediate_results_filename) bench.compare! end receiver.close if report.entries.length == 1 puts puts "To compare the performance of this revision against another revision (e.g. master)," puts "check out a different branch and run this benchmark script again." elsif ENV["KEEP_RESULTS"] puts puts "The intermediate results have been stored in #{intermediate_results_filename}" else File.unlink(intermediate_results_filename) end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
statsd-instrument-3.1.1 | benchmark/send-metrics-to-local-udp-receiver |
statsd-instrument-3.1.0 | benchmark/send-metrics-to-local-udp-receiver |