[ovs-dev] [PATCH] tests: Don't log to syslog during tests.
Ben Pfaff
blp at ovn.org
Thu Aug 9 22:41:13 UTC 2018
Thanks. I folded that in and applied this to master.
Maybe some of your series is cleanups or improvements. If so, please
feel free to re-send those parts of it.
On Thu, Aug 09, 2018 at 05:02:29PM +0300, Ilya Maximets wrote:
> The patch is good.
>
> The following incremental needed to make it complete:
> ----
> diff --git a/python/ovs/vlog.py b/python/ovs/vlog.py
> index d7a84d8..7d416c3 100644
> --- a/python/ovs/vlog.py
> +++ b/python/ovs/vlog.py
> @@ -305,9 +305,11 @@ class Vlog(object):
> return
>
> logger = logging.getLogger('syslog')
> - # If there is no infrastructure to support python syslog, disable
> - # the logger to avoid repeated errors.
> - if not os.path.exists("/dev/log"):
> + # Disable the logger if there is no infrastructure to support python
> + # syslog (to avoid repeated errors) or if the "null" syslog method
> + # requested by environment.
> + if not os.path.exists("/dev/log") \
> + or os.environ.get('OVS_SYSLOG_METHOD') == "null":
> logger.disabled = True
> return
> ----
>
> With above change, tests leaves the crystal clear syslog.
>
> Beside that,
> Acked-by: Ilya Maximets <i.maximets at samsung.com>
>
> On 09.08.2018 02:04, Ben Pfaff wrote:
> > Until now, "make check" generated a huge amount of output to syslog. This
> > commit suppresses it.
> >
> > CC: Ilya Maximets <i.maximets at samsung.com>
> > Signed-off-by: Ben Pfaff <blp at ovn.org>
> > ---
> > NEWS | 2 ++
> > lib/automake.mk | 2 ++
> > lib/syslog-null.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> > lib/syslog-null.h | 22 ++++++++++++++++++++
> > lib/vlog.c | 12 +++++++++--
> > lib/vlog.man | 7 ++++++-
> > lib/vlog.xml | 11 +++++++++-
> > tests/atlocal.in | 4 ++++
> > 8 files changed, 116 insertions(+), 4 deletions(-)
> > create mode 100644 lib/syslog-null.c
> > create mode 100644 lib/syslog-null.h
> >
> > diff --git a/NEWS b/NEWS
> > index 7875f6673e34..ae21340e9046 100644
> > --- a/NEWS
> > +++ b/NEWS
> > @@ -1,5 +1,7 @@
> > Post-v2.10.0
> > ---------------------
> > + - The environment variable OVS_SYSLOG_METHOD, if set, is now used
> > + as the default syslog method.
> >
> >
> > v2.10.0 - xx xxx xxxx
> > diff --git a/lib/automake.mk b/lib/automake.mk
> > index fb43aa1413b2..63e9d72ac18a 100644
> > --- a/lib/automake.mk
> > +++ b/lib/automake.mk
> > @@ -280,6 +280,8 @@ lib_libopenvswitch_la_SOURCES = \
> > lib/syslog-direct.h \
> > lib/syslog-libc.c \
> > lib/syslog-libc.h \
> > + lib/syslog-null.c \
> > + lib/syslog-null.h \
> > lib/syslog-provider.h \
> > lib/table.c \
> > lib/table.h \
> > diff --git a/lib/syslog-null.c b/lib/syslog-null.c
> > new file mode 100644
> > index 000000000000..9dbd13911c21
> > --- /dev/null
> > +++ b/lib/syslog-null.c
> > @@ -0,0 +1,60 @@
> > +/*
> > + * Copyright (c) 2015, 2016 Nicira, Inc.
> > + *
> > + * Licensed under the Apache License, Version 2.0 (the "License");
> > + * you may not use this file except in compliance with the License.
> > + * You may obtain a copy of the License at:
> > + *
> > + * http://www.apache.org/licenses/LICENSE-2.0
> > + *
> > + * Unless required by applicable law or agreed to in writing, software
> > + * distributed under the License is distributed on an "AS IS" BASIS,
> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> > + * See the License for the specific language governing permissions and
> > + * limitations under the License.
> > + */
> > +#include "syslog-null.h"
> > +
> > +#include <config.h>
> > +
> > +#include "compiler.h"
> > +#include "syslog-provider.h"
> > +#include "util.h"
> > +
> > +static void syslog_null_open(struct syslogger *this, int facility);
> > +static void syslog_null_log(struct syslogger *this, int pri, const char *msg);
> > +
> > +static struct syslog_class syslog_null_class = {
> > + syslog_null_open,
> > + syslog_null_log,
> > +};
> > +
> > +struct syslog_null {
> > + struct syslogger parent;
> > +};
> > +
> > +/* This function creates object that delegate all logging to null's
> > + * syslog implementation. */
> > +struct syslogger *
> > +syslog_null_create(void)
> > +{
> > + struct syslog_null *this = xmalloc(sizeof *this);
> > +
> > + this->parent.class = &syslog_null_class;
> > + this->parent.prefix = "";
> > +
> > + return &this->parent;
> > +}
> > +
> > +static void
> > +syslog_null_open(struct syslogger *this OVS_UNUSED, int facility OVS_UNUSED)
> > +{
> > + /* Nothing to do. */
> > +}
> > +
> > +static void
> > +syslog_null_log(struct syslogger *this OVS_UNUSED, int pri OVS_UNUSED,
> > + const char *msg OVS_UNUSED)
> > +{
> > + /* Nothing to do. */
> > +}
> > diff --git a/lib/syslog-null.h b/lib/syslog-null.h
> > new file mode 100644
> > index 000000000000..0f7731dc4dcc
> > --- /dev/null
> > +++ b/lib/syslog-null.h
> > @@ -0,0 +1,22 @@
> > +/*
> > + * Copyright (c) 2015 Nicira, Inc.
> > + *
> > + * Licensed under the Apache License, Version 2.0 (the "License");
> > + * you may not use this file except in compliance with the License.
> > + * You may obtain a copy of the License at:
> > + *
> > + * http://www.apache.org/licenses/LICENSE-2.0
> > + *
> > + * Unless required by applicable law or agreed to in writing, software
> > + * distributed under the License is distributed on an "AS IS" BASIS,
> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> > + * See the License for the specific language governing permissions and
> > + * limitations under the License.
> > + */
> > +
> > +#ifndef SYSLOG_NULL_H
> > +#define SYSLOG_NULL_H 1
> > +
> > +struct syslogger *syslog_null_create(void);
> > +
> > +#endif /* syslog-null.h */
> > diff --git a/lib/vlog.c b/lib/vlog.c
> > index bf5fd88ba9e8..01cfdc5d3d2d 100644
> > --- a/lib/vlog.c
> > +++ b/lib/vlog.c
> > @@ -39,6 +39,7 @@
> > #include "svec.h"
> > #include "syslog-direct.h"
> > #include "syslog-libc.h"
> > +#include "syslog-null.h"
> > #include "syslog-provider.h"
> > #include "timeval.h"
> > #include "unixctl.h"
> > @@ -584,7 +585,9 @@ vlog_set_syslog_method(const char *method)
> > return;
> > }
> >
> > - if (!strcmp(method, "libc")) {
> > + if (!strcmp(method, "null")) {
> > + syslogger = syslog_null_create();
> > + } else if (!strcmp(method, "libc")) {
> > syslogger = syslog_libc_create();
> > } else if (!strncmp(method, "udp:", 4) || !strncmp(method, "unix:", 5)) {
> > syslogger = syslog_direct_create(method);
> > @@ -778,7 +781,12 @@ vlog_init(void)
> > * log anything before calling ovsthread_once_done() will deadlock. */
> > atomic_read_explicit(&log_facility, &facility, memory_order_relaxed);
> > if (!syslogger) {
> > - syslogger = syslog_libc_create();
> > + char *env = getenv("OVS_SYSLOG_METHOD");
> > + if (env && env[0]) {
> > + vlog_set_syslog_method(env);
> > + } else {
> > + syslogger = syslog_libc_create();
> > + }
> > }
> > syslogger->class->openlog(syslogger, facility ? facility : LOG_DAEMON);
> > ovsthread_once_done(&once);
> > diff --git a/lib/vlog.man b/lib/vlog.man
> > index 674528d79aae..bad80e3d2771 100644
> > --- a/lib/vlog.man
> > +++ b/lib/vlog.man
> > @@ -83,7 +83,7 @@ Specify \fImethod\fR how syslog messages should be sent to syslog daemon.
> > Following forms are supported:
> > .RS
> > .IP \(bu
> > -\fBlibc\fR, use libc \fBsyslog()\fR function. This is the default behavior.
> > +\fBlibc\fR, use libc \fBsyslog()\fR function.
> > Downside of using this options is that libc adds fixed prefix to every
> > message before it is actually sent to the syslog daemon over \fB/dev/log\fR
> > UNIX domain socket.
> > @@ -103,4 +103,9 @@ to listen on the specified UDP port, accidental iptables rules could be
> > interfering with local syslog traffic and there are some security
> > considerations that apply to UDP sockets, but do not apply to UNIX domain
> > sockets.
> > +.IP \(bu
> > +\fBnull\fR, discards all messages logged to syslog.
> > .RE
> > +.IP
> > +The default is taken from the \fBOVS_SYSLOG_METHOD\fR environment
> > +variable; if it is unset, the default is \fBlibc\fR.
> > diff --git a/lib/vlog.xml b/lib/vlog.xml
> > index 70f88b3a6652..c3afc0492314 100644
> > --- a/lib/vlog.xml
> > +++ b/lib/vlog.xml
> > @@ -114,7 +114,7 @@
> > <ul>
> > <li>
> > <code>libc</code>, to use the libc <code>syslog()</code> function.
> > - This is the default behavior. Downside of using this options is that
> > + Downside of using this options is that
> > libc adds fixed prefix to every message before it is actually sent to
> > the syslog daemon over <code>/dev/log</code> UNIX domain socket.
> > </li>
> > @@ -139,6 +139,15 @@
> > local syslog traffic and there are some security considerations that
> > apply to UDP sockets, but do not apply to UNIX domain sockets.
> > </li>
> > +
> > + <li>
> > + <code>null</code>, to discard all messages logged to syslog.
> > + </li>
> > </ul>
> > +
> > + <p>
> > + The default is taken from the <code>OVS_SYSLOG_METHOD</code> environment
> > + variable; if it is unset, the default is <code>libc</code>.
> > + </p>
> > </dd>
> > </dl>
> > diff --git a/tests/atlocal.in b/tests/atlocal.in
> > index 0f4a6ca33758..a86de8bc1b90 100644
> > --- a/tests/atlocal.in
> > +++ b/tests/atlocal.in
> > @@ -212,3 +212,7 @@ unset NO_PROXY
> > # Avoid OVN environment variables leaking in from external environment.
> > unset OVN_NB_DB
> > unset OVN_SB_DB
> > +
> > +# Prevent logging to syslog during tests.
> > +OVS_SYSLOG_METHOD=null
> > +export OVS_SYSLOG_METHOD
> >
More information about the dev
mailing list