Skip to content

Commit 3443102

Browse files
author
Éric Lemoine
committed
Make QgsServerLogger testable and test it
1 parent 504657e commit 3443102

File tree

5 files changed

+133
-3
lines changed

5 files changed

+133
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/************************************************************************
2+
* This file has been generated automatically from *
3+
* *
4+
* src/server/qgsserverlogger.h *
5+
* *
6+
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
7+
************************************************************************/
8+
9+
10+
11+
12+
13+
14+
class QgsServerLogger : QgsMessageLogConsole
15+
{
16+
%Docstring
17+
Writes message log into server logfile
18+
19+
.. versionadded:: 2.8
20+
%End
21+
22+
%TypeHeaderCode
23+
#include "qgsserverlogger.h"
24+
%End
25+
public:
26+
27+
static QgsServerLogger *instance();
28+
%Docstring
29+
Gets the singleton instance
30+
%End
31+
32+
Qgis::MessageLevel logLevel() const;
33+
%Docstring
34+
Gets the current log level
35+
36+
:return: the log level
37+
38+
.. versionadded:: 3.0
39+
%End
40+
41+
void setLogLevel( Qgis::MessageLevel level );
42+
%Docstring
43+
Set the current log level
44+
45+
:param level: the log level
46+
47+
.. versionadded:: 3.0
48+
%End
49+
50+
void setLogFile( const QString &f );
51+
%Docstring
52+
Set the current log file
53+
%End
54+
55+
public slots:
56+
57+
void logMessage( const QString &message, const QString &tag, Qgis::MessageLevel level );
58+
%Docstring
59+
Log a message from the server context
60+
61+
:param message: the message
62+
:param tag: tag of the message
63+
:param level: log level of the message
64+
%End
65+
66+
protected:
67+
QgsServerLogger();
68+
69+
};
70+
71+
/************************************************************************
72+
* This file has been generated automatically from *
73+
* *
74+
* src/server/qgsserverlogger.h *
75+
* *
76+
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
77+
************************************************************************/

python/server/server_auto.sip

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
%Include auto_generated/qgsmapserviceexception.sip
44
%Include auto_generated/qgscapabilitiescache.sip
55
%Include auto_generated/qgsconfigcache.sip
6+
%Include auto_generated/qgsserverlogger.sip
67
%Include auto_generated/qgsserversettings.sip
78
%Include auto_generated/qgsserverparameters.sip
89
%Include auto_generated/qgsbufferserverrequest.sip

src/server/qgsserverlogger.h

+2-3
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,21 @@
1818
#ifndef QGSSERVERLOGGER_H
1919
#define QGSSERVERLOGGER_H
2020

21-
#define SIP_NO_FILE
22-
2321

2422
#include "qgsmessagelog.h"
2523

2624
#include <QFile>
2725
#include <QObject>
2826
#include <QString>
2927
#include <QTextStream>
28+
#include "qgis_server.h"
3029

3130
/**
3231
* \ingroup server
3332
* \brief Writes message log into server logfile
3433
* \since QGIS 2.8
3534
*/
36-
class QgsServerLogger: public QgsMessageLogConsole
35+
class SERVER_EXPORT QgsServerLogger : public QgsMessageLogConsole
3736
{
3837
Q_OBJECT
3938
public:

tests/src/python/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ ENDIF (ENABLE_ORACLETEST)
255255

256256
IF (WITH_SERVER)
257257
ADD_PYTHON_TEST(PyQgsServer test_qgsserver.py)
258+
ADD_PYTHON_TEST(PyQgsServerLogger test_qgsserverlogger.py)
258259
ADD_PYTHON_TEST(PyQgsServerPlugins test_qgsserver_plugins.py)
259260
ADD_PYTHON_TEST(PyQgsServerWMS test_qgsserver_wms.py)
260261
ADD_PYTHON_TEST(PyQgsServerWMSGetMap test_qgsserver_wms_getmap.py)
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# -*- coding: utf-8 -*-
2+
"""QGIS Unit tests for QgsServerLogger.
3+
"""
4+
__author__ = 'Eric Lemoine'
5+
__date__ = '11/09/2018'
6+
__copyright__ = 'Copyright 2018, The QGIS Project'
7+
__revision__ = '$Format:%H$'
8+
9+
import os
10+
11+
from qgis.testing import unittest
12+
from qgis.server import QgsServerLogger
13+
14+
from utilities import unitTestDataPath
15+
16+
17+
class TestQgsServerLogger(unittest.TestCase):
18+
19+
log_file = os.path.join(unitTestDataPath('qgis_server'), 'qgis_server_test.log')
20+
21+
@staticmethod
22+
def remove_file(filename):
23+
try:
24+
os.remove(filename)
25+
except FileNotFoundError:
26+
pass
27+
28+
def setUp(self):
29+
self.logger = QgsServerLogger.instance()
30+
self.logger.setLogLevel(0)
31+
self.logger.setLogFile(self.log_file)
32+
exists = os.access(self.log_file, os.R_OK)
33+
self.assertTrue(exists)
34+
self.remove_file(self.log_file)
35+
36+
def tearDown(self):
37+
self.remove_file(self.log_file)
38+
39+
def test_logging_no_log_file(self):
40+
self.logger.setLogFile('')
41+
exists = os.access(self.log_file, os.R_OK)
42+
self.assertFalse(exists)
43+
44+
def test_logging_log_file(self):
45+
self.logger.setLogFile(self.log_file)
46+
exists = os.access(self.log_file, os.R_OK)
47+
self.assertTrue(exists)
48+
49+
def test_logging_stderr(self):
50+
self.logger.setLogFile('stderr')
51+
exists = os.access(self.log_file, os.R_OK)
52+
self.assertFalse(exists)

0 commit comments

Comments
 (0)