trace-util-adv 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +7 -0
- data/VERSION +1 -1
- data/lib/README +87 -0
- data/lib/TODO.txt +12 -0
- data/lib/action_handler.rb +99 -0
- data/lib/appenders/appender.rb +97 -0
- data/lib/appenders/appender_registration.rb +16 -0
- data/lib/appenders/base_appender.rb +82 -0
- data/lib/appenders/file_appender.rb +72 -0
- data/lib/appenders/html_appender.rb +94 -0
- data/lib/appenders/logger_appender.rb +84 -0
- data/lib/appenders/stream_appender.rb +37 -0
- data/lib/appenders/template_log_appender.rb +28 -0
- data/lib/appenders/xml_appender.rb +75 -0
- data/lib/core_extensions.rb +101 -0
- data/lib/filters/base_filters.rb +178 -0
- data/lib/filters/composite_filters.rb +71 -0
- data/lib/filters/filter_factory.rb +17 -0
- data/lib/filters/message_filters.rb +35 -0
- data/lib/filters/tracing_filter.rb +88 -0
- data/lib/output_templates.rb +5 -0
- data/lib/rule_match.rb +38 -0
- data/lib/sample_filters.rb +95 -0
- data/lib/templates/base_template.rb +21 -0
- data/lib/templates/html_template.rb +48 -0
- data/lib/templates/string_template.rb +30 -0
- data/lib/templates/trace_output_handler.rb +47 -0
- data/lib/templates/xml_template.rb +36 -0
- data/lib/test_action_handler.rb +34 -0
- data/lib/test_appender.rb +29 -0
- data/lib/test_file_appender.rb +32 -0
- data/lib/test_filters.rb +112 -0
- data/lib/test_filters_chain.rb +100 -0
- data/lib/test_filters_create.rb +28 -0
- data/lib/test_html_appender.rb +66 -0
- data/lib/test_special_filters.rb +78 -0
- data/lib/test_xml_appender.rb +66 -0
- data/lib/test_xml_gen.rb +46 -0
- data/lib/trace_appenders.rb +9 -0
- data/lib/trace_calls.rb +86 -0
- data/lib/trace_ext.rb +57 -0
- data/lib/trace_filters.rb +4 -0
- data/trace-util-adv.gemspec +98 -0
- metadata +44 -2
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            module Tracing
         | 
| 2 | 
            +
              module OutputHandler   
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                # TODO: refactor (duplicate of appender method)
         | 
| 5 | 
            +
                def method_stack
         | 
| 6 | 
            +
                  @method_stack ||= []
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
                
         | 
| 9 | 
            +
                # override to increase # of spaces for each indenation level!
         | 
| 10 | 
            +
                def space_count
         | 
| 11 | 
            +
                  1
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                # calculate indentation level, based on method stack level (# of nested method calls)
         | 
| 15 | 
            +
                def indentation
         | 
| 16 | 
            +
                  s = ""
         | 
| 17 | 
            +
                  lv = method_stack.empty? ? 0 : method_stack.size-1 
         | 
| 18 | 
            +
                  lv.times { s << (" " * space_count) }
         | 
| 19 | 
            +
                  s
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                def output(template, context)
         | 
| 23 | 
            +
                  # get spaces to indent each line
         | 
| 24 | 
            +
                  spaces = indentation
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  # modify template, inserting indentation
         | 
| 27 | 
            +
                  lines = template.split("\n")
         | 
| 28 | 
            +
                  lines.map!{|line| spaces + line + "\n"}
         | 
| 29 | 
            +
                  template = lines.join
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  # send modified template to output handler with context
         | 
| 32 | 
            +
                  output_handler(template, context)
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                # default output action: put string to STDOUT
         | 
| 36 | 
            +
                # override this to customize trace handling
         | 
| 37 | 
            +
                def output_handler(template, context)
         | 
| 38 | 
            +
                  # create new erb template
         | 
| 39 | 
            +
                  erb_template = ERB.new template
         | 
| 40 | 
            +
                  
         | 
| 41 | 
            +
                  # evaluate erb template for output using context
         | 
| 42 | 
            +
                  str_res = erb_template.result(binding)
         | 
| 43 | 
            +
                  # send final output to action handlers for further processing...
         | 
| 44 | 
            +
                  # action_handlers(str_res, context)
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
              end 
         | 
| 47 | 
            +
            end
         | 
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            module Tracing 
         | 
| 2 | 
            +
              module OutputTemplate
         | 
