analogger 0.5.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.
@@ -0,0 +1,151 @@
1
+ require 'test/unit'
2
+ require 'rbconfig'
3
+ require 'logger'
4
+ require 'external/test_support'
5
+ SwiftcoreTestSupport.set_src_dir
6
+ require 'swiftcore/Analogger/Client'
7
+
8
+ class TC_Analogger < Test::Unit::TestCase
9
+
10
+ @@testdir = SwiftcoreTestSupport.test_dir(__FILE__)
11
+
12
+ def setup
13
+ assert_nothing_raised("setup failed") do
14
+ Dir.chdir(@@testdir)
15
+ SwiftcoreTestSupport.announce(:analogger,"Analogger Tests")
16
+
17
+ @rubybin = File.join(::Config::CONFIG['bindir'],::Config::CONFIG['ruby_install_name'])
18
+ @rubybin << ::Config::CONFIG['EXEEXT']
19
+ end
20
+ end
21
+
22
+ def test_analogger
23
+ @analogger_pid = SwiftcoreTestSupport::create_process(:dir => '.',:cmd => ["#{@rubybin} ../bin/analogger -c analogger.cnf"])
24
+ sleep 1
25
+ logger = nil
26
+
27
+ pid = File.read('log/analogger.pid').chomp
28
+
29
+ assert_equal(@analogger_pid.to_s,pid)
30
+
31
+ puts "Delivering test messages."
32
+
33
+ levels = ['debug','info','warn']
34
+
35
+ assert_nothing_raised { logger = Swiftcore::Analogger::Client.new('idontmatch','127.0.0.1','47990') }
36
+
37
+ levels.each do |level|
38
+ assert_nothing_raised { logger.log(level,'abc123') }
39
+ end
40
+
41
+ levels = ['a','b','c']
42
+
43
+ assert_nothing_raised { logger = Swiftcore::Analogger::Client.new('a','127.0.0.1','47990') }
44
+
45
+ levels.each do |level|
46
+ assert_nothing_raised { logger.log(level,'abc123') }
47
+ end
48
+
49
+ assert_nothing_raised { logger = Swiftcore::Analogger::Client.new('b','127.0.0.1','47990') }
50
+
51
+ levels.each do |level|
52
+ assert_nothing_raised { logger.log(level,'abc123') }
53
+ end
54
+
55
+ levels = ['info','warn','fatal']
56
+
57
+ assert_nothing_raised { logger = Swiftcore::Analogger::Client.new('c','127.0.0.1','47990') }
58
+
59
+ levels.each do |level|
60
+ assert_nothing_raised { logger.log(level,'abc123') }
61
+ end
62
+
63
+ levels = ['info','junk']
64
+
65
+ assert_nothing_raised { logger = Swiftcore::Analogger::Client.new('d','127.0.0.1','47990') }
66
+
67
+ levels.each do |level|
68
+ assert_nothing_raised { logger.log(level,'abc123') }
69
+ end
70
+
71
+ assert_nothing_raised { logger = Swiftcore::Analogger::Client.new('stderr','127.0.0.1','47990') }
72
+
73
+ 5.times {|x| assert_nothing_raised { logger.log('info',"Logging to STDERR ##{x}") }}
74
+
75
+ puts "Waiting for log sync.\n\n"
76
+ sleep 2
77
+
78
+ puts "\nChecking results.\n\n"
79
+ logfile = ''
80
+ assert_nothing_raised { logfile = File.read('log/default.log') }
81
+ assert(logfile =~ /idontmatch|debug|abc123/,"Default log doesn't appear to have the expected message: idontmatch|debug|abc123")
82
+ assert(logfile =~ /idontmatch|debug|Last message repeated 2 times/,"Default log doesn't appear to have the expected message: idontmatch|debug|Last message repeated 2 times")
83
+
84
+ logfile = ''
85
+ assert_nothing_raised { logfile = File.read('log/a.log') }
86
+ assert(logfile =~ /a|a|abc123/,"Log doesn't appear to have the expected message: a|a|abc123")
87
+ assert(logfile =~ /a|b|abc123/,"Log doesn't appear to have the expected message: a|b|abc123")
88
+ assert(logfile =~ /a|c|abc123/,"Log doesn't appear to have the expected message: a|c|abc123")
89
+ assert(logfile =~ /b|a|abc123/,"Log doesn't appear to have the expected message: b|a|abc123")
90
+ assert(logfile =~ /b|b|abc123/,"Log doesn't appear to have the expected message: b|b|abc123")
91
+ assert(logfile =~ /b|c|abc123/,"Log doesn't appear to have the expected message: b|c|abc123")
92
+
93
+ logfile = ''
94
+ assert_nothing_raised { logfile = File.read('log/c.log') }
95
+ assert(logfile =~ /c|info|abc123/,"Log doesn't appear to have the expected message: c|info|abc123")
96
+ assert(logfile =~ /c|warn|abc123/,"Log doesn't appear to have the expected message: c|warn|abc123")
97
+ assert(logfile =~ /c|fatal|abc123/,"Log doesn't appear to have the expected message: c|fatal|abc123")
98
+
99
+ logfile = ''
100
+ assert_nothing_raised { logfile = File.read('log/d.log') }
101
+ assert(logfile =~ /d|info|abc123/,"Log doesn't appear to have the expected message: d|info|abc123")
102
+ assert(logfile !~ /junk/,"Log file has a message in it that should have been dropped.")
103
+ teardown
104
+
105
+ require 'benchmark'
106
+
107
+ speedtest('short messages','0123456789')
108
+ speedtest('larger messages','0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789')
109
+ logger_speedtest('short messages','0123456789')
110
+ logger_speedtest('larger messages','0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789')
111
+ end
112
+
113
+ def speedtest(label,message)
114
+ puts "Analogger Speedtest -- #{label}"
115
+ @analogger_pid = SwiftcoreTestSupport::create_process(:dir => '.',:cmd => ["#{@rubybin} ../bin/analogger -c analogger2.cnf"])
116
+ logger = nil
117
+ assert_nothing_raised { logger = Swiftcore::Analogger::Client.new('speed','127.0.0.1','47990') }
118
+ lvl = 'info'
119
+ puts "Testing 100000 messages of #{message.length} bytes each."
120
+ start = total = nil
121
+ Benchmark.bm do |bm|
122
+ bm.report { start = Time.now; 100000.times { logger.log(lvl,message) }; total = Time.now - start}
123
+ end
124
+ total = Time.now - start
125
+ rate = 100000 / total
126
+ puts "\nMessage rate: #{rate}/second (#{total})\n\n"
127
+ teardown
128
+ end
129
+
130
+ def logger_speedtest(label,message)
131
+ puts "Ruby Logger Speedtest -- #{label}"
132
+ puts "Testing 100000 messages of #{message.length} bytes each."
133
+ logger = Logger.new('log/ra')
134
+ start = total = nil
135
+ Benchmark.bm do |bm|
136
+ bm.report { start = Time.now; 100000.times { logger.info(message) }; total = Time.now - start}
137
+ end
138
+ rate = 100000 / total
139
+ puts "\nMessage rate: #{rate}/second (#{total})\n\n"
140
+ logger.close
141
+ File.delete('log/ra')
142
+ end
143
+
144
+ def teardown
145
+ Process.kill "SIGTERM",@analogger_pid
146
+ Process.wait @analogger_pid
147
+ Dir['log/*'].each {|fn| File.delete(fn)}
148
+ rescue
149
+ end
150
+
151
+ end
@@ -0,0 +1,22 @@
1
+ port: 47990
2
+ host: 127.0.0.1
3
+ default_log: log/default.log
4
+ daemonize: false
5
+ syncinterval: 1
6
+ pidfile: log/analogger.pid
7
+ logs:
8
+ - service:
9
+ - a
10
+ - b
11
+ logfile: log/a.log
12
+ cull: true
13
+ levels: a,b,c,d
14
+ - service: c
15
+ logfile: log/c.log
16
+ cull: true
17
+ - service: d
18
+ logfile: log/d.log
19
+ cull: false
20
+ - service: stderr
21
+ logfile: STDERR
22
+ cull: true
@@ -0,0 +1,9 @@
1
+ port: 47990
2
+ host: 127.0.0.1
3
+ default_log: log/default.log
4
+ daemonize: false
5
+ syncinterval: 15
6
+ logs:
7
+ - service: speed
8
+ logfile: log/speed.log
9
+ cull: true
@@ -0,0 +1,15 @@
1
+ require 'test/unit'
2
+ # require 'iowa/MODULE_NAME'
3
+
4
+ class TC_MODULE_NAME < Test::Unit::TestCase
5
+ # init instance vars
6
+
7
+ def setup
8
+ assert_nothing_raised("setup failed") do
9
+ # do setup tasks
10
+ end
11
+ end
12
+
13
+ # Tests go here.
14
+
15
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.2
3
+ specification_version: 1
4
+ name: analogger
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.5.0
7
+ date: 2007-03-31 00:00:00 +02:00
8
+ summary: A fast asynchronous logging service and client for Ruby.
9
+ require_paths:
10
+ - src
11
+ email: wyhaines@gmail.com
12
+ homepage: http://analogger.swiftcore.org/
13
+ rubyforge_project: analogger
14
+ description: ""
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Kirk Haines
31
+ files:
32
+ - bin
33
+ - external
34
+ - src
35
+ - test
36
+ - doc
37
+ - setup.rb
38
+ - INSTALL
39
+ - README
40
+ - analogger.gemspec
41
+ - bin/analogger
42
+ - external/test_support.rb
43
+ - external/package.rb
44
+ - src/swiftcore
45
+ - src/swiftcore/Analogger
46
+ - src/swiftcore/Analogger.rb
47
+ - src/swiftcore/Analogger/Client.rb
48
+ - test/log
49
+ - test/TC_Analogger.rb
50
+ - test/tc_template.rb
51
+ - test/analogger.cnf
52
+ - test/analogger2.cnf
53
+ test_files:
54
+ - test/TC_Analogger.rb
55
+ rdoc_options:
56
+ - --title
57
+ - Swiftcore::Analogger
58
+ - --main
59
+ - README
60
+ - --line-numbers
61
+ extra_rdoc_files:
62
+ - README
63
+ executables:
64
+ - analogger
65
+ extensions: []
66
+
67
+ requirements:
68
+ - Eventmachine 0.7.0 or higher.
69
+ dependencies:
70
+ - !ruby/object:Gem::Dependency
71
+ name: eventmachine
72
+ version_requirement:
73
+ version_requirements: !ruby/object:Gem::Version::Requirement
74
+ requirements:
75
+ - - ">"
76
+ - !ruby/object:Gem::Version
77
+ version: 0.0.0
78
+ version: