1
1
require "test_helper"
2
2
require "fluent/plugin/out_remote_syslog"
3
+ require "fluent/plugin/in_syslog"
4
+ require 'fluent/test/driver/input'
3
5
4
6
class RemoteSyslogOutputTest < Test ::Unit ::TestCase
5
7
def setup
6
8
Fluent ::Test . setup
7
9
end
8
10
9
- def create_driver ( conf = CONFIG )
11
+ def create_driver_out_syslog ( conf )
10
12
Fluent ::Test ::Driver ::Output . new ( Fluent ::Plugin ::RemoteSyslogOutput ) . configure ( conf )
11
13
end
12
14
15
+ def create_driver_in_syslog ( conf )
16
+ Fluent ::Test ::Driver ::Input . new ( Fluent ::Plugin ::SyslogInput ) . configure ( conf )
17
+ end
18
+
13
19
def test_configure
14
- d = create_driver %[
20
+ d = create_driver_out_syslog %[
15
21
@type remote_syslog
16
22
hostname foo.com
17
23
host example.com
@@ -28,13 +34,16 @@ def test_configure
28
34
assert_equal "debug" , d . instance . instance_variable_get ( :@severity )
29
35
end
30
36
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 %[
33
42
@type remote_syslog
34
43
hostname foo.com
35
- host example.com
44
+ host localhost
36
45
port 5566
37
- severity debug
46
+ severity #{ data [ :severity ] }
38
47
program minitest
39
48
40
49
<format>
@@ -43,22 +52,41 @@ def test_write
43
52
</format>
44
53
]
45
54
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 localhost
60
+ ]
49
61
50
- d . run do
51
- d . feed ( "tag" , Fluent ::EventTime . now , { "message" => "foo" } )
62
+ in_driver . run ( expect_records : 1 , timeout : 10 ) do
63
+ out_driver . run do
64
+ out_driver . feed ( "tag" , Fluent ::EventTime . now , { "message" => "This is a test message." } )
65
+ end
52
66
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" ] )
53
78
end
54
79
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 %[
57
85
@type remote_syslog
58
86
hostname foo.com
59
- host example.com
60
- port 5566
61
- severity debug
87
+ host localhost
88
+ port 5567
89
+ severity #{ data [ :severity ] }
62
90
program minitest
63
91
64
92
protocol tcp
@@ -69,17 +97,30 @@ def test_write_tcp
69
97
</format>
70
98
]
71
99
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 5567
104
+ bind localhost
105
+ protocol_type tcp
106
+ ]
75
107
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 : 10 ) do
109
+ out_driver . run do
110
+ out_driver . feed ( "tag" , Fluent ::EventTime . now , { "message" => "This is a test message." } )
111
+ end
78
112
end
79
113
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" ] )
83
124
end
84
125
85
126
data ( "emerg" , { in : "emerg" , out : "emerg" } )
0 commit comments