11require "test_helper"
22require "fluent/plugin/out_remote_syslog"
3+ require "fluent/plugin/in_syslog"
4+ require 'fluent/test/driver/input'
35
46class RemoteSyslogOutputTest < Test ::Unit ::TestCase
57 def setup
68 Fluent ::Test . setup
79 end
810
9- def create_driver ( conf = CONFIG )
11+ def create_driver_out_syslog ( conf )
1012 Fluent ::Test ::Driver ::Output . new ( Fluent ::Plugin ::RemoteSyslogOutput ) . configure ( conf )
1113 end
1214
15+ def create_driver_in_syslog ( conf )
16+ Fluent ::Test ::Driver ::Input . new ( Fluent ::Plugin ::SyslogInput ) . configure ( conf )
17+ end
18+
1319 def test_configure
14- d = create_driver %[
20+ d = create_driver_out_syslog %[
1521 @type remote_syslog
1622 hostname foo.com
1723 host example.com
@@ -28,13 +34,16 @@ def test_configure
2834 assert_equal "debug" , d . instance . instance_variable_get ( :@severity )
2935 end
3036
31- def test_write
32- d = create_driver %[
37+ data ( "debug" , { severity : "debug" } )
38+ data ( "warn" , { severity : "warn" } )
39+ data ( "warning" , { severity : "warning" , expected_severity : "warn" } )
40+ def test_write_udp ( data )
41+ out_driver = create_driver_out_syslog %[
3342 @type remote_syslog
3443 hostname foo.com
35- host example.com
44+ host localhost
3645 port 5566
37- severity debug
46+ severity #{ data [ :severity ] }
3847 program minitest
3948
4049 <format>
@@ -43,22 +52,41 @@ def test_write
4352 </format>
4453 ]
4554
46- mock . proxy ( RemoteSyslogSender ::UdpSender ) . new ( "example.com" , 5566 , whinyerrors : true , program : "minitest" , packet_size : 1024 ) do |sender |
47- mock . proxy ( sender ) . transmit ( "foo" , facility : "user" , severity : "debug" , program : "minitest" , hostname : "foo.com" )
48- end
55+ in_driver = create_driver_in_syslog %[
56+ @type syslog
57+ tag tag
58+ port 5566
59+ bind 127.0.0.1
60+ ]
4961
50- d . run do
51- d . feed ( "tag" , Fluent ::EventTime . now , { "message" => "foo" } )
62+ in_driver . run ( expect_records : 1 , timeout : 5 ) do
63+ out_driver . run do
64+ out_driver . feed ( "tag" , Fluent ::EventTime . now , { "message" => "This is a test message." } )
65+ end
5266 end
67+
68+ assert_equal 1 , in_driver . events . length
69+
70+ tag , _ , msg = in_driver . events [ 0 ]
71+
72+ expected_facility = "user"
73+ expected_severity = data [ :expected_severity ] || data [ :severity ]
74+ assert_equal ( "tag.#{ expected_facility } .#{ expected_severity } " , tag )
75+ assert_equal ( "foo.com" , msg [ "host" ] )
76+ assert_equal ( "minitest" , msg [ "ident" ] )
77+ assert_equal ( "This is a test message." , msg [ "message" ] )
5378 end
5479
55- def test_write_tcp
56- d = create_driver %[
80+ data ( "debug" , { severity : "debug" } )
81+ data ( "warn" , { severity : "warn" } )
82+ data ( "warning" , { severity : "warning" , expected_severity : "warn" } )
83+ def test_write_tcp ( data )
84+ out_driver = create_driver_out_syslog %[
5785 @type remote_syslog
5886 hostname foo.com
59- host example.com
87+ host localhost
6088 port 5566
61- severity debug
89+ severity #{ data [ :severity ] }
6290 program minitest
6391
6492 protocol tcp
@@ -69,17 +97,30 @@ def test_write_tcp
6997 </format>
7098 ]
7199
72- any_instance_of ( RemoteSyslogSender ::TcpSender ) do |klass |
73- mock ( klass ) . connect
74- end
100+ in_driver = create_driver_in_syslog %[
101+ @type syslog
102+ tag tag
103+ port 5566
104+ bind 127.0.0.1
105+ protocol_type tcp
106+ ]
75107
76- mock . proxy ( RemoteSyslogSender ::TcpSender ) . new ( "example.com" , 5566 , whinyerrors : true , program : "minitest" , tls : false , packet_size : 1024 , timeout : nil , timeout_exception : false , keep_alive : false , keep_alive_cnt : nil , keep_alive_idle : nil , keep_alive_intvl : nil ) do |sender |
77- mock ( sender ) . transmit ( "foo" , facility : "user" , severity : "debug" , program : "minitest" , hostname : "foo.com" )
108+ in_driver . run ( expect_records : 1 , timeout : 5 ) do
109+ out_driver . run do
110+ out_driver . feed ( "tag" , Fluent ::EventTime . now , { "message" => "This is a test message." } )
111+ end
78112 end
79113
80- d . run do
81- d . feed ( "tag" , Fluent ::EventTime . now , { "message" => "foo" } )
82- end
114+ assert_equal 1 , in_driver . events . length
115+
116+ tag , _ , msg = in_driver . events [ 0 ]
117+
118+ expected_facility = "user"
119+ expected_severity = data [ :expected_severity ] || data [ :severity ]
120+ assert_equal ( "tag.#{ expected_facility } .#{ expected_severity } " , tag )
121+ assert_equal ( "foo.com" , msg [ "host" ] )
122+ assert_equal ( "minitest" , msg [ "ident" ] )
123+ assert_equal ( "This is a test message." , msg [ "message" ] )
83124 end
84125
85126 data ( "emerg" , { in : "emerg" , out : "emerg" } )
0 commit comments