Sha256: bc08ceddb1e2ce182143bfe25ad3bb19820ef6e7b985a9c54558d46f26fed5b4

Contents?: true

Size: 1.47 KB

Versions: 5

Compression:

Stored size: 1.47 KB

Contents

# encoding: utf-8
# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.

module Performance
  class TestCase
    @subclasses = []

    def self.inherited(cls)
      @subclasses << cls
    end

    def self.subclasses
      @subclasses
    end

    attr_accessor :iterations

    def initialize
      @callbacks = {}
      @iterations = 10000
      on(:before_each, &method(:setup))
      on(:after_each,  &method(:teardown))
    end

    def setup; end
    def teardown; end

    def on(event, &action)
      @callbacks[event] ||= []
      @callbacks[event] << action
    end

    def fire(event, *args)
      if @callbacks[event]
        @callbacks[event].each { |cb| cb.arity > 0 ? cb.call(*args) : cb.call }
      end
    end

    def runnable_test_methods
      self.methods.map { |m| m.to_s }.select { |m| m =~ /^test_/ }
    end

    def with_callbacks(name)
      fire(:before_each, self, name)
      result = yield
      fire(:after_each, self, name, result)
    end

    def run(name)
      result = Result.new(self.class, name)
      begin
        with_callbacks(name) do
          if self.method(name).arity == 0
            result.timer.measure do
              self.send(name)
            end
          else
            self.send(name, result.timer)
          end
          result
        end
      rescue StandardError, LoadError => e
        result.exception = e
      end
      result
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
newrelic_rpm-3.7.0.177 test/performance/lib/performance/test_case.rb
newrelic_rpm-3.7.0.174.beta test/performance/lib/performance/test_case.rb
newrelic_rpm-3.6.9.171 test/performance/lib/performance/test_case.rb
newrelic_rpm-3.6.8.168 test/performance/lib/performance/test_case.rb
newrelic_rpm-3.6.8.164 test/performance/lib/performance/test_case.rb