| 3 | 
            +
                class XmlTrace < BaseTrace
         | 
| 4 | 
            +
                  def before_template(context)
         | 
| 5 | 
            +
                    template = <<-EOF
         | 
| 6 | 
            +
                  <method name="<%= context[:method_full_name] %>">
         | 
| 7 | 
            +
                    <modules><%= context[:full_module_name] %></modules>
         | 
| 8 | 
            +
                    <class><%= context[:class_name].join(',') %></class>
         | 
| 9 | 
            +
                    <args><%= context[:args].inspect %></args>
         | 
| 10 | 
            +
                    #block#
         | 
| 11 | 
            +
                  EOF
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  def before_block_template 
         | 
| 15 | 
            +
                    template = <<-EOF
         | 
| 16 | 
            +
                  <block-arg>true</block-arg>
         | 
| 17 | 
            +
                  EOF
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  def end_template(context) 
         | 
| 21 | 
            +
                    template = <<-EOF
         | 
| 22 | 
            +
                    <result><%= context[:result] %></result>
         | 
| 23 | 
            +
                  </method>
         | 
| 24 | 
            +
                  EOF
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  # override
         | 
| 28 | 
            +
                  def handle_before_call(context)
         | 
| 29 | 
            +
                    template = before_template(context)
         | 
| 30 | 
            +
                    block_replace = context[:block] ? before_block_template : ""
         | 
