Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

root/tools/gauge/test/base_test.rb

Revision 2461, 2.0 kB (checked in by minam, 3 years ago)

gauge: more refactoring. log reader

Line 
1 require "#{File.dirname(__FILE__)}/test_setup"
2 require 'gauge/base'
3 require 'stringio'
4
5 class BaseTest < Test::Unit::TestCase
6   class MockBase < Gauge::Base
7     class <<self
8       def reset!
9         @@config = {}
10         @@hooks = Hash.new { |h,k| h[k] = {} }
11         Thread.current[:gauge_logger] = nil
12       end
13     end
14   end
15
16   def setup
17     MockBase.reset!
18     @log = StringIO.new
19     MockBase[:application] = "test"
20     MockBase[:directory] = @log
21   end
22
23   def teardown
24     MockBase.reset!
25   end
26
27   def test_config
28     MockBase.config[:one] = "two"
29     assert_equal "two", MockBase.config[:one]
30
31     MockBase[:three] = "four"
32     assert_equal "four", MockBase[:three]
33   end
34
35   def test_logger_per_thread
36     log1 = log2 = log3 = nil
37     t1 = Thread.new { log1 = MockBase.logger; log2 = MockBase.logger }
38     t2 = Thread.new { log3 = MockBase.logger }
39     t1.join
40     t2.join
41     assert_same log1, log2
42     assert_not_same log1, log3
43   end
44
45   def test_log_hook_with_no_hooks
46     MockBase.log(:test)
47     assert @log.string.empty?
48   end
49
50   def test_log_hook_with_no_data
51     MockBase.register(:test, :demo) do |name, data|
52       assert_equal(:demo, name)
53       ""
54     end
55
56     now = Time.now
57     MockBase.log(:test)
58     io = StringIO.new(@log.string)
59     length = io.read(4).unpack("N").first
60     assert_equal 17, length
61     time, pid, nlen = io.read(13).unpack("GNC")
62     assert_equal now.to_i, time.to_i
63     assert_equal $$, pid
64     assert_equal 4, nlen
65     assert_equal "demo", io.read(4)
66     assert io.eof?
67   end
68
69   def test_log_hook_with_data
70     MockBase.register(:test, :demo) { |name, data| "\005hello\001\002" }
71     now = Time.now
72     MockBase.log(:test)
73     io = StringIO.new(@log.string)
74     length = io.read(4).unpack("N").first
75     assert_equal 25, length
76     time, pid, nlen = io.read(13).unpack("GNC")
77     assert_equal now.to_i, time.to_i
78     assert_equal $$, pid
79     assert_equal 4, nlen
80     assert_equal "demo", io.read(4)
81     assert_equal "\005hello\001\002", io.read
82     assert io.eof?
83   end
84
85 end
Note: See TracBrowser for help on using the browser.