trace-util-adv 0.2.3 → 0.2.4
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/Advanced TraceUtils tutorial.pdf +0 -0
- data/CHANGELOG +4 -8
- data/{lib/TODO.txt → TODO.txt} +8 -0
- data/VERSION +1 -1
- data/lib/action_handler/action_handler.rb +40 -0
- data/lib/{action_handler.rb → action_handler/action_handler_registration.rb} +3 -41
- data/lib/appenders/appender.rb +1 -13
- data/lib/appenders/appender_mappings.rb +13 -0
- data/lib/appenders/base_appender.rb +2 -11
- data/lib/appenders/file_appender.rb +21 -13
- data/lib/appenders/include.rb +4 -0
- data/lib/appenders/types/README-NOTE.txt +2 -0
- data/lib/appenders/{html_appender.rb → types/html_appender.rb} +4 -20
- data/lib/appenders/{logger_appender.rb → types/logger_appender.rb} +0 -0
- data/lib/appenders/{stream_appender.rb → types/stream_appender.rb} +0 -0
- data/lib/appenders/{template_log_appender.rb → types/template_log_appender.rb} +0 -0
- data/lib/appenders/{xml_appender.rb → types/xml_appender.rb} +1 -1
- data/lib/extensions/array_extensions.rb +42 -0
- data/lib/extensions/hash_extensions.rb +181 -0
- data/lib/extensions/hash_rule_extensions.rb +50 -0
- data/lib/extensions/include.rb +1 -0
- data/lib/extensions/nilclass_extensions.rb +10 -0
- data/lib/extensions/object_extensions.rb +19 -0
- data/lib/extensions/string_extensions.rb +35 -0
- data/lib/extensions/symbol_extensions.rb +30 -0
- data/lib/filters/composite/composite_class_filter.rb +25 -0
- data/lib/filters/composite/composite_module_filter.rb +53 -0
- data/lib/filters/executor/filter_exec.rb +74 -0
- data/lib/filters/filter.rb +43 -0
- data/lib/filters/filter_factory.rb +1 -1
- data/lib/filters/filter_mappings.rb +36 -0
- data/lib/filters/{tracing_filter.rb → filter_registration.rb} +6 -49
- data/lib/filters/filter_use.rb +10 -0
- data/lib/filters/include.rb +8 -0
- data/lib/filters/list/README-NOTE.txt +1 -0
- data/lib/filters/list/list_instance_var_filter.rb +27 -0
- data/lib/filters/{message_filters.rb → msg_context/message_context_filters.rb} +3 -12
- data/lib/filters/simple/argument_filter.rb +24 -0
- data/lib/filters/simple/class_filter.rb +15 -0
- data/lib/filters/simple/instance_var_filter.rb +25 -0
- data/lib/filters/simple/method_filter.rb +17 -0
- data/lib/filters/simple/module_filter.rb +14 -0
- data/lib/{templates/trace_output_handler.rb → output_handler/output_handler.rb} +0 -0
- data/lib/rules/rule_mappings.rb +10 -0
- data/lib/{rule_match.rb → rules/rule_match.rb} +5 -3
- data/lib/targets/README-NOTE.txt +2 -0
- data/lib/targets/file_target.rb +65 -0
- data/lib/targets/stream_target.rb +9 -0
- data/lib/targets/string_target.rb +9 -0
- data/lib/templates/base_template.rb +3 -2
- data/lib/templates/html_template.rb +1 -2
- data/lib/templates/include.rb +2 -0
- data/lib/templates/string_template.rb +24 -25
- data/lib/templates/template_mappings.rb +10 -0
- data/lib/templates/xml_template.rb +28 -29
- data/lib/trace-util-adv.rb +24 -4
- data/lib/{trace_calls.rb → trace_calls/trace_calls.rb} +0 -0
- data/lib/trace_calls/trace_configuration.rb +29 -0
- data/lib/{trace_ext.rb → trace_calls/trace_ext.rb} +10 -9
- data/test/{test_action_handler.rb → action_handler/test_action_handler.rb} +1 -5
- data/test/action_handler/test_create_action_handler.rb +31 -0
- data/test/appenders/test_appender_filters.rb +0 -0
- data/test/appenders/test_appender_tracers.rb +56 -0
- data/test/appenders/test_create_appender.rb +49 -0
- data/test/{test_html_appender.rb → appenders/test_html_appender.rb} +3 -7
- data/test/appenders/test_stream_appender.rb +41 -0
- data/test/appenders/test_template_log_appender.rb +18 -0
- data/test/{test_xml_appender.rb → appenders/test_xml_appender.rb} +0 -0
- data/test/extensions/test_filters_creation.rb +36 -0
- data/test/extensions/test_hash_extensions.rb +208 -0
- data/test/extensions/test_hash_filter_extensions.rb +65 -0
- data/test/extensions/test_set_context.rb +94 -0
- data/test/extensions/test_string_extensions.rb +55 -0
- data/test/extensions/test_symbol_extensions.rb +35 -0
- data/test/{test_filters_chain.rb → filters/chain/test_filters_chain.rb} +2 -1
- data/test/filters/composite/test_composite_class_filter.rb +78 -0
- data/test/filters/composite/test_composite_module_filter.rb +82 -0
- data/test/filters/composite/test_composite_var_filter.rb +103 -0
- data/test/filters/executor/test_filter_exec.rb +80 -0
- data/test/filters/msg_context/test_custom_filters.rb +54 -0
- data/test/filters/simple/test_base_filter.rb +56 -0
- data/test/filters/simple/test_class_filter.rb +75 -0
- data/test/filters/simple/test_instancevar_filter.rb +82 -0
- data/test/filters/simple/test_method_filter.rb +77 -0
- data/test/filters/simple/test_module_filter.rb +63 -0
- data/test/samples/include.rb +1 -0
- data/test/samples/sample_classes.rb +23 -0
- data/test/samples/sample_composite_filters.rb +50 -0
- data/test/samples/sample_filters.rb +58 -0
- data/test/sandbox/matcher.rb +7 -0
- data/test/sandbox/sandbox.rb +25 -0
- data/test/{test_xml_gen.rb → sandbox/test_xml_gen.rb} +0 -0
- data/test/trace_calls/test_configure_.rb +70 -0
- data/test/trace_calls/tracing/test_html_tracing.rb +20 -0
- data/test/trace_calls/tracing/test_logger_tracing.rb +18 -0
- data/test/trace_calls/tracing/test_stream_tracing.rb +17 -0
- data/test/trace_calls/tracing/test_teamplate_log_tracing.rb +18 -0
- data/test/trace_calls/tracing/test_xml_tracing.rb +18 -0
- data/test/tracers/test_create_tracers.rb +46 -0
- data/test/tracers/test_exec_tracers.rb +11 -0
- data/trace-util-adv.gemspec +91 -32
- metadata +91 -32
- data/lib/core_extensions.rb +0 -101
- data/lib/filters/base_filters.rb +0 -178
- data/lib/filters/composite_filters.rb +0 -71
- data/lib/output_templates.rb +0 -5
- data/lib/sample_filters.rb +0 -97
- data/lib/trace_appenders.rb +0 -9
- data/lib/trace_filters.rb +0 -4
- data/test/test_appender.rb +0 -29
- data/test/test_file_appender.rb +0 -32
- data/test/test_filters.rb +0 -112
- data/test/test_filters_create.rb +0 -28
- data/test/test_special_filters.rb +0 -78
data/lib/core_extensions.rb
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
require 'rule_match'
|
|
2
|
-
|
|
3
|
-
class String
|
|
4
|
-
def modules
|
|
5
|
-
self.split("::")[0..-2]
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def class_name
|
|
9
|
-
self.split("::")[-1..-1]
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def in_module?(module_name)
|
|
13
|
-
modules = self.modules
|
|
14
|
-
modules.include?(module_name)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def split_names
|
|
18
|
-
self.split(/\s|,/)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class Array
|
|
25
|
-
include Tracing::RuleMatch
|
|
26
|
-
|
|
27
|
-
def add(obj)
|
|
28
|
-
self << obj
|
|
29
|
-
self.flatten!
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
class Symbol
|
|
34
|
-
def prefix(pre)
|
|
35
|
-
(pre.to_s + self.to_s).to_sym
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
class Hash
|
|
40
|
-
include Tracing::RuleMatch
|
|
41
|
-
|
|
42
|
-
def try_create_filter(symbol)
|
|
43
|
-
isymbol = has_i(symbol) || has_x(symbol)
|
|
44
|
-
# puts "try_create_filter: " + isymbol.inspect
|
|
45
|
-
if isymbol
|
|
46
|
-
filter_names = self[isymbol]
|
|
47
|
-
# puts "filter_names:" + filter_names.inspect
|
|
48
|
-
{symbol => {:include => filter_names}}
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def rules_allow_action(name)
|
|
53
|
-
rule_allow_action(name)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def rule_list(rules)
|
|
57
|
-
if rules.kind_of? String
|
|
58
|
-
rules.split_names
|
|
59
|
-
else
|
|
60
|
-
rules
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# return a symbol, either - :include, :exclude or :yield (let next filter decide)
|
|
65
|
-
def rule_allow_action(name)
|
|
66
|
-
include_rules = rule_list(self[:include])
|
|
67
|
-
if include_rules && include_rules.size > 0
|
|
68
|
-
# puts "Rule include"
|
|
69
|
-
res = include_rules.matches_any?(name)
|
|
70
|
-
return :include if res
|
|
71
|
-
end
|
|
72
|
-
exclude_rules = rule_list(self[:exclude])
|
|
73
|
-
if exclude_rules
|
|
74
|
-
# puts "Rule exclude"
|
|
75
|
-
return :exclude if exclude_rules.matches_any?(name)
|
|
76
|
-
end
|
|
77
|
-
# puts "Not included or excluded"
|
|
78
|
-
if !self[:default].nil?
|
|
79
|
-
# puts "Return default: #{self[:default]}"
|
|
80
|
-
return self[:default]
|
|
81
|
-
end
|
|
82
|
-
# puts "Rule yields"
|
|
83
|
-
return :yield
|
|
84
|
-
rescue RuleTypeError
|
|
85
|
-
# puts "error"
|
|
86
|
-
return :exclude
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
protected
|
|
90
|
-
def has_i(symbol)
|
|
91
|
-
isym = symbol.prefix('i')
|
|
92
|
-
self.has_key?(isym) ? isym : false
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def has_x(symbol)
|
|
96
|
-
self.has_key?(symbol.prefix('i'))
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
|
data/lib/filters/base_filters.rb
DELETED
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
module Tracing
|
|
2
|
-
|
|
3
|
-
# abstract filter
|
|
4
|
-
class BaseFilter
|
|
5
|
-
attr_reader :name
|
|
6
|
-
attr_accessor :rules
|
|
7
|
-
|
|
8
|
-
class << self
|
|
9
|
-
attr_accessor :filters
|
|
10
|
-
|
|
11
|
-
# register symbol => filter mappings
|
|
12
|
-
def register_filters(hash)
|
|
13
|
-
filters.merge!(hash)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# array of symbols
|
|
17
|
-
# [:special_filter, :stream_filter]
|
|
18
|
-
def unregister_filters(hash)
|
|
19
|
-
filters.reject!{|key, value| hash.include? key}
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def filter_rule_mappings
|
|
23
|
-
{
|
|
24
|
-
:module_rules => :module_filter,
|
|
25
|
-
:class_rules => :class_filter,
|
|
26
|
-
:method_rules => :method_filter,
|
|
27
|
-
:var_rules => :vars_filter,
|
|
28
|
-
:modules => :composite_module_filter,
|
|
29
|
-
:classes => :composite_class_filter,
|
|
30
|
-
:vars => :composite_vars_filter
|
|
31
|
-
}
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def convenience_map
|
|
35
|
-
{
|
|
36
|
-
:module => :module_filter,
|
|
37
|
-
:class => :class_filter,
|
|
38
|
-
:method => :method_filter,
|
|
39
|
-
:vars => :vars_filter,
|
|
40
|
-
}
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def default_filters
|
|
45
|
-
{
|
|
46
|
-
:module_filter => Tracing::ModuleFilter,
|
|
47
|
-
:class_filter => Tracing::ClassFilter,
|
|
48
|
-
:method_filter => Tracing::MethodFilter,
|
|
49
|
-
:vars_filter => Tracing::InstanceVarFilter,
|
|
50
|
-
:composite_module_filter => Tracing::CompositeModuleFilter,
|
|
51
|
-
:composite_class_filter => Tracing::CompositeClassFilter,
|
|
52
|
-
:composite_vars_filter => Tracing::CompositeInstanceVarFilter
|
|
53
|
-
}
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def get_filter(options)
|
|
57
|
-
convenience_map.select do |key, _filter|
|
|
58
|
-
return _filter if options.has_key?(key) || options.has_key?(_filter)
|
|
59
|
-
end
|
|
60
|
-
filter_rule_mappings.select do |key, _filter|
|
|
61
|
-
return _filter if options.has_key? key
|
|
62
|
-
end
|
|
63
|
-
return options
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Example:
|
|
67
|
-
# {:method, :include => 'hello,way'}
|
|
68
|
-
# {:class, :include => 'A,B', :exclude => 'C'}
|
|
69
|
-
def filter_by_hash(options)
|
|
70
|
-
filters ||= default_filters
|
|
71
|
-
|
|
72
|
-
# try by factory
|
|
73
|
-
new_filter = Tracing::Filter.create_filter(options)
|
|
74
|
-
|
|
75
|
-
# puts "New filter: #{new_filter.inspect}"
|
|
76
|
-
|
|
77
|
-
options = new_filter if new_filter
|
|
78
|
-
|
|
79
|
-
# try by other means
|
|
80
|
-
type = get_filter(options)
|
|
81
|
-
|
|
82
|
-
if type && type.kind_of?(Symbol)
|
|
83
|
-
filter_class = filters[type]
|
|
84
|
-
|
|
85
|
-
# puts "filter class: #{filter_class}"
|
|
86
|
-
|
|
87
|
-
# ensure options has rules
|
|
88
|
-
if filter_class
|
|
89
|
-
filter_class.new(options)
|
|
90
|
-
else
|
|
91
|
-
raise Exception, "Filterclass not found"
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
# TODO: Refactor using symbol map!
|
|
97
|
-
def create_filter(options)
|
|
98
|
-
if options.kind_of? Hash
|
|
99
|
-
_filter = filter_by_hash(options)
|
|
100
|
-
elsif options.kind_of? BaseFilter
|
|
101
|
-
options
|
|
102
|
-
else
|
|
103
|
-
nil
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
def initialize(options)
|
|
110
|
-
@name = options[:name] || "Unknown filter"
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
def name_allow_action(name)
|
|
114
|
-
res = rules.rules_allow_action(name)
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
# filter on module
|
|
119
|
-
class ModuleFilter < BaseFilter
|
|
120
|
-
def initialize(options)
|
|
121
|
-
super(options)
|
|
122
|
-
@rules = options[:module_rules] || {}
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
def allow_action(msg, context)
|
|
126
|
-
name = context[:full_module_name]
|
|
127
|
-
allow = name_allow_action(name)
|
|
128
|
-
end
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# filter on class name
|
|
132
|
-
class ClassFilter < BaseFilter
|
|
133
|
-
def initialize(options)
|
|
134
|
-
super(options)
|
|
135
|
-
@rules = options[:class_rules] || {}
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
def allow_action(msg, context)
|
|
139
|
-
name = context[:class_name]
|
|
140
|
-
allow = name_allow_action(name)
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
# filter on method
|
|
146
|
-
class MethodFilter < BaseFilter
|
|
147
|
-
def initialize(options)
|
|
148
|
-
super(options)
|
|
149
|
-
@rules = options[:method_rules] || options[:method_filter] || {}
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def allow_action(msg, context)
|
|
153
|
-
name = context[:method_name]
|
|
154
|
-
@encountered ||= []
|
|
155
|
-
name_allow_action(name)
|
|
156
|
-
end
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
# filter on instance variables
|
|
160
|
-
class InstanceVarFilter < BaseFilter
|
|
161
|
-
attr_accessor :var_name
|
|
162
|
-
|
|
163
|
-
def initialize(options)
|
|
164
|
-
super(options)
|
|
165
|
-
@rules = options[:var_rules] || {}
|
|
166
|
-
var_name = options[:var_name]
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
def allow_action(msg, context)
|
|
170
|
-
obj = context[:self]
|
|
171
|
-
if var_name.kind_of?(Symbol) || var_name.kind_of?(String)
|
|
172
|
-
value = obj.instance_variable_get(var_name)
|
|
173
|
-
return name_allow_action(value)
|
|
174
|
-
end
|
|
175
|
-
:yield
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
end
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
module Tracing
|
|
2
|
-
class CompositeClassFilter < BaseFilter
|
|
3
|
-
def initialize(options)
|
|
4
|
-
super(options)
|
|
5
|
-
@rules = options || {}
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
# filter on class names and then methods within those classes
|
|
9
|
-
def allow?(msg, context)
|
|
10
|
-
# class name of context
|
|
11
|
-
class_name = context[:class_name]
|
|
12
|
-
rules[:classes].each do |clazz|
|
|
13
|
-
names=clazz[:names]
|
|
14
|
-
next if !names.matches_any?(name)
|
|
15
|
-
# if name matches rule
|
|
16
|
-
method_filter = MethodFilter.new(clazz)
|
|
17
|
-
return false if !method_filter.allow?(msg, context)
|
|
18
|
-
end
|
|
19
|
-
return true
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
class CompositeModuleFilter < BaseFilter
|
|
24
|
-
def initialize(options)
|
|
25
|
-
super(options)
|
|
26
|
-
@rules = options || {}
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# filter on module names and then on class names and methods within those modules
|
|
30
|
-
def allow?(msg, context)
|
|
31
|
-
modules_name = context[:full_module_name]
|
|
32
|
-
rules[:modules].each do |_module|
|
|
33
|
-
# get names of modules to match
|
|
34
|
-
names = _module[:names]
|
|
35
|
-
# test if current module name matches any of the module names for this rule
|
|
36
|
-
next if !names.matches_any?(modules_name)
|
|
37
|
-
# if name matches rule
|
|
38
|
-
if _module[:classes]
|
|
39
|
-
composite_class_filter = CompositeClassFilter.new(_module)
|
|
40
|
-
return false if !composite_class_filter.allow?(msg, context)
|
|
41
|
-
end
|
|
42
|
-
if _module[:class_rules]
|
|
43
|
-
class_filter = ClassFilter.new(_module)
|
|
44
|
-
return false if !class_filter.allow?(msg, context)
|
|
45
|
-
end
|
|
46
|
-
if _module[:method_rules]
|
|
47
|
-
method_filter = MethodFilter.new(_module)
|
|
48
|
-
return false if !method_filter.allow?(msg, context)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
# log it!
|
|
52
|
-
true
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
class CompositeInstanceVarFilter < BaseFilter
|
|
57
|
-
def initialize(options)
|
|
58
|
-
super(options)
|
|
59
|
-
@rules = options || {}
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def allow?(msg, context)
|
|
63
|
-
rules[:vars].each do |var|
|
|
64
|
-
var_filter = InstanceVarFilter.new(var)
|
|
65
|
-
return false if !var_filter.allow?(msg, context)
|
|
66
|
-
end
|
|
67
|
-
true
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
end
|
data/lib/output_templates.rb
DELETED
data/lib/sample_filters.rb
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# my_instance_variables = {:template_path => 'taglibs/rapid_core.dryml'}
|
|
2
|
-
# args = {:a => 7}
|
|
3
|
-
# context = {
|
|
4
|
-
# :modules => cls_name.modules,
|
|
5
|
-
# :class_name => cls_name.class_name,
|
|
6
|
-
# :full_class_name => cls_name,
|
|
7
|
-
# :method_name => name,
|
|
8
|
-
# :args => args,
|
|
9
|
-
# :block => false,
|
|
10
|
-
# :vars => my_instance_variables # to carry @template_path etc.
|
|
11
|
-
# }
|
|
12
|
-
|
|
13
|
-
Module_filter_A = {
|
|
14
|
-
:name => 'my modules',
|
|
15
|
-
:module_rules => [{
|
|
16
|
-
# id of modules rule set
|
|
17
|
-
:name => ['my_modules'],
|
|
18
|
-
:include => [/Al/],
|
|
19
|
-
:exclude => [/Be/],
|
|
20
|
-
:default => true
|
|
21
|
-
}
|
|
22
|
-
]}
|
|
23
|
-
|
|
24
|
-
Class_filter_A = {
|
|
25
|
-
:name => 'my classes',
|
|
26
|
-
:class_rules => [{
|
|
27
|
-
# id of class rule set
|
|
28
|
-
:name => 'my_classes',
|
|
29
|
-
:include => [/MyCl/],
|
|
30
|
-
:exclude => [/NotMy/],
|
|
31
|
-
:include_and_yield => ['blap'],
|
|
32
|
-
:default => false
|
|
33
|
-
}]
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
Method_filter_A = {
|
|
37
|
-
:name => 'my methods',
|
|
38
|
-
:method_rules => [{
|
|
39
|
-
# id of method rule set
|
|
40
|
-
:name => 'my_methods',
|
|
41
|
-
:include => [/by.*/, 'compile', 'do_it'],
|
|
42
|
-
:exclude => ['my.*'],
|
|
43
|
-
:exclude_and_yield => ['blip'],
|
|
44
|
-
:default => false
|
|
45
|
-
}]
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
Class_composite_filter_A = {
|
|
49
|
-
# id of composite rule set
|
|
50
|
-
:name => 'Template stuff',
|
|
51
|
-
:classes => [{
|
|
52
|
-
:names => ['My', /My/],
|
|
53
|
-
:method_rules => {
|
|
54
|
-
:include => [/by.*/, 'DRYMLBuilder'],
|
|
55
|
-
:exclude => ['Taglib'],
|
|
56
|
-
:default => false
|
|
57
|
-
}
|
|
58
|
-
}]
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
Module_composite_filter_A = {
|
|
62
|
-
# id of composite rule set
|
|
63
|
-
:name => 'dryml_filter',
|
|
64
|
-
:modules => [{
|
|
65
|
-
:names => ['Hobo:Dryml', /Dryml/],
|
|
66
|
-
:class_rules => {
|
|
67
|
-
:include => [/Template.*/, 'DRYMLBuilder'],
|
|
68
|
-
:exclude => ['Taglib'],
|
|
69
|
-
:default => true
|
|
70
|
-
},
|
|
71
|
-
:method_rules => {
|
|
72
|
-
:include => [/Template.*/, 'DRYMLBuilder'],
|
|
73
|
-
:exclude => ['Taglib'],
|
|
74
|
-
:default => true
|
|
75
|
-
}
|
|
76
|
-
}]
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
# for specific instance_vars, match on values (after .to_s on var)
|
|
81
|
-
Var_composite_filter_A = {
|
|
82
|
-
:name => 'template_path',
|
|
83
|
-
:vars => [{
|
|
84
|
-
:name => 'template_path', :type => :string,
|
|
85
|
-
:var_rules => {
|
|
86
|
-
:include => [/.*\/taglib\/.*/],
|
|
87
|
-
:exclude => [/.*\/rapid_.*/]
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
:name => 'template_path',
|
|
92
|
-
:var_rules => {
|
|
93
|
-
:exclude => [/.*\/rapid_.*/],
|
|
94
|
-
:default => true
|
|
95
|
-
}
|
|
96
|
-
}]
|
|
97
|
-
}
|
data/lib/trace_appenders.rb
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
require 'appenders/appender_registration'
|
|
2
|
-
require 'appenders/appender'
|
|
3
|
-
require 'appenders/base_appender'
|
|
4
|
-
require 'appenders/file_appender'
|
|
5
|
-
require 'appenders/logger_appender'
|
|
6
|
-
require 'appenders/stream_appender'
|
|
7
|
-
require 'appenders/xml_appender'
|
|
8
|
-
require 'appenders/html_appender'
|
|
9
|
-
require 'appenders/template_log_appender'
|
data/lib/trace_filters.rb
DELETED
data/test/test_appender.rb
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
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
|
-
|
data/test/test_file_appender.rb
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
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/test/test_filters.rb
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
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
|
-
|
data/test/test_filters_create.rb
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
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
|
-
|