lib/harness.rb in harness-0.0.1 vs lib/harness.rb in harness-0.1.0

- old
+ new

@@ -1,5 +1,108 @@ require "harness/version" +require 'thread' + +require 'securerandom' + +require 'redis' +require 'redis/namespace' + +require 'active_support/notifications' +require 'active_support/core_ext/string' + module Harness - # Your code goes here... + class LoggingError < RuntimeError ; end + + class Config + attr_reader :adapter + attr_accessor :test_mode + + def adapter=(val) + if val.is_a? Symbol + @adapter = "Harness::#{val.to_s.classify}Adapter".constantize + else + @adapter = val + end + end + + def method_missing(name, *args, &block) + begin + "Harness::#{name.to_s.classify}Adapter".constantize.config + rescue NameError + super + end + end + end + + def self.config + @config ||= Config.new + end + + def self.queue + @queue ||= Queue.new + end + + def self.consumer + Thread.current["#{object_id}_harness_consumer_"] ||= Consumer.new + end + + def self.log(measurement) + queue << measurement + wait if config.test_mode + end + + def self.mutex + @mutex ||= Mutex.new + end + + def self.wait + sleep 0.01 until consumer.finished? && queue.empty? + end + + def self.logger + @logger + end + + def self.logger=(logger) + @logger = logger + end + + def self.redis=(redis) + @redis = redis + end + + def self.redis + @redis + end + + def self.reset_counters! + redis.smembers('counters').each do |counter| + redis.set counter, -1 + end + end end + +require 'harness/measurement' +require 'harness/counter' +require 'harness/gauge' + +require 'harness/instrumentation' + +require 'harness/consumer' + +require 'harness/adapters/librato_adapter' +require 'harness/adapters/memory_adapter' +require 'harness/adapters/null_adapter' + +require 'harness/integration/action_controller' +require 'harness/integration/action_view' +require 'harness/integration/action_mailer' +require 'harness/integration/active_support' + +require 'harness/railtie' if defined?(Rails) + +Harness.consumer.consume + +require 'logger' + +Harness.logger = Logger.new $stdout