trace-util-adv 0.2.4 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/TODO.txt +18 -2
- data/VERSION +1 -1
- data/lib/appenders/appender.rb +1 -1
- data/lib/appenders/base_appender.rb +18 -20
- data/lib/appenders/include.rb +2 -2
- data/lib/appenders/types/html_appender.rb +1 -1
- data/lib/appenders/types/logger_appender.rb +1 -1
- data/lib/appenders/types/xml_appender.rb +1 -1
- data/lib/extensions/hash_extensions.rb +41 -19
- data/lib/extensions/hash_rule_extensions.rb +4 -0
- data/lib/extensions/symbol_extensions.rb +7 -5
- data/lib/filters/composite/composite_class_filter.rb +1 -0
- data/lib/filters/composite/composite_module_filter.rb +1 -0
- data/lib/filters/executor/filter_exec.rb +6 -2
- data/lib/filters/filter.rb +12 -17
- data/lib/filters/filter_factory.rb +1 -1
- data/lib/filters/filter_mappings.rb +4 -2
- data/lib/filters/include.rb +4 -8
- data/lib/filters/list/list_instance_var_filter.rb +1 -0
- data/lib/filters/name_filter.rb +13 -0
- data/lib/filters/simple/argument_filter.rb +2 -1
- data/lib/filters/simple/class_filter.rb +1 -1
- data/lib/filters/simple/instance_var_filter.rb +9 -6
- data/lib/filters/simple/method_filter.rb +1 -0
- data/lib/filters/simple/module_filter.rb +6 -3
- data/lib/rules/rule_match.rb +5 -4
- data/lib/targets/file_target.rb +11 -0
- data/lib/templates/base_template.rb +11 -12
- data/lib/templates/html_template.rb +35 -36
- data/lib/templates/string_template.rb +0 -1
- data/lib/templates/template_mappings.rb +4 -4
- data/lib/templates/xml_template.rb +0 -1
- data/lib/trace-util-adv.rb +36 -20
- data/lib/trace_calls/trace_ext.rb +4 -17
- data/test/action_handler/include.rb +4 -0
- data/test/action_handler/test_action_handler.rb +1 -2
- data/test/action_handler/test_create_action_handler.rb +6 -9
- data/test/appenders/include.rb +4 -0
- data/test/appenders/test_appender_templates.rb +57 -0
- data/test/appenders/test_create_appender.rb +9 -10
- data/test/extensions/include.rb +4 -0
- data/test/extensions/test_filters_creation.rb +4 -28
- data/test/extensions/test_hash_extensions.rb +44 -47
- data/test/extensions/test_hash_filter_extensions.rb +46 -29
- data/test/extensions/test_set_context.rb +9 -11
- data/test/extensions/test_string_extensions.rb +1 -3
- data/test/extensions/test_symbol_extensions.rb +2 -4
- data/test/filters/chain/test_filters_chain.rb +1 -51
- data/test/filters/composite/test_composite_class_filter.rb +1 -3
- data/test/filters/composite/test_composite_module_filter.rb +1 -3
- data/test/filters/composite/test_composite_var_filter.rb +8 -11
- data/test/filters/executor/test_filter_exec.rb +1 -3
- data/test/filters/include.rb +8 -0
- data/test/filters/msg_context/test_custom_filters.rb +13 -14
- data/test/filters/simple/test_base_filter.rb +8 -6
- data/test/filters/simple/test_class_filter.rb +1 -3
- data/test/filters/simple/test_instancevar_filter.rb +5 -9
- data/test/filters/simple/test_method_filter.rb +4 -9
- data/test/filters/simple/test_module_filter.rb +13 -10
- data/test/samples/sample_composite_filters.rb +15 -12
- data/test/targets/test_create_targets.rb +21 -0
- data/test/templates/include.rb +4 -0
- data/test/templates/test_create_templates.rb +23 -0
- data/test/templates/test_exec_templates.rb +6 -0
- data/test/trace_calls/include.rb +4 -0
- data/test/trace_calls/test_configure_.rb +17 -14
- data/test/trace_calls/tracing/test_html_tracing.rb +2 -3
- data/test/trace_calls/tracing/test_logger_tracing.rb +5 -4
- data/test/trace_calls/tracing/test_stream_tracing.rb +2 -3
- data/test/trace_calls/tracing/test_teamplate_log_tracing.rb +2 -3
- data/test/trace_calls/tracing/test_xml_tracing.rb +2 -3
- data/trace-util-adv.gemspec +14 -6
- metadata +13 -5
- data/test/appenders/test_appender_tracers.rb +0 -56
- data/test/tracers/test_create_tracers.rb +0 -46
- data/test/tracers/test_exec_tracers.rb +0 -11
data/lib/filters/include.rb
CHANGED
@@ -1,8 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
include_folder_rec(dir + 'list')
|
6
|
-
include_folder_rec(dir + 'msg_context')
|
7
|
-
include_folder_rec(dir + 'executor')
|
8
|
-
include_folder(dir)
|
1
|
+
require 'filters/filter'
|
2
|
+
rfolders = Require.rfolder('filters', {:folders => ['simple', 'composite', 'list', 'msg_context', 'executor'], :root_files => :after, :exclude => 'include'})
|
3
|
+
|
4
|
+
|
@@ -5,11 +5,12 @@ module Tracing
|
|
5
5
|
|
6
6
|
def initialize(options)
|
7
7
|
super(options)
|
8
|
-
@rules = options[:arg_rules] || {}
|
8
|
+
@rules = options[:arg_rules] || options[:args_filter] || {}
|
9
9
|
@var_name = options[:arg_name]
|
10
10
|
end
|
11
11
|
|
12
12
|
def allow_action(msg, context)
|
13
|
+
puts "AMF"
|
13
14
|
obj = context[:args]
|
14
15
|
if var_name.kind_of?(Symbol) || var_name.kind_of?(String)
|
15
16
|
key = var_name.to_sym
|
@@ -6,20 +6,23 @@ module Tracing
|
|
6
6
|
def initialize(options)
|
7
7
|
super(options)
|
8
8
|
# puts "create inst.var filter: #{options.inspect}"
|
9
|
-
@rules = options[:var_rules] || {}
|
9
|
+
@rules = options[:var_rules] || options[:vars_filter] || {}
|
10
10
|
@var_name = options[:var_name]
|
11
11
|
end
|
12
12
|
|
13
13
|
def allow_action(msg, context)
|
14
|
-
|
14
|
+
puts "InstanceVarFilter.allow_action"
|
15
15
|
obj = context[:self]
|
16
|
-
|
16
|
+
puts "var_name: #{var_name}"
|
17
17
|
if var_name.kind_of?(Symbol) || var_name.kind_of?(String)
|
18
18
|
value = obj.instance_variable_get("@#{var_name}")
|
19
|
-
|
19
|
+
puts "value: #{value}"
|
20
20
|
return name_allow_action(value)
|
21
|
-
|
22
|
-
|
21
|
+
else
|
22
|
+
puts "return default :yield"
|
23
|
+
:yield
|
24
|
+
end
|
23
25
|
end
|
26
|
+
|
24
27
|
end
|
25
28
|
end
|
@@ -3,12 +3,15 @@ module Tracing
|
|
3
3
|
class ModuleFilter < BaseFilter
|
4
4
|
def initialize(options)
|
5
5
|
super(options)
|
6
|
-
@rules = options[:module_rules] || {}
|
6
|
+
@rules = options[:module_rules] || options[:module_filter] || {}
|
7
7
|
end
|
8
8
|
|
9
9
|
def allow_action(msg, context)
|
10
|
+
puts "ModuleF"
|
10
11
|
name = context[:full_modules_name]
|
11
|
-
|
12
|
+
puts "name: #{name}"
|
13
|
+
# allow = name_allow_action(name)
|
12
14
|
end
|
13
15
|
end
|
14
|
-
end
|
16
|
+
end
|
17
|
+
|
data/lib/rules/rule_match.rb
CHANGED
@@ -3,15 +3,15 @@ module Tracing
|
|
3
3
|
class RuleTypeError < RuntimeError; end
|
4
4
|
|
5
5
|
def matches_any?(name)
|
6
|
-
puts "matches any: #{name.inspect}"
|
6
|
+
# puts "matches any: #{name.inspect}"
|
7
7
|
self.any? do |rule|
|
8
|
-
puts "rule:" + rule.inspect
|
9
|
-
puts "against:" + name.inspect
|
8
|
+
# puts "rule:" + rule.inspect
|
9
|
+
# puts "against:" + name.inspect
|
10
10
|
if rule.kind_of? Regexp
|
11
11
|
# match return position of match, or nil if no match
|
12
12
|
# here converted into boolean result
|
13
13
|
match = !(name =~ rule).nil?
|
14
|
-
puts "match: #{match}"
|
14
|
+
# puts "match: #{match}"
|
15
15
|
match
|
16
16
|
elsif rule.kind_of? String
|
17
17
|
match = (name == rule)
|
@@ -28,6 +28,7 @@ module Tracing
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def rules_allow_action(name)
|
31
|
+
puts "rules_allow_action: #{name}"
|
31
32
|
self.each do |rule|
|
32
33
|
res = rule.rule_allow_action(name)
|
33
34
|
return :exclude if (res == :exclude)
|
data/lib/targets/file_target.rb
CHANGED
@@ -1,10 +1,21 @@
|
|
1
1
|
module Tracing
|
2
2
|
class FileTarget
|
3
3
|
include Tracing::DefaultPath
|
4
|
+
|
5
|
+
attr_accessor :to_file
|
6
|
+
|
4
7
|
class << self
|
5
8
|
include Tracing::DefaultPath
|
6
9
|
end
|
7
10
|
|
11
|
+
def initialize(options)
|
12
|
+
def_path = options[:default_path]
|
13
|
+
_to_file = options[:to_file]
|
14
|
+
|
15
|
+
@default_path = def_path if def_path
|
16
|
+
@to_file = _to_file if _to_file
|
17
|
+
end
|
18
|
+
|
8
19
|
def append(txt, context)
|
9
20
|
file = get_file(context)
|
10
21
|
write_file(file, txt)
|
@@ -2,20 +2,19 @@ require 'templates/trace_output_handler'
|
|
2
2
|
|
3
3
|
module Tracing
|
4
4
|
class BaseTemplate
|
5
|
-
|
5
|
+
include Tracing::OutputHandler
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
def handle_after_call(context)
|
8
|
+
template = end_template(context)
|
9
|
+
output(template, context)
|
10
|
+
end
|
11
|
+
|
12
|
+
def handle_before_call(context)
|
13
|
+
template = before_template(context)
|
14
|
+
if context[:block]
|
15
|
+
template << before_block_template
|
10
16
|
end
|
11
|
-
|
12
|
-
def handle_before_call(context)
|
13
|
-
template = before_template(context)
|
14
|
-
if context[:block]
|
15
|
-
template << before_block_template
|
16
|
-
end
|
17
|
-
output(template, context)
|
18
|
-
end
|
17
|
+
output(template, context)
|
19
18
|
end
|
20
19
|
end
|
21
20
|
end
|
@@ -1,47 +1,46 @@
|
|
1
1
|
module Tracing
|
2
2
|
class HtmlTemplate < BaseTemplate
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
</div>
|
4
|
+
def before_template(context)
|
5
|
+
# method_name = context[:method_full_name]
|
6
|
+
# args = context[:args].inspect
|
7
|
+
template = <<-EOF
|
8
|
+
<div class="method-title"><%= context[:method_full_name] %></div>
|
9
|
+
<div class="method-body">
|
10
|
+
<div class="begin">
|
11
|
+
<div class="method-name"><%= context[:method_full_name] %> :: BEGIN</div>
|
12
|
+
<div class="args">
|
13
|
+
<div class="method-args"><%= context[:args] %> </div>
|
14
|
+
#block#
|
16
15
|
</div>
|
17
|
-
|
18
|
-
|
16
|
+
</div>
|
17
|
+
EOF
|
18
|
+
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
def before_block_template
|
21
|
+
template = <<-EOF
|
22
|
+
<div class="method block-arg">(and a block)</div>
|
23
|
+
EOF
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
</div>
|
26
|
+
def end_template(context)
|
27
|
+
# method_name = context[:method_full_name]
|
28
|
+
# result = context[:result].inspect
|
29
|
+
template = <<-EOF
|
30
|
+
<div class="end">
|
31
|
+
<div class="method-name"><%= context[:method_full_name] %> :: END</div>
|
32
|
+
<div class="method-result"><%= context[:result] %></div>
|
34
33
|
</div>
|
35
|
-
|
36
|
-
|
34
|
+
</div>
|
35
|
+
EOF
|
36
|
+
end
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
38
|
+
# override
|
39
|
+
def handle_before_call(context)
|
40
|
+
template = before_template(context)
|
41
|
+
block_replace = context[:block] ? before_block_template : ""
|
42
|
+
template.gsub!(/#block#/, block_replace)
|
43
|
+
output(template, context)
|
45
44
|
end
|
46
45
|
end
|
47
46
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module TemplateMappings
|
2
2
|
def self.defaults
|
3
3
|
{
|
4
|
-
:string => Tracing::
|
5
|
-
:xml => Tracing::
|
6
|
-
:html => Tracing::
|
7
|
-
:default => Tracing::
|
4
|
+
:string => Tracing::StringTemplate,
|
5
|
+
:xml => Tracing::XmlTemplate,
|
6
|
+
:html => Tracing::HtmlTemplate,
|
7
|
+
:default => Tracing::StringTemplate
|
8
8
|
}
|
9
9
|
end
|
10
10
|
end
|
data/lib/trace-util-adv.rb
CHANGED
@@ -1,24 +1,40 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'duration'
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
require f
|
8
|
-
}
|
9
|
-
end
|
10
|
-
|
11
|
-
def include_folder(name)
|
12
|
-
Dir.glob(File.join(File.dirname(__FILE__), "#{name}/*.rb")).each {|f|
|
13
|
-
puts f
|
14
|
-
require f
|
15
|
-
}
|
16
|
-
end
|
17
|
-
|
18
|
-
include_folder_rec('rules')
|
19
|
-
include_folder_rec('extensions')
|
3
|
+
require 'require-magic'
|
4
|
+
Require.base_path = File.dirname(__FILE__)
|
5
|
+
Require.rfolder 'rules'
|
6
|
+
Require.folder 'extensions'
|
20
7
|
require 'filters/include'
|
21
|
-
|
8
|
+
Require.folder 'output_handler'
|
22
9
|
require 'appenders/include'
|
23
|
-
|
24
|
-
|
10
|
+
Require.rfolder('action_handler')
|
11
|
+
Require.rfolder('targets')
|
12
|
+
Require.rfolder('templates')
|
13
|
+
Require.folder('trace_calls')
|
14
|
+
|
15
|
+
|
16
|
+
# Module_filter = {
|
17
|
+
# :name => 'my modules',
|
18
|
+
# :default => :exclude,
|
19
|
+
# :module_rules => [{
|
20
|
+
# # id of modules rule set
|
21
|
+
# :name => ['my_modules'],
|
22
|
+
# :include => [/Hobo/],
|
23
|
+
# :exclude => [/Dryml/],
|
24
|
+
# :default => :exclude
|
25
|
+
# }]
|
26
|
+
# }
|
27
|
+
#
|
28
|
+
# _filter = Module_filter
|
29
|
+
#
|
30
|
+
# context = {:modules => ['Blip', 'Blap']}.context
|
31
|
+
#
|
32
|
+
# puts context.inspect
|
33
|
+
#
|
34
|
+
# options = {:filters => _filter}
|
35
|
+
# exec = Tracing::Filter::Executor.new(options)
|
36
|
+
# result = exec.filters_allow?('msg', context)
|
37
|
+
#
|
38
|
+
# puts "Result:" + result.inspect
|
39
|
+
#
|
40
|
+
# assert_equal false, result, "Filter should NOT allow passage"
|
@@ -11,23 +11,10 @@ module Tracing
|
|
11
11
|
include Tracing::Filter::Exec
|
12
12
|
|
13
13
|
class << self
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
include Tracing::ActionHandler::Registration
|
19
|
-
|
20
|
-
attr_accessor :final_yield_action
|
21
|
-
|
22
|
-
def configure(options)
|
23
|
-
# puts "Filters before config: " + Tracing::TraceExt.filters.inspect
|
24
|
-
|
25
|
-
register_filters(options[:filters])
|
26
|
-
|
27
|
-
# puts "Filters after config: " + Tracing::TraceExt.filters.inspect
|
28
|
-
|
29
|
-
register_action_handlers(options[:action_handlers] || options)
|
30
|
-
@final_yield_action = options[:final_yield] || :include
|
14
|
+
attr_accessor :configuration
|
15
|
+
|
16
|
+
def configure(configuration)
|
17
|
+
@configuration ||= configuration if configuration.kind_of? Tracing::Configuration
|
31
18
|
end
|
32
19
|
|
33
20
|
end
|
@@ -1,9 +1,4 @@
|
|
1
|
-
require
|
2
|
-
require "trace_calls"
|
3
|
-
require "sample_filters"
|
4
|
-
require "rubygems"
|
5
|
-
require "duration"
|
6
|
-
require "test/unit"
|
1
|
+
require 'include'
|
7
2
|
|
8
3
|
class TestCreateActionHandler < Test::Unit::TestCase
|
9
4
|
|
@@ -15,14 +10,16 @@ class TestCreateActionHandler < Test::Unit::TestCase
|
|
15
10
|
config = {:action_handlers => {:appenders => :html}}
|
16
11
|
result = config.action_handlers
|
17
12
|
assert_equal Tracing::HtmlAppender, result.appenders[0].class, "Should result in action handler with HtmlAppender registered"
|
18
|
-
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_ah
|
19
16
|
config = {:action_handlers => {:filters => {:i_method_filter => "a,b"}}}
|
20
17
|
result = config.action_handlers
|
21
18
|
assert_equal Tracing::MethodFilter, result.filters[0].class, "Should result in action handler with MethodFilter registered"
|
22
|
-
|
19
|
+
|
23
20
|
ah1 = {:filters => {:i_method_filter => "a,b"}, :appenders => :html}
|
24
21
|
ah2 = {:filters => {:x_method_filter => "c,d"}, :appenders => :xml}
|
25
|
-
|
22
|
+
|
26
23
|
config = {:action_handlers => [ah1, ah2]}
|
27
24
|
result = config.action_handlers
|
28
25
|
assert_equal Tracing::MethodFilter, result[0].filters[0].class, "Should result in action handler with MethodFilter registered"
|