trace-util-adv 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. data/Advanced TraceUtils tutorial.pdf +0 -0
  2. data/CHANGELOG +4 -8
  3. data/{lib/TODO.txt → TODO.txt} +8 -0
  4. data/VERSION +1 -1
  5. data/lib/action_handler/action_handler.rb +40 -0
  6. data/lib/{action_handler.rb → action_handler/action_handler_registration.rb} +3 -41
  7. data/lib/appenders/appender.rb +1 -13
  8. data/lib/appenders/appender_mappings.rb +13 -0
  9. data/lib/appenders/base_appender.rb +2 -11
  10. data/lib/appenders/file_appender.rb +21 -13
  11. data/lib/appenders/include.rb +4 -0
  12. data/lib/appenders/types/README-NOTE.txt +2 -0
  13. data/lib/appenders/{html_appender.rb → types/html_appender.rb} +4 -20
  14. data/lib/appenders/{logger_appender.rb → types/logger_appender.rb} +0 -0
  15. data/lib/appenders/{stream_appender.rb → types/stream_appender.rb} +0 -0
  16. data/lib/appenders/{template_log_appender.rb → types/template_log_appender.rb} +0 -0
  17. data/lib/appenders/{xml_appender.rb → types/xml_appender.rb} +1 -1
  18. data/lib/extensions/array_extensions.rb +42 -0
  19. data/lib/extensions/hash_extensions.rb +181 -0
  20. data/lib/extensions/hash_rule_extensions.rb +50 -0
  21. data/lib/extensions/include.rb +1 -0
  22. data/lib/extensions/nilclass_extensions.rb +10 -0
  23. data/lib/extensions/object_extensions.rb +19 -0
  24. data/lib/extensions/string_extensions.rb +35 -0
  25. data/lib/extensions/symbol_extensions.rb +30 -0
  26. data/lib/filters/composite/composite_class_filter.rb +25 -0
  27. data/lib/filters/composite/composite_module_filter.rb +53 -0
  28. data/lib/filters/executor/filter_exec.rb +74 -0
  29. data/lib/filters/filter.rb +43 -0
  30. data/lib/filters/filter_factory.rb +1 -1
  31. data/lib/filters/filter_mappings.rb +36 -0
  32. data/lib/filters/{tracing_filter.rb → filter_registration.rb} +6 -49
  33. data/lib/filters/filter_use.rb +10 -0
  34. data/lib/filters/include.rb +8 -0
  35. data/lib/filters/list/README-NOTE.txt +1 -0
  36. data/lib/filters/list/list_instance_var_filter.rb +27 -0
  37. data/lib/filters/{message_filters.rb → msg_context/message_context_filters.rb} +3 -12
  38. data/lib/filters/simple/argument_filter.rb +24 -0
  39. data/lib/filters/simple/class_filter.rb +15 -0
  40. data/lib/filters/simple/instance_var_filter.rb +25 -0
  41. data/lib/filters/simple/method_filter.rb +17 -0
  42. data/lib/filters/simple/module_filter.rb +14 -0
  43. data/lib/{templates/trace_output_handler.rb → output_handler/output_handler.rb} +0 -0
  44. data/lib/rules/rule_mappings.rb +10 -0
  45. data/lib/{rule_match.rb → rules/rule_match.rb} +5 -3
  46. data/lib/targets/README-NOTE.txt +2 -0
  47. data/lib/targets/file_target.rb +65 -0
  48. data/lib/targets/stream_target.rb +9 -0
  49. data/lib/targets/string_target.rb +9 -0
  50. data/lib/templates/base_template.rb +3 -2
  51. data/lib/templates/html_template.rb +1 -2
  52. data/lib/templates/include.rb +2 -0
  53. data/lib/templates/string_template.rb +24 -25
  54. data/lib/templates/template_mappings.rb +10 -0
  55. data/lib/templates/xml_template.rb +28 -29
  56. data/lib/trace-util-adv.rb +24 -4
  57. data/lib/{trace_calls.rb → trace_calls/trace_calls.rb} +0 -0
  58. data/lib/trace_calls/trace_configuration.rb +29 -0
  59. data/lib/{trace_ext.rb → trace_calls/trace_ext.rb} +10 -9
  60. data/test/{test_action_handler.rb → action_handler/test_action_handler.rb} +1 -5
  61. data/test/action_handler/test_create_action_handler.rb +31 -0
  62. data/test/appenders/test_appender_filters.rb +0 -0
  63. data/test/appenders/test_appender_tracers.rb +56 -0
  64. data/test/appenders/test_create_appender.rb +49 -0
  65. data/test/{test_html_appender.rb → appenders/test_html_appender.rb} +3 -7
  66. data/test/appenders/test_stream_appender.rb +41 -0
  67. data/test/appenders/test_template_log_appender.rb +18 -0
  68. data/test/{test_xml_appender.rb → appenders/test_xml_appender.rb} +0 -0
  69. data/test/extensions/test_filters_creation.rb +36 -0
  70. data/test/extensions/test_hash_extensions.rb +208 -0
  71. data/test/extensions/test_hash_filter_extensions.rb +65 -0
  72. data/test/extensions/test_set_context.rb +94 -0
  73. data/test/extensions/test_string_extensions.rb +55 -0
  74. data/test/extensions/test_symbol_extensions.rb +35 -0
  75. data/test/{test_filters_chain.rb → filters/chain/test_filters_chain.rb} +2 -1
  76. data/test/filters/composite/test_composite_class_filter.rb +78 -0
  77. data/test/filters/composite/test_composite_module_filter.rb +82 -0
  78. data/test/filters/composite/test_composite_var_filter.rb +103 -0
  79. data/test/filters/executor/test_filter_exec.rb +80 -0
  80. data/test/filters/msg_context/test_custom_filters.rb +54 -0
  81. data/test/filters/simple/test_base_filter.rb +56 -0
  82. data/test/filters/simple/test_class_filter.rb +75 -0
  83. data/test/filters/simple/test_instancevar_filter.rb +82 -0
  84. data/test/filters/simple/test_method_filter.rb +77 -0
  85. data/test/filters/simple/test_module_filter.rb +63 -0
  86. data/test/samples/include.rb +1 -0
  87. data/test/samples/sample_classes.rb +23 -0
  88. data/test/samples/sample_composite_filters.rb +50 -0
  89. data/test/samples/sample_filters.rb +58 -0
  90. data/test/sandbox/matcher.rb +7 -0
  91. data/test/sandbox/sandbox.rb +25 -0
  92. data/test/{test_xml_gen.rb → sandbox/test_xml_gen.rb} +0 -0
  93. data/test/trace_calls/test_configure_.rb +70 -0
  94. data/test/trace_calls/tracing/test_html_tracing.rb +20 -0
  95. data/test/trace_calls/tracing/test_logger_tracing.rb +18 -0
  96. data/test/trace_calls/tracing/test_stream_tracing.rb +17 -0
  97. data/test/trace_calls/tracing/test_teamplate_log_tracing.rb +18 -0
  98. data/test/trace_calls/tracing/test_xml_tracing.rb +18 -0
  99. data/test/tracers/test_create_tracers.rb +46 -0
  100. data/test/tracers/test_exec_tracers.rb +11 -0
  101. data/trace-util-adv.gemspec +91 -32
  102. metadata +91 -32
  103. data/lib/core_extensions.rb +0 -101
  104. data/lib/filters/base_filters.rb +0 -178
  105. data/lib/filters/composite_filters.rb +0 -71
  106. data/lib/output_templates.rb +0 -5
  107. data/lib/sample_filters.rb +0 -97
  108. data/lib/trace_appenders.rb +0 -9
  109. data/lib/trace_filters.rb +0 -4
  110. data/test/test_appender.rb +0 -29
  111. data/test/test_file_appender.rb +0 -32
  112. data/test/test_filters.rb +0 -112
  113. data/test/test_filters_create.rb +0 -28
  114. data/test/test_special_filters.rb +0 -78
