~ubuntu-branches/ubuntu/utopic/syslog-ng/utopic

« back to all changes in this revision

Viewing changes to lib/logproto/tests/test-indented-multiline-server.c

  • Committer: Package Import Robot
  • Author(s): Gergely Nagy, Gergely Nagy
  • Date: 2013-11-04 15:27:37 UTC
  • mfrom: (1.3.12)
  • Revision ID: package-import@ubuntu.com-20131104152737-mqh6eqtna2xk97jq
Tags: 3.5.1-1
[ Gergely Nagy <algernon@madhouse-project.org> ]
* New upstream release.
  + Support auto-loading modules (Closes: #650814)
  + The SMTP module is available in syslog-ng-mod-smtp (Closes: #722746)
  + New modules: amqp, geoip, stomp, redis and smtp.
  + Multi-line input support (indented multiline and regexp-based)
  + Template type hinting for the MongoDB destination and $(format-json)
  + Support for unit suffixes in the configuration file
  + New filters, template functions and other miscellaneous changes
* New (team) maintainer, Laszlo Boszormenyi, Attila Szalay and myself
  added to Uploaders.
* Ship /var/lib/syslog-ng in the syslog-ng-core package, instead of
  creating it in the init script. Thanks Michael Biebl
  <biebl@debian.org> for the report & assistance. (Closes: #699942, #719910)
* Use dh-systemd for proper systemd-related maintainer scripts. Based on
  a patch by Michael Biebl <biebl@debian.org>. (Closes: #713982,
  #690067)
* Do not wait for syslog-ng to settle down during installation / update.
  This also fixes installing via debootstrap and a fake
  start-stop-daemon. (Closes: #714254)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "mock-transport.h"
 
2
#include "proto_lib.h"
 
3
#include "msg_parse_lib.h"
 
4
#include "logproto/logproto-indented-multiline-server.h"
 
5
 
 
6
/****************************************************************************************
 
7
 * LogProtoIMultiLineServer
 
8
 ****************************************************************************************/
 
9
 
 
10
static void
 
11
test_proper_multiline(gboolean input_is_stream)
 
12
{
 
13
  LogProtoServer *proto;
 
14
 
 
15
  proto_server_options.max_msg_size = 32;
 
16
 
 
17
  proto = log_proto_indented_multiline_server_new(
 
18
            /* 32 bytes max line length */
 
19
            (input_is_stream ? log_transport_mock_stream_new : log_transport_mock_records_new)(
 
20
              "0\n"
 
21
              " 1=2\n"
 
22
              " 3=4\n"
 
23
              "newline\n", -1,
 
24
              LTM_PADDING,
 
25
              LTM_EOF),
 
26
            get_inited_proto_server_options());
 
27
 
 
28
  assert_proto_server_fetch(proto, "0\n"
 
29
                                   " 1=2\n"
 
30
                                   " 3=4", -1);
 
31
 
 
32
  log_proto_server_free(proto);
 
33
}
 
34
 
 
35
static void
 
36
test_line_without_continuation(gboolean input_is_stream)
 
37
{
 
38
  LogProtoServer *proto;
 
39
 
 
40
  proto_server_options.max_msg_size = 32;
 
41
 
 
42
  proto = log_proto_indented_multiline_server_new(
 
43
            /* 32 bytes max line length */
 
44
            (input_is_stream ? log_transport_mock_stream_new : log_transport_mock_records_new)
 
45
            (
 
46
             "01234567\n", -1,
 
47
             "01234567\n", -1,
 
48
             "newline\n", -1,
 
49
             LTM_PADDING,
 
50
             LTM_EOF),
 
51
            get_inited_proto_server_options());
 
52
 
 
53
  assert_proto_server_fetch(proto, "01234567", -1);
 
54
  assert_proto_server_fetch(proto, "01234567", -1);
 
55
 
 
56
  log_proto_server_free(proto);
 
57
}
 
58
 
 
59
static void
 
60
test_input_starts_with_continuation(gboolean input_is_stream)
 
61
{
 
62
  LogProtoServer *proto;
 
63
 
 
64
  proto_server_options.max_msg_size = 32;
 
65
 
 
66
  proto = log_proto_indented_multiline_server_new(
 
67
            /* 32 bytes max line length */
 
68
            (input_is_stream ? log_transport_mock_stream_new : log_transport_mock_records_new)
 
69
            (
 
70
             " 01234567\n", -1,
 
71
             "01234567\n", -1,
 
72
             "newline\n", -1,
 
73
             LTM_PADDING,
 
74
             LTM_EOF),
 
75
            get_inited_proto_server_options());
 
76
 
 
77
  assert_proto_server_fetch(proto, " 01234567", -1);
 
78
  assert_proto_server_fetch(proto, "01234567", -1);
 
79
 
 
80
  log_proto_server_free(proto);
 
81
}
 
82
 
 
83
static void
 
84
test_multiline_at_eof(gboolean input_is_stream)
 
85
{
 
86
  LogProtoServer *proto;
 
87
 
 
88
  proto_server_options.max_msg_size = 32;
 
89
 
 
90
  proto = log_proto_indented_multiline_server_new(
 
91
            /* 32 bytes max line length */
 
92
            (input_is_stream ? log_transport_mock_stream_new : log_transport_mock_records_new)
 
93
            (
 
94
             "01234567\n", -1,
 
95
             " 01234567\n", -1,
 
96
             " end\n", -1,
 
97
             LTM_EOF),
 
98
            get_inited_proto_server_options());
 
99
 
 
100
  assert_proto_server_fetch(proto, "01234567\n"
 
101
                                   " 01234567\n"
 
102
                                   " end", -1);
 
103
  assert_proto_server_fetch_failure(proto, LPS_EOF, NULL);
 
104
 
 
105
  log_proto_server_free(proto);
 
106
}
 
107
 
 
108
void
 
109
test_log_proto_indented_multiline_server(void)
 
110
{
 
111
  PROTO_TESTCASE(test_proper_multiline, FALSE);
 
112
  PROTO_TESTCASE(test_proper_multiline, TRUE);
 
113
  PROTO_TESTCASE(test_line_without_continuation, FALSE);
 
114
  PROTO_TESTCASE(test_input_starts_with_continuation, TRUE);
 
115
  PROTO_TESTCASE(test_multiline_at_eof, FALSE);
 
116
  PROTO_TESTCASE(test_multiline_at_eof, TRUE);
 
117
}