trace-util-adv 0.2.4 → 0.3.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/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"
|