@@ -0,0 +1,103 @@
1
+ require 'filters/filter_exec'
2
+ require 'extensions/core_extensions'
3
+ require "test/unit"
4
+
5
+ # for specific instance_vars, match on values (after .to_s on var)
6
+
7
+ # include if @template_path MATCHES 'taglib'
8
+ # exclude if @template_path MATCHES 'rapid_'
9
+ # exclude if @builder MATCHES 'bad_'
10
+ Var_composite_filter = {
11
+ :name => 'template_path',
12
+ :default => :exclude,
13
+ :vars => [
14
+ # include if @template_path MATCHES 'taglib'
15
+ # exclude if @template_path MATCHES 'rapid_'
16
+ {
17
+ :name => 'template_path',
18
+ :var_rules => {
19
+ :include => [/.*\/taglib\/.*/],
20
+ :exclude => [/.*\/rapid_.*/],
21
+ :default => :exclude_and_yield
22
+ }
23
+ },
24
+ # exclude if @builder MATCHES 'bad_'
25
+ {
26
+ :name => 'builder',
27
+ :var_rules => {
28
+ :exclude => [/.*\/bad.*/],
29
+ :default => :include
30
+ }
31
+ }]
32
+ }
33
+
34
+ class Obj
35
+ attr_accessor :template_path
36
+
37
+ def initialize(value = nil)
38
+ @template_path = value
39
+ end
40
+ end
41
+
42
+ class TestCompositeInstanceVarFilter < Test::Unit::TestCase
43
+
44
+ def test_composite_var_filter_hash_to_var
45
+ composite_filter = Var_composite_filter
46
+ result = composite_filter.filter_class
47
+ assert_equal Tracing::CompositeInstanceVarFilter, result, "Should result in composite var filter"
48
+ end
49
+
50
+ def test_composite_var_filter_hash_to_var
51
+ composite_filter = Var_composite_filter
52
+ result = composite_filter.create_filter
53
+ assert_equal Tracing::CompositeInstanceVarFilter, result.class, "Should result in composite var filter"
54
+ end
55
+
56
+ def test_composite_var_filter_from_hash
57
+ composite_filter = Var_composite_filter
58
+ config = {:filters => composite_filter}
59
+ result = config.filters
60
+ assert_equal Tracing::CompositeInstanceVarFilter, result.class, "Should result in composite var filter"
61
+ end
62
+
63
+ # see allow_action in CompositeInstanceVarFilter, refactor :yield, :include .. as return values!?
64
+ def test_composite_var_filter__var_and_method_match
65
+ composite_filter = Var_composite_filter
66
+
67
+ context = {}
68
+ context.set_context :vars => {:template_path => 'rapid'}
69
+
70
+ options = {:filters => composite_filter}
71
+ exec = Tracing::Filter::Executor.new(options)
72
+ result = exec.filters_allow?('msg', context)
73
+ assert_equal true, result, "Filter should allow passage"
74
+ end
75
+
76
+ def test_composite_var_filter__var_not_match
77
+ composite_filter = Var_composite_filter
78
+
79
+ context = {}
80
+ context.set_context :class_name => 'Blip::Blap', :vars => ["template_path"]
81
+ context[:self] = Obj.new "blop"
82
+
83
+ options = {:filters => composite_filter}
84
+ exec = Tracing::Filter::Executor.new(options)
85
+ result = exec.filters_allow?('msg', context)
86
+ assert_equal false, result, "Filter should NOT allow passage"
87
+ end
88
+
89
+ def test_composite_var_filter__method_excluded
90
+ composite_filter = Var_composite_filter
91
+
92
+ context = {}
93
+ context.set_context :class_name => 'Blip::Blap', :vars => ["template_path"]
94
+ context[:self] = Obj.new "a/rapid_x"
95
+
96
+ options = {:filters => composite_filter}
97
+ exec = Tracing::Filter::Executor.new(options)
98
+ result = exec.filters_allow?('msg', context)
99
+ assert_equal false, result, "Filter should NOT allow passage"
100
+ end
101
+
102
+
103
+ end
@@ -0,0 +1,80 @@
1
+ require 'filters/filter_exec'
2
+ require 'extensions/core_extensions'
3
+ require "test/unit"
4
+
5
+ class TestFilterExec < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @context = {:class_name => "Alpha::Beta::Gamma", :method_name => "meth_a", :vars => {:template_path => 'rapid'}, :args => {:a => 7} }.context
9
+ end
10
+
11
+ def teardown
12
+ ## Nothing really
13
+ end
14
+
15
+ # include method
16
+ def test_single_filter_allow
17
+ im_filter = {:i_method_filter => "meth_b, meth_a"}
18
+ options = {:filters => im_filter}
19
+ exec = Tracing::Filter::Executor.new(options)
20
+ result = exec.filters_allow?('msg', @context)
21
+ assert_equal true, result, "Filter should allow passage"
22
+ end
23
+
24
+
25
+ # exclude method
26
+ def test_single_filter_not_allow
27
+ xm_filter = {:x_method_filter => "meth_b, meth_a"}
28
+ options = {:filters => xm_filter}
29
+ exec = Tracing::Filter::Executor.new(options)
30
+ result = exec.filters_allow?('msg', @context)
31
+ assert_equal false, result, "Filter should not allow passage"
32
+ end
33
+
34
+ # yield include
35
+ def test_single_filter_yield_include
36
+ xm_filter = {:x_method_filter => "meth_b, meth_c"}
37
+ options = {:filters => xm_filter, :final_yield_action => :include}
38
+ exec = Tracing::Filter::Executor.new(options)
39
+ result = exec.filters_allow?('msg', @context)
40
+ assert_equal true, result, "Filter should not allow passage"
41
+ end
42
+
43
+ def test_single_filter_yield_exclude
44
+ xm_filter = {:x_method_filter => "meth_b, meth_c"}
45
+ options = {:filters => xm_filter, :final_yield_action => :exclude}
46
+ exec = Tracing::Filter::Executor.new(options)
47
+ result = exec.filters_allow?('msg', @context)
48
+ assert_equal false, result, "Filter should not allow passage"
49
+ end
50
+
51
+ def test_single_filter_yield_exclude_default
52
+ xm_filter = {:x_method_filter => "a,b"}
53
+ # :final_yield_action => :exclude by default
54
+ options = {:filters => xm_filter}
55
+ exec = Tracing::Filter::Executor.new(options)
56
+ result = exec.filters_allow?('msg', @context)
57
+ assert_equal false, result, "Filter should not allow passage"
58
+ end
59
+
60
+ def test_two_filters
61
+ im_filter = {:i_method_filter => "meth_b, meth_a"}
62
+ xm_filter = {:x_method_filter => "a,b"}
63
+ options = {:filters => [im_filter, xm_filter] }
64
+ exec = Tracing::Filter::Executor.new(options)
65
+ result = exec.filters_allow?('msg', @context)
66
+ assert_equal true, result, "Should allow passage"
67
+ end
68
+
69
+ def test_two_yield_filters
70
+ iy_filter = {:iy_method_filter => "meth_b, meth_a"}
71
+ xy_filter = {:xy_method_filter => "meth_b, meth_c"}
72
+ options = {:filters => [iy_filter, xy_filter]}
73
+ exec = Tracing::Filter::Executor.new(options)
74
+ result = exec.filters_allow?('msg', @context)
75
+ assert_equal true, result, "Should allow passage"
76
+ end
77
+
78
+
79
+ end
80
+
@@ -0,0 +1,54 @@
1
+ require 'core_extensions'
2
+ require 'filters/base_filters'
3
+ require 'filters/message_filters'
4
+
5
+
6
+ require 'extensions/core_extensions'
7
+ require "test/unit"
8
+
9
+ class CustomNameFilter < Tracing::NameFilter
10
+ def allow?(name)
11
+ name == options[:name]
12
+ end
13
+ end
14
+
15
+
16
+ class TestSymbolExtensions < Test::Unit::TestCase
17
+
18
+ def setup
19
+ # Procs of this form can be used as filters inside include/exclude lists
20
+ abc_filter = Proc.new {|name| name == 'abc' }
21
+ name_filter = CustomNameFilter.new('rapid')
22
+ @meth_filter_abc = {:i_method_filter => [abc_filter], :default => :exclude}.filters
23
+ @meth_filter_name = {:i_method_filter => [name_filter], :default => :exclude}.filters
24
+ @meth_filter_comb = {:i_method_filter => [abc_filter, name_filter], :default => :exclude}.filters
25
+
26
+ @context_abc = {:modules => ["Hobo"], :class_name => "Dryml", :method_name => "abc"}.context
27
+ @context_rapid = {:modules => ["Hobo"], :class_name => "Dryml", :method_name => "rapid"}.context
28
+ end
29
+
30
+ def teardown
31
+ ## Nothing really
32
+ end
33
+
34
+ def test_custom_name_filter
35
+ res = @meth_filter_name.allow?("hello", @context)
36
+ assert_equal true, res, "Should allow since matching method name 'abc'"
37
+ end
38
+
39
+ def test_custom_proc_filter
40
+ res = @meth_filter_abc.allow?("hello", @context)
41
+ assert_equal true, res, "Should allow since matching method name 'rapid'"
42
+ end
43
+
44
+ def test_custom_filters
45
+ @meth_filter_comb.allow?("hello", @context)
46
+ assert_equal true, res, "Should allow since matching method name 'abc'"
47
+ end
48
+
49
+ end
50
+
51
+
52
+
53
+
54
+
@@ -0,0 +1,56 @@
1
+ require 'filters/base_filters'
2
+ require "test/unit"
3
+
4
+
5
+ class TestBaseFilter < Test::Unit::TestCase
6
+
7
+ def setup
8
+ end
9
+
10
+ def teardown
11
+ ## Nothing really
12
+ end
13
+
14
+ def test_default_name
15
+ bf = Tracing::BaseFilter.new
16
+ assert_equal "Unknown filter", bf.name, "Should result name:'Unknown filter'"
17
+ end
18
+
19
+ def test_create_w_name
20
+ bf = Tracing::BaseFilter.new({:name => 'base'})
21
+ assert_equal "base", bf.name, "Should result in name:'base'"
22
+ end
23
+
24
+ def test_create_w_name
25
+ bf = Tracing::BaseFilter.new({:name => 'base'})
26
+ assert_equal "base", bf.name, "Should result in name:'base'"
27
+ end
28
+
29
+ def test_register_filters
30
+ bf = Tracing::BaseFilter.new({:name => 'base'})
31
+ bF = Tracing::BaseFilter
32
+ f1 = {:x => :y}
33
+ bF.register_filters(f1)
34
+ assert_equal f1, bF.filters, "Should result in x=>y filter"
35
+ f2 = {:z => :a}
36
+ bF.register_filters(f2)
37
+ expect = {:z=>:a, :x=>:y}
38
+ assert_equal expect, bF.filters, "Should result in x=>y and z=>a filter"
39
+ end
40
+
41
+ def test_unregister_filters
42
+ bf = Tracing::BaseFilter.new({:name => 'base'})
43
+ bF = Tracing::BaseFilter
44
+ # clear old filters
45
+ bF.filters = {}
46
+ f1 = {:x => :y}
47
+ bF.unregister_filters(f1)
48
+ assert_equal({}, bF.filters, "Should result in empty filter")
49
+ f2 = {:z => :a, :x => :y}
50
+ bF.register_filters(f2)
51
+ bF.unregister_filters(f1)
52
+ expect = {:z=>:a}
53
+ assert_equal expect, bF.filters, "Should result in z=>a filter"
54
+ end
55
+
56
+ end
@@ -0,0 +1,75 @@
1
+ require 'filters/filter_exec'
2
+ require 'extensions/core_extensions'
3
+ require "test/unit"
4
+
5
+ Class_filter = {
6
+ :name => 'my classes',
7
+ :class_rules => [{
8
+ # id of class rule set
9
+ :name => 'my_classes',
10
+ :include => [/Dryml/],
11
+ :exclude => [/NotMy/],
12
+ :default => :yield
13
+ }]
14
+ }
15
+
16
+ class TestFilter < Test::Unit::TestCase
17
+
18
+ def test_class_filter_hash_to_class
19
+ class_filter = Class_filter
20
+ result = class_filter.filter_class
21
+ assert_equal Tracing::ClassFilter, result, "Should result in class filter"
22
+ end
23
+
24
+ def test_class_filter_hash_to_class
25
+ class_filter = Class_filter
26
+ result = class_filter.create_filter
27
+ assert_equal Tracing::ClassFilter, result.class, "Should result in class filter"
28
+ end
29
+
30
+
31
+ def test_class_filter_from_hash
32
+ class_filter = Class_filter
33
+ config = {:filters => class_filter}
34
+ result = config.filters
35
+ assert_equal Tracing::ClassFilter, result.class, "Should result in method filter"
36
+ end
37
+
38
+ # see allow_action in ClassFilter, refactor :yield, :include .. as return values!?
39
+ def test_class_filter__class_and_method_match
40
+ class_filter = Class_filter
41
+
42
+ context = {}
43
+ context.set_context :class_name => "Dryml", :method_name => "build_a"
44
+
45
+ options = {:filters => class_filter}
46
+ exec = Tracing::Filter::Executor.new(options)
47
+ result = exec.filters_allow?('msg', context)
48
+ assert_equal true, result, "Filter should allow passage"
49
+ end
50
+
51
+ def test_class_filter__class_not_match
52
+ class_filter = Class_filter
53
+
54
+ context = {}
55
+ context.set_context :class_name => 'Blip::Blap'
56
+
57
+ options = {:filters => class_filter}
58
+ exec = Tracing::Filter::Executor.new(options)
59
+ result = exec.filters_allow?('msg', context)
60
+ assert_equal false, result, "Filter should NOT allow passage"
61
+ end
62
+
63
+ def test_class_filter__method_excluded
64
+ class_filter = Class_filter
65
+
66
+ context = {}
67
+ context.set_context :class_name => "Hobo::Blip"
68
+
69
+ options = {:filters => class_filter}
70
+ exec = Tracing::Filter::Executor.new(options)
71
+ result = exec.filters_allow?('msg', context)
72
+ assert_equal false, result, "Filter should NOT allow passage"
73
+ end
74
+
75
+ end
@@ -0,0 +1,82 @@
1
+ require 'filters/filter_exec'
2
+ require 'extensions/core_extensions'
3
+ require "test/unit"
4
+
5
+ InstanceVar_filter = {
6
+ :name => 'check template path',
7
+ :var_name => 'template_path',
8
+ :var_rules => {
9
+ :include => [/.*\/taglib\/.*/],
10
+ :exclude => [/.*\/rapid_.*/],
11
+ :default => :exclude
12
+ }
13
+ }
14
+
15
+ class Obj
16
+ attr_accessor :template_path
17
+
18
+ def initialize(value = nil)
19
+ @template_path = value
20
+ end
21
+ end
22
+
23
+ class TestInstanceVarFilter < Test::Unit::TestCase
24
+
25
+ def test_varfilter_hash_to_class
26
+ var_filter = InstanceVar_filter
27
+ result = var_filter.filter_class
28
+ assert_equal Tracing::InstanceVarFilter, result, "Should result in var filter"
29
+ end
30
+
31
+ def test_varfilter_hash_to_class
32
+ var_filter = InstanceVar_filter
33
+ result = var_filter.create_filter
34
+ assert_equal Tracing::InstanceVarFilter, result.class, "Should result in var filter"
35
+ end
36
+
37
+
38
+ def test_varfilter_from_hash
39
+ var_filter = InstanceVar_filter
40
+ config = {:filters => var_filter}
41
+ result = config.filters
42
+ assert_equal Tracing::InstanceVarFilter, result.class, "Should result in var filter"
43
+ end
44
+
45
+ # see allow_action in InstanceVarFilter, refactor :yield, :include .. as return values!?
46
+ def test_varfilter__class_and_varmatch
47
+ var_filter = InstanceVar_filter
48
+ context = {:class_name => "Hobo::Dryml", :vars => {"template_path" => "a/taglib/x"} }.context
49
+
50
+ options = {:filters => var_filter}
51
+ exec = Tracing::Filter::Executor.new(options)
52
+ result = exec.filters_allow?('msg', context)
53
+ assert_equal true, result, "Filter should allow passage"
54
+ end
55
+
56
+ def test_varfilter__varnot_match
57
+ var_filter = InstanceVar_filter
58
+
59
+ context = {:class_name => 'Blip::Blap', :vars => {"template_path" => "a/taglib/x"}, :self => Obj.new("blop") }.context
60
+
61
+ puts "Context:" + context.inspect
62
+
63
+ options = {:filters => var_filter}
64
+ exec = Tracing::Filter::Executor.new(options)
65
+ result = exec.filters_allow?('msg', context)
66
+ assert_equal false, result, "Filter should NOT allow passage"
67
+ end
68
+
69
+ def test_varfilter__varexcluded
70
+ var_filter = InstanceVar_filter
71
+ context = {:class_name => 'Blip::Blap', :vars => {"template_path" => "a/taglib/x"} }.context
72
+
73
+ context[:self] = Obj.new "a/rapid_x"
74
+
75
+
76
+ options = {:filters => var_filter}
77
+ exec = Tracing::Filter::Executor.new(options)
78
+ result = exec.filters_allow?('msg', context)
79
+ assert_equal false, result, "Filter should NOT allow passage"
80
+ end
81
+
82
+ end
@@ -0,0 +1,77 @@
1
+ require 'filters/filter_exec'
2
+ require 'extensions/core_extensions'
3
+ require "test/unit"
4
+
5
+ Method_filter = {
6
+ :name => 'my methods',
7
+ :method_rules => [{
8
+ # id of method rule set
9
+ :name => 'my_methods',
10
+ :include => [/by.*/, 'build_a', 'do_it'],
11
+ :exclude => ['add.*'],
12
+ :exclude_and_yield => ['blip'],
13
+ :default => :exclude
14
+ }]
15
+ }
16
+
17
+
18
+ class TestMethodFilter < Test::Unit::TestCase
19
+
20
+ def test_method_filter_hash_to_class
21
+ composite_filter = Method_filter
22
+ result = composite_filter.filter_class
23
+ assert_equal Tracing::MethodFilter, result, "Should result in method filter"
24
+ end
25
+
26
+ def test_method_filter_hash_to_class
27
+ composite_filter = Method_filter
28
+ result = composite_filter.create_filter
29
+ assert_equal Tracing::MethodFilter, result.class, "Should result in method filter"
30
+ end
31
+
32
+
33
+ def test_method_filter_from_hash
34
+ composite_filter = Method_filter
35
+ config = {:filters => composite_filter}
36
+ result = config.filters
37
+ assert_equal Tracing::MethodFilter, result.class, "Should result in method filter"
38
+ end
39
+
40
+ # see allow_action in MethodFilter, refactor :yield, :include .. as return values!?
41
+ def test_method_filter__class_and_method_match
42
+ composite_filter = Method_filter
43
+
44
+ context = {}
45
+ context.set_context :class_name => "Hobo::Dryml", :method_name => "build_a"
46
+
47
+ options = {:filters => composite_filter}
48
+ exec = Tracing::Filter::Executor.new(options)
49
+ result = exec.filters_allow?('msg', context)
50
+ assert_equal true, result, "Filter should allow passage"
51
+ end
52
+
53
+ def test_method_filter__method_not_match
54
+ composite_filter = Method_filter
55
+
56
+ context = {}
57
+ context.set_context :class_name => 'Blip::Blap', :method_name => "blop"
58
+
59
+ options = {:filters => composite_filter}
60
+ exec = Tracing::Filter::Executor.new(options)
61
+ result = exec.filters_allow?('msg', context)
62
+ assert_equal false, result, "Filter should NOT allow passage"
63
+ end
64
+
65
+ def test_method_filter__method_excluded
66
+ composite_filter = Method_filter
67
+
68
+ context = {}
69
+ context.set_context :class_name => "Hobo::Dryml", :method_name => "add_it"
70
+
71
+ options = {:filters => composite_filter}
72
+ exec = Tracing::Filter::Executor.new(options)
73
+ result = exec.filters_allow?('msg', context)
74
+ assert_equal false, result, "Filter should NOT allow passage"
75
+ end
76
+
77
+ end
@@ -0,0 +1,63 @@
1
+ require 'filters/filter_exec'
2
+ require 'extensions/core_extensions'
3
+ require "test/unit"
4
+
5
+ Module_filter = {
6
+ :name => 'my modules',
7
+ :module_rules => [{
8
+ # id of modules rule set
9
+ :name => ['my_modules'],
10
+ :include => [/Hobo/],
11
+ :exclude => [/Dryml/],
12
+ :default => :exclude
13
+ }
14
+ ]}
15
+
16
+ class TestModuleFilter < Test::Unit::TestCase
17
+
18
+ def test_module_filter_hash_to_module
19
+ _filter = Module_filter
20
+ result = _filter.filter_module
21
+ assert_equal Tracing::ModuleFilter, result, "Should result in module filter"
22
+ end
23
+
24
+ def test_module_filter_hash_to_module
25
+ _filter = Module_filter
26
+ result = _filter.create_filter
27
+ assert_equal Tracing::ModuleFilter, result.class, "Should result in module filter"
28
+ end
29
+
30
+ def test_module_filter_from_hash
31
+ _filter = Module_filter
32
+ config = {:filters => _filter}
33
+ result = config.filters
34
+ assert_equal Tracing::ModuleFilter, result.class, "Should result in module filter"
35
+ end
36
+
37
+ # see allow_action in ModuleFilter, refactor :yield, :include .. as return values!?
38
+ def test_module_filter__module_and_method_match
39
+ _filter = Module_filter
40
+
41
+ context = {}
42
+ context.set_context :modules => ["Hobo"], :method_name => "build_a" #, :class_name => "Dryml"
43
+
44
+ options = {:filters => _filter}
45
+ exec = Tracing::Filter::Executor.new(options)
46
+ result = exec.filters_allow?('msg', context)
47
+ assert_equal true, result, "Filter should allow passage"
48
+ end
49
+
50
+
51
+ def test_module_filter__module_not_match
52
+ _filter = Module_filter
53
+
54
+ context = {}
55
+ context.set_context :modules => ['Blip', 'Blap']
56
+
57
+ options = {:filters => _filter}
58
+ exec = Tracing::Filter::Executor.new(options)
59
+ result = exec.filters_allow?('msg', context)
60
+ assert_equal false, result, "Filter should NOT allow passage"
61
+ end
62
+
63
+ end
@@ -0,0 +1 @@
1
+ Dir.glob(File.join(File.dirname(__FILE__), '**/*.rb')).each {|f| require f }
@@ -0,0 +1,23 @@
1
+ # configure use of TraceExt
2
+ module Me
3
+ class My
4
+
5
+ def hello
6
+ puts "Hello cruel World!"
7
+ end
8
+
9
+ def hi_there
10
+ puts "Hello cruel World!"
11
+ end
12
+
13
+ def blip
14
+ puts "Blip!"
15
+ end
16
+
17
+ def blap
18
+ puts "Blap!"
19
+ end
20
+
21
+ end
22
+ end
23
+
@@ -0,0 +1,50 @@
1
+ Class_composite_filter_A = {
2
+ # id of composite rule set
3
+ :name => 'Template stuff',
4
+ :classes => [{
5
+ :names => ['My', /My/],
6
+ :method_rules => {
7
+ :include => [/by.*/, 'DRYMLBuilder'],
8
+ :exclude => ['Taglib'],
9
+ :default => :exclude
10
+ }
11
+ }]
12
+ }
13
+
14
+ Module_composite_filter_A = {
15
+ # id of composite rule set
16
+ :name => 'dryml_filter',
17
+ :modules => [{
18
+ :names => ['Hobo:Dryml', /Dryml/],
19
+ :class_rules => {
20
+ :include => [/Template.*/, 'DRYMLBuilder'],
21
+ :exclude => ['Taglib'],
22
+ :default => :include
23
+ },
24
+ :method_rules => {
25
+ :include => [/Template.*/, 'DRYMLBuilder'],
26
+ :exclude => ['Taglib'],
27
+ :default => :include
28
+ }
29
+ }]
30
+ }
31
+
32
+
33
+ # for specific instance_vars, match on values (after .to_s on var)
34
+ Var_composite_filter_A = {
35
+ :name => 'template_path',
36
+ :vars => [{
37
+ :name => 'template_path', :type => :string,
38
+ :var_rules => {
39
+ :include => [/.*\/taglib\/.*/],
40
+ :exclude => [/.*\/rapid_.*/]
41
+ }
42
+ },
43
+ {
44
+ :name => 'template_path',
45
+ :var_rules => {
46
+ :exclude => [/.*\/rapid_.*/],
47
+ :default => :include
48
+ }
49
+ }]
50
+ }