| 31 | 
            +
                    template.gsub!(/#block#/, block_replace)
         | 
| 32 | 
            +
                    output(template, context)
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
            end
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            require "core_extensions"
         | 
| 2 | 
            +
            require "trace_calls"
         | 
| 3 | 
            +
            require "sample_filters"
         | 
| 4 | 
            +
            require "rubygems"
         | 
| 5 | 
            +
            require "duration"
         | 
| 6 | 
            +
            require "test/unit"
         | 
| 7 | 
            +
             
         | 
| 8 | 
            +
            class TestFilter < Test::Unit::TestCase
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              attr_reader :ah1, :filters
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              def setup
         | 
| 13 | 
            +
                # tla1 = Tracing::TemplateLogAppender.new(:options => {:overwrite => false, :time_limit => 2.minutes}, :tracer => :string)      
         | 
| 14 | 
            +
                # action handler is configured with a set of filters and a set of appenders
         | 
| 15 | 
            +
                # the appenders are called in turn if log statement passes all filters!
         | 
| 16 | 
            +
                # @ah1 = Tracing::ActionHandler.new(:filters => @filters = Module_filter_A)  
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                appender_options = {:options => {:overwrite => false, :time_limit => 2.minutes}, :type => :logger, :tracer => :string}
         | 
| 19 | 
            +
                # @ah2 = Tracing::ActionHandler.new(:filters => @filters = [Module_filter_A, Method_filter_A], :appenders => appender_options)    
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                @ah3 = Tracing::ActionHandler.new(:filters => @filters = [Module_filter_A, Method_filter_A], :appenders => :logger)        
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              def teardown
         | 
| 25 | 
            +
                ## Nothing really
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
                
         | 
| 28 | 
            +
              def test_filter
         | 
| 29 | 
            +
                puts "ActionHandler:" + @ah3.inspect
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
              
         | 
| 32 | 
            +
              
         | 
| 33 | 
            +
            end
         | 
| 34 | 
            +
             | 
| @@ -0,0 +1,29 @@ | |
| 1 | 
            +
            require "core_extensions"
         | 
| 2 | 
            +
            require "trace_calls"
         | 
| 3 | 
            +
            require "sample_filters"
         | 
| 4 | 
            +
            require "rubygems"
         | 
| 5 | 
            +
            require "duration"
         | 
| 6 | 
            +
            require "test/unit"
         | 
| 7 | 
            +
             
         | 
| 8 | 
            +
            class TestFilter < Test::Unit::TestCase
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              attr_reader :ah1, :filters
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              def setup
         | 
| 13 | 
            +
                # Tracing::Appender.register_default_mappings    
         | 
| 14 | 
            +
                
         | 
| 15 | 
            +
                # test all the ways an appender can be initialized!
         | 
| 16 | 
            +
                @ah1 = Tracing::LoggerAppender.new(:tracer => :html)      
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              def teardown
         | 
| 20 | 
            +
                ## Nothing really
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
                
         | 
| 23 | 
            +
              def test_filter
         | 
| 24 | 
            +
                puts @ah1.inspect
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
              
         | 
| 27 | 
            +
              
         | 
| 28 | 
            +
            end
         | 
| 29 | 
            +
             | 
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            require "core_extensions"
         | 
| 2 | 
            +
            require "trace_calls"
         | 
| 3 | 
            +
            require "sample_filters"
         | 
| 4 | 
            +
            require "rubygems"
         | 
| 5 | 
            +
            require "duration"
         | 
| 6 | 
            +
            require "test/unit"
         | 
| 7 | 
            +
             
         | 
| 8 | 
            +
            class TestFilter < Test::Unit::TestCase
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              attr_reader :ah1, :filters
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              def setup
         | 
| 13 | 
            +
                # Tracing::Appender.register_default_mappings    
         | 
| 14 | 
            +
                @file = 'test.txt'
         | 
| 15 | 
            +
                
         | 
| 16 | 
            +
                # test all the ways an appender can be initialized!
         | 
| 17 | 
            +
                @file_appender = Tracing::FileAppender.new({:overwrite => true, :to_file => @file})
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def teardown
         | 
| 21 | 
            +
                ## Nothing really
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
                
         | 
| 24 | 
            +
              def test_filter
         | 
| 25 | 
            +
                @file_appender.write_file(@file, "Hello World")
         | 
| 26 | 
            +
                marker_txt = 'World'
         | 
| 27 | 
            +
                @file_appender.insert_into_file(@file, 'My old ', marker_txt)
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
              
         | 
| 30 | 
            +
              
         | 
| 31 | 
            +
            end
         | 
| 32 | 
            +
             | 
    
        data/lib/test_filters.rb
    ADDED
    
    | @@ -0,0 +1,112 @@ | |
| 1 | 
            +
            require "core_extensions"
         | 
| 2 | 
            +
            require "trace_calls"
         | 
| 3 | 
            +
            require "output_templates"
         | 
| 4 | 
            +
            require "sample_filters"
         | 
| 5 | 
            +
            require "rubygems"
         | 
| 6 | 
            +
            require "duration"
         | 
| 7 | 
            +
            require "test/unit"
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            # configure use of TraceExt
         | 
| 10 | 
            +
            module Me
         | 
| 11 | 
            +
              class My     
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                def hello
         | 
| 14 | 
            +
                  puts "Hello cruel World!"
         | 
| 15 | 
            +
                end   
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def hi_there
         | 
| 18 | 
            +
                  puts "Hello cruel World!"
         | 
| 19 | 
            +
                end   
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def blip
         | 
| 22 | 
            +
                  puts "Blip!"
         | 
| 23 | 
            +
                end   
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def blap
         | 
| 26 | 
            +
                  puts "Blap!"
         | 
| 27 | 
            +
                end   
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              end    
         | 
| 30 | 
            +
            end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            Method_filter_hello = {
         | 
| 33 | 
            +
              :name => 'my methods',  
         | 
| 34 | 
            +
              :method_rules => [{
         | 
| 35 | 
            +
                # id of method rule set
         | 
| 36 | 
            +
                :name => 'my_methods',
         | 
| 37 | 
            +
                :include => [/hi.*/, 'blip', 'blap'],
         | 
| 38 | 
            +
                :exclude => ['hello'],
         | 
| 39 | 
            +
                :default => false
         | 
| 40 | 
            +
              }]
         | 
| 41 | 
            +
            }    
         | 
| 42 | 
            +
             
         | 
| 43 | 
            +
              
         | 
| 44 | 
            +
            class TestFilter < Test::Unit::TestCase
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              attr_reader :ah1, :filters
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              def setup
         | 
| 49 | 
            +
                # module filter is created (see sample filters)
         | 
| 50 | 
            +
                # @module_filter = Tracing::ModuleFilter.new(Module_filter_A)        
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                # Appender is configured with some appender options and a Tracer
         | 
| 53 | 
            +
                # string_tracer = Tracing::OutputTemplate::StringTrace.new        
         | 
| 54 | 
            +
                # template_log_options = {:options => {:overwrite => false, :time_limit => 2.minutes}, :tracer => string_tracer}
         | 
| 55 | 
            +
                # tla1 = Tracing::TemplateLogAppender.new(:options => {:overwrite => false, :time_limit => 2.minutes}, :tracer => :string)  
         | 
| 56 | 
            +
                
         | 
| 57 | 
            +
                # action handler is configured with a set of filters and a set of appenders
         | 
| 58 | 
            +
                # the appenders are called in turn if log statement passes all filters!
         | 
| 59 | 
            +
                @ah1 = Tracing::ActionHandler.new(:filters => @filters = [Module_filter_A, Method_filter_A], :appenders => :logger)    
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                appender_options = {:options => {:overwrite => false, :time_limit => 2.minutes}, :type => :logger, :tracer => :string}
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                # @ah2 = Tracing::ActionHandler.new(:filters => @filters = [Module_filter_A, Method_filter_A], :appenders => appender_options)    
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                # TraceExt is configured with a set of action handlers
         | 
| 66 | 
            +
                # on any method call the set of action handlers are called if all initial filters are passed 
         | 
| 67 | 
            +
                # Tracing::TraceExt.register_action_handlers([ah1])
         | 
| 68 | 
            +
              end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
              def teardown
         | 
| 71 | 
            +
                ## Nothing really
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
                        
         | 
| 74 | 
            +
              def test_filter
         | 
| 75 | 
            +
                # module_filter = Tracing::ModuleFilter.new(Module_filter_A)   
         | 
| 76 | 
            +
                
         | 
| 77 | 
            +
                # TraceExt can be configured with a set of 'initial' filters, that determine if the method should have theaspects applied at all     
         | 
| 78 | 
            +
                # Tracing::TraceExt.register_filters([module_filter])
         | 
| 79 | 
            +
                # , :filters => Class_filter_A     
         | 
| 80 | 
            +
                # Tracing::TraceExt.configure(:action_handlers => [ah1])
         | 
| 81 | 
            +
                # Tracing::TraceExt.configure(:appenders => :logger)
         | 
| 82 | 
            +
                
         | 
| 83 | 
            +
                dryml_classes_to_trace = [ 'My']
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                dryml_classes_to_trace.each do |cls|
         | 
| 86 | 
            +
                  str = "Me::#{cls}.class_eval { include Tracing::TraceCalls }"
         | 
| 87 | 
            +
                  puts str
         | 
| 88 | 
            +
                  eval str
         | 
| 89 | 
            +
                end    
         | 
| 90 | 
            +
                
         | 
| 91 | 
            +
                # Me::My.class_eval { include Tracing::TraceCalls }
         | 
| 92 | 
            +
                    
         | 
| 93 | 
            +
                Tracing::HtmlAppender.default_path = 'log_files/html'
         | 
| 94 | 
            +
                    
         | 
| 95 | 
            +
                # Tracing::TraceExt.configure(:appenders => {:type => :html, :to_file => 'log_files/html/traced.html'})    
         | 
| 96 | 
            +
                Tracing::TraceExt.configure(:type => :html, :to_file => 'traced4.html', :filters => Method_filter_hello)        
         | 
| 97 | 
            +
                    
         | 
| 98 | 
            +
                # Tracing::TraceExt.configure(:filters => Class_filter_A)
         | 
| 99 | 
            +
                # 
         | 
| 100 | 
            +
                my = Me::My.new
         | 
| 101 | 
            +
                my.hello
         | 
| 102 | 
            +
                my.hi_there
         | 
| 103 | 
            +
                my.blip
         | 
| 104 | 
            +
                my.blap
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                
         | 
| 107 | 
            +
                # my.action_handlers(['a', 'b'], context)           
         | 
| 108 | 
            +
              end
         | 
| 109 | 
            +
              
         | 
| 110 | 
            +
              
         | 
| 111 | 
            +
            end
         | 
| 112 | 
            +
             | 
| @@ -0,0 +1,100 @@ | |
| 1 | 
            +
            require "core_extensions"
         | 
| 2 | 
            +
            require "trace_calls"
         | 
| 3 | 
            +
            require "output_templates"
         | 
| 4 | 
            +
            require "rubygems"
         | 
| 5 | 
            +
            require "duration"
         | 
| 6 | 
            +
            require "test/unit"
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            # configure use of TraceExt
         | 
| 9 | 
            +
            module Me
         | 
| 10 | 
            +
              class My     
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def hello
         | 
| 13 | 
            +
                  puts "Hello World!"
         | 
| 14 | 
            +
                end   
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                def hi_there
         | 
| 17 | 
            +
                  puts "Hi there!"
         | 
| 18 | 
            +
                end   
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                def blip
         | 
| 21 | 
            +
                  puts "Blip!"
         | 
| 22 | 
            +
                end   
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def blap
         | 
| 25 | 
            +
                  puts "Blap!"
         | 
| 26 | 
            +
                end   
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              end    
         | 
| 29 | 
            +
            end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            Method_filter_A = {
         | 
| 32 | 
            +
              :name => 'my methods',  
         | 
| 33 | 
            +
              :method_rules => [{
         | 
| 34 | 
            +
                # id of method rule set
         | 
| 35 | 
            +
                :name => 'my_methods',
         | 
| 36 | 
            +
                :include => [/hi.*/],
         | 
| 37 | 
            +
                :exclude => ['hello'],
         | 
| 38 | 
            +
                :default => :yield
         | 
| 39 | 
            +
              }]
         | 
| 40 | 
            +
            }    
         | 
| 41 | 
            +
             
         | 
| 42 | 
            +
            # Method_filter_B = {
         | 
| 43 | 
            +
            #   :name => 'my methods',  
         | 
| 44 | 
            +
            #   :method_rules => [{
         | 
| 45 | 
            +
            #     # id of method rule set
         | 
| 46 | 
            +
            #     :name => 'my_methods',
         | 
| 47 | 
            +
            #     :include => ['blip', 'blop'],
         | 
| 48 | 
            +
            #     :default => :yield
         | 
| 49 | 
            +
            #   }]
         | 
| 50 | 
            +
            # }
         | 
| 51 | 
            +
             | 
| 52 | 
            +
              
         | 
| 53 | 
            +
            class TestFilter < Test::Unit::TestCase
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              attr_reader :ah1, :filters
         | 
| 56 | 
            +
             | 
| 57 | 
            +
              def setup
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
             | 
| 60 | 
            +
              def teardown
         | 
| 61 | 
            +
                ## Nothing really
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
                        
         | 
| 64 | 
            +
              def test_filter
         | 
| 65 | 
            +
                # Tracing::TraceExt.configure(:appenders => :logger, :filters => [Method_filter_A, Method_filter_B])            
         | 
| 66 | 
            +
                Me::My.class_eval { include Tracing::TraceCalls }
         | 
| 67 | 
            +
                    
         | 
| 68 | 
            +
                Tracing::HtmlAppender.default_path = 'log_files/html'
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                names_A = %w{blip blop}
         | 
| 71 | 
            +
                names_B = "blip blop"
         | 
| 72 | 
            +
                names_C = "blip, blop"
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                bfil = {:xmethod_filter => names_B}
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                # method_filter_A = Tracing::Filter.create_filter({:imethod_filter =>  names_A})        
         | 
| 77 | 
            +
                method_filter_B = Tracing::Filter.create_filter(bfil)        
         | 
| 78 | 
            +
                # method_filter_C = Tracing::Filter.create_filter({:imethod_filter =>  names_C})        
         | 
| 79 | 
            +
                    
         | 
| 80 | 
            +
                # Tracing::TraceExt.configure(:appenders => {:type => :html, :to_file => 'log_files/html/traced.html'})    
         | 
| 81 | 
            +
                meth_filter_A = {:imethod_filter =>  names_A}
         | 
| 82 | 
            +
                    
         | 
| 83 | 
            +
                puts "mf B: " + method_filter_B.inspect    
         | 
| 84 | 
            +
                    
         | 
| 85 | 
            +
                Tracing::TraceExt.configure(:appenders => {:type => :html, :to_file => 'traced4.html'}, :filters => [meth_filter_A], :final_yield => :exclude)        
         | 
| 86 | 
            +
                
         | 
| 87 | 
            +
                puts "Handlers configured:" + Tracing::TraceExt.action_handlers.inspect    
         | 
| 88 | 
            +
                        
         | 
| 89 | 
            +
                # 
         | 
| 90 | 
            +
                my = Me::My.new
         | 
| 91 | 
            +
                my.hello
         | 
| 92 | 
            +
                my.hi_there
         | 
| 93 | 
            +
                my.blip
         | 
| 94 | 
            +
                my.blap
         | 
| 95 | 
            +
                
         | 
| 96 | 
            +
              end
         | 
| 97 | 
            +
              
         | 
| 98 | 
            +
              
         | 
| 99 | 
            +
            end
         | 
| 100 | 
            +
             | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            require "core_extensions"
         | 
| 2 | 
            +
            require "trace_calls"
         | 
| 3 | 
            +
            require "output_templates"
         | 
| 4 | 
            +
            require "rubygems"
         | 
| 5 | 
            +
            require "duration"
         | 
| 6 | 
            +
            require "test/unit"
         | 
| 7 | 
            +
             
         | 
| 8 | 
            +
            class TestFilter < Test::Unit::TestCase
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def teardown
         | 
| 11 | 
            +
                ## Nothing really
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
                
         | 
| 14 | 
            +
              def test_filter_create
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                names = %w{blip blop}
         | 
| 17 | 
            +
                puts "create include method filter, names: #{names}" 
         | 
| 18 | 
            +
                method_filter_B = Tracing::Filter.create_filter({:imethod_filter =>  names})
         | 
| 19 | 
            +
                
         | 
| 20 | 
            +
                f = Tracing::BaseFilter.create_filter(method_filter_B)
         | 
| 21 | 
            +
                
         | 
| 22 | 
            +
                puts method_filter_B.inspect
         | 
| 23 | 
            +
                puts f.inspect
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
              
         | 
| 26 | 
            +
              
         | 
| 27 | 
            +
            end
         | 
| 28 | 
            +
             | 
| @@ -0,0 +1,66 @@ | |
| 1 | 
            +
            require "core_extensions"
         | 
| 2 | 
            +
            require "trace_calls"
         | 
| 3 | 
            +
            require "output_templates"
         | 
| 4 | 
            +
            require "sample_filters"
         | 
| 5 | 
            +
            require "rubygems"
         | 
| 6 | 
            +
            require "duration"
         | 
| 7 | 
            +
            require "test/unit"
         | 
| 8 | 
            +
             
         | 
| 9 | 
            +
            class TestFilter < Test::Unit::TestCase
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              attr_reader :ah1, :filters
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              def setup
         | 
| 14 | 
            +
                # Tracing::Appender.register_default_mappings    
         | 
| 15 | 
            +
                
         | 
| 16 | 
            +
                # test all the ways an appender can be initialized!
         | 
| 17 | 
            +
                @ah1 = Tracing::HtmlAppender.new(:tracer => :html, :to_file => 'log_files/html/traced.html')      
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def teardown
         | 
| 21 | 
            +
                ## Nothing really
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
                
         | 
| 24 | 
            +
              def method_full_name(context)
         | 
| 25 | 
            +
                "#{context[:class_name]}.#{context[:method_name]}"
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
                
         | 
| 28 | 
            +
              def test_filter
         | 
| 29 | 
            +
                cls_name = "Alpha::Beta::Gamma"
         | 
| 30 | 
            +
                name = "my_method"
         | 
| 31 | 
            +
                my_instance_variables = {:template_path => 'taglibs/rapid_core.dryml'}
         | 
| 32 | 
            +
                args = {:a => 7}
         | 
| 33 | 
            +
                @context = {
         | 
| 34 | 
            +
                  :modules => cls_name.modules,
         | 
| 35 | 
            +
                  :class_name => cls_name.class_name,
         | 
| 36 | 
            +
                  :full_class_name => cls_name,
         | 
| 37 | 
            +
                  :method_name => name,
         | 
| 38 | 
            +
                  :args => args,
         | 
| 39 | 
            +
                  :block => false,
         | 
| 40 | 
            +
                  :vars => my_instance_variables # to carry @template_path etc.
         | 
| 41 | 
            +
                }    
         | 
| 42 | 
            +
                @context[:method_full_name] = method_full_name(@context)
         | 
| 43 | 
            +
                
         | 
| 44 | 
            +
                @ah1.allow_append("BEGIN #{name}", @context)
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                name = "my_other_method"
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                @context[:method_name] = name
         | 
| 49 | 
            +
                @context[:method_full_name] = method_full_name(@context)
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                @ah1.allow_append("BEGIN #{name}", @context)        
         | 
| 52 | 
            +
                
         | 
| 53 | 
            +
                @context[:result] = "32"
         | 
| 54 | 
            +
                @ah1.allow_append("END #{name}", @context)    
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                name = "my_method"
         | 
| 57 | 
            +
                @context[:method_name] = name    
         | 
| 58 | 
            +
                @context[:method_full_name] = method_full_name(@context)    
         | 
| 59 | 
            +
                
         | 
| 60 | 
            +
                @context[:result] = "27"
         | 
| 61 | 
            +
                @ah1.allow_append("END #{name}", @context)    
         | 
| 62 | 
            +
              end
         | 
| 63 | 
            +
              
         | 
| 64 | 
            +
              
         | 
| 65 | 
            +
            end
         | 
| 66 | 
            +
             |