diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 60e326c..6f9d5ef 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,30 +3,75 @@ stages:
- build
- test
+# To clone also submodules
+variables:
+ GIT_SUBMODULE_STRATEGY: recursive
+
+
# ########
# Build
##########
-build: # name of task
- stage: build # in what stage it will run ( 1. build then test etc )
- tags: # Tags are used to choose correct gitlab-runner
- - hw # spaceti-runner server has running runners and one has tag 'hw'
- script: # run in bash
- - mkdir -p build
+build:
+ stage: build
+ tags:
+ - shell
+ script:
+ - mkdir -p build
- cd build
- qmake ../colnod-connector.pro
- - make -j8
+ - make -j4
cache:
paths:
- - build/
-
+ - build # this path will be cached for next stages
# ########
# Test
##########
-test: # name of task
- stage: test # in what stage it will run ( 1. build then test etc )
- tags: # Tags are used to choose correct gitlab-runner
- - hw # spaceti-runner server has running runners and one has tag 'hw'
- script: # run in bash
+test:
+ stage: test
+ tags:
+ - shell
+ script:
- cd build
- make check test
+
+# memory leak check for unittest
+valgrind:
+ stage: test
+ tags:
+ - shell
+ script:
+ - cd build
+ - valgrind make check test
+
+# Quality of code
+cppcheck:
+ stage: test
+ tags:
+ - shell
+ #allow_failure: true # Probably needed to allow failure
+ script:
+ - server-sdk/scripts/cppcheck.sh
+
+# Common checks ( Line endings )
+lineendings:
+ stage: test
+ tags:
+ - shell
+ script:
+ - server-sdk/scripts/check.sh
+
+codecoverage:
+ stage: test
+ tags:
+ - shell
+ script:
+ - server-sdk/scripts/codecoverage.sh
+ coverage: '/^\s+functions..:\s+(\d+\.\d+%).+$/'
+
+doc:
+ stage: test
+ tags:
+ - shell
+ script:
+ - server-sdk/scripts/doc.sh clean # 'clean' better clean before generating documentation
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..33c01ac
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "server-sdk"]
+ path = server-sdk
+ url = ../../common/server-sdk
diff --git a/colnod-connector.pro b/colnod-connector.pro
index 41bdb50..1d3a892 100644
--- a/colnod-connector.pro
+++ b/colnod-connector.pro
@@ -1,5 +1,13 @@
TEMPLATE = subdirs
+CONFIG += ordered
+
SUBDIRS += \
+ server-sdk/src/serversdk/serversdk.pro \
src/app \
test
+
+OTHER_FILES += \
+ doc/* \
+ .gitignore \
+ .gitlab-ci.yml \
diff --git a/doc/Doxyfile-mcss b/doc/Doxyfile-mcss
new file mode 100644
index 0000000..0ef7058
--- /dev/null
+++ b/doc/Doxyfile-mcss
@@ -0,0 +1,43 @@
+@INCLUDE = ../server-sdk/doc/Doxyfile-init
+# Output settings
+GENERATE_HTML = NO
+GENERATE_XML = YES
+GENERATE_LATEX = NO
+XML_PROGRAMLISTING = YES
+
+# Project settings
+PROJECT_NAME = example-app
+INPUT = ../src \
+ pages \
+ ../readme.md \
+FILE_PATTERNS += *.md
+USE_MDFILE_AS_MAINPAGE = ../readme.md
+OUTPUT_DIRECTORY = ../build/doc/
+FULL_PATH_NAMES = NO
+
+# Attributes settings
+RECURSIVE = YES
+EXTRACT_PRIVATE = YES
+EXTRACT_ALL = YES
+
+## m.css internal command -> show undocumented
+M_SHOW_UNDOCUMENTED = YES
+
+
+## Taken from magnum ( Project from authors of m.css )
+SHOW_USED_FILES = YES
+VERBATIM_HEADERS = NO
+AUTOLINK_SUPPORT = YES
+
+
+ALIASES += \
+ "m_div{1}=@xmlonly@endxmlonly" \
+ "m_enddiv=@xmlonly@endxmlonly" \
+ "m_span{1}=@xmlonly@endxmlonly" \
+ "m_endspan=@xmlonly@endxmlonly" \
+ "m_class{1}=@xmlonly@endxmlonly" \
+ "m_footernavigation=@xmlonly@endxmlonly" \
+ "m_examplenavigation{2}=@xmlonly@endxmlonly" \
+ "m_keywords{1}=@xmlonly@endxmlonly" \
+ "m_keyword{3}=@xmlonly@endxmlonly" \
+ "m_enum_values_as_keywords=@xmlonly@endxmlonly"
diff --git a/doc/pages/mainpage.md b/doc/pages/mainpage.md
new file mode 100644
index 0000000..73ed06f
--- /dev/null
+++ b/doc/pages/mainpage.md
@@ -0,0 +1 @@
+# Example app documentation
diff --git a/server-sdk b/server-sdk
new file mode 160000
index 0000000..b6950b9
--- /dev/null
+++ b/server-sdk
@@ -0,0 +1 @@
+Subproject commit b6950b9bfe35d10d4fc65e42f22086796ac85142
diff --git a/src/app/app.pro b/src/app/app.pro
index 619e67b..467b2c4 100644
--- a/src/app/app.pro
+++ b/src/app/app.pro
@@ -1,8 +1,12 @@
TEMPLATE = app
QT += core sql network
-CONFIG += debug console
+CONFIG += cmdline c++14
+CONFIG += ordered
+
SOURCES += main.cpp
+
include(../colnod/colnod.pri)
+
diff --git a/src/colnod/colnod.pri b/src/colnod/colnod.pri
index 23198f5..2929196 100644
--- a/src/colnod/colnod.pri
+++ b/src/colnod/colnod.pri
@@ -1,6 +1,8 @@
INCLUDEPATH += $$PWD
-#SRC_DIR = $$PWD
-message($$PWD)
+
+CONFIG += c++14
+
+
SOURCES += \
$$PWD/databasemanager.cpp \
$$PWD/datamanager.cpp \
@@ -22,4 +24,5 @@ HEADERS += \
$$PWD/subject.h \
$$PWD/syncmanager.h \
$$PWD/token.h
-message($$SOURCES)
+
+include(../../server-sdk/serversdk.pri)
diff --git a/src/colnod/databasemanager.cpp b/src/colnod/databasemanager.cpp
index ebc68e9..6e06145 100644
--- a/src/colnod/databasemanager.cpp
+++ b/src/colnod/databasemanager.cpp
@@ -1,4 +1,6 @@
#include "databasemanager.h"
+#include "logger.h"
+
DatabaseManager::DatabaseManager(const QString& host, const QString& dbName, const QString& user, const QString& password, const bool &dryMode)
:dryMode(dryMode)
diff --git a/src/colnod/databasemanager.h b/src/colnod/databasemanager.h
index 58469ff..f95a9d4 100644
--- a/src/colnod/databasemanager.h
+++ b/src/colnod/databasemanager.h
@@ -10,7 +10,6 @@
#include "subject.h"
#include "token.h"
#include
-#include "logger.h"
class DatabaseManager : public QObject
diff --git a/src/colnod/datamanager.cpp b/src/colnod/datamanager.cpp
index 5f441c5..3d81721 100644
--- a/src/colnod/datamanager.cpp
+++ b/src/colnod/datamanager.cpp
@@ -1,16 +1,15 @@
#include "datamanager.h"
-DataManager::DataManager(const bool &dryMode)
- :dryMode(dryMode)
+DataManager::DataManager(const bool &dryMode) :
+ db(std::make_shared("192.168.1.94", "deloitte", "postgres", "34rjkciea12", dryMode)),
+ dryMode(dryMode)
{
- db = std::make_shared("192.168.1.94", "deloitte", "postgres", "34rjkciea12", dryMode);
- //db = std::make_shared("localhost", "deloitte", "postgres", "34rjkciea12");
if (db->isOpen()){
Logger::setDBMan(db);
nextLastSync = db->getNow();
lastSync = db->getLastSync();
}
- connect(db.get(), &DatabaseManager::error, this, &DataManager::error, Qt::QueuedConnection);
+ connect(db.get(), &DatabaseManager::error, this, &DataManager::error);
}
// load all tokens from colnod to comparing with working set from DB
diff --git a/src/colnod/datamanager.h b/src/colnod/datamanager.h
index 5e12e79..d3e94ac 100644
--- a/src/colnod/datamanager.h
+++ b/src/colnod/datamanager.h
@@ -15,7 +15,7 @@ class DataManager : public QObject
Q_OBJECT
public:
- DataManager(const bool& dryMode = false);
+ explicit DataManager(const bool& dryMode = false);
void fillFullTokensColnod(const QString& jsonResponse);
diff --git a/src/colnod/entity.h b/src/colnod/entity.h
index bd4f217..5a4a4af 100644
--- a/src/colnod/entity.h
+++ b/src/colnod/entity.h
@@ -10,6 +10,7 @@
class Entity : public QObject {
Q_OBJECT
public:
+ Entity() = default;
using QObject::QObject;
const QUuid &getId() const;
diff --git a/src/colnod/requestmanager.cpp b/src/colnod/requestmanager.cpp
index 035a57b..7199e43 100644
--- a/src/colnod/requestmanager.cpp
+++ b/src/colnod/requestmanager.cpp
@@ -1,8 +1,8 @@
#include "requestmanager.h"
RequestManager::RequestManager()
+ : manager(std::make_unique())
{
- manager = std::make_unique();
connect(manager.get(), &QNetworkAccessManager::sslErrors, this, &RequestManager::onSSLError);
}
diff --git a/src/colnod/subject.h b/src/colnod/subject.h
index a0e8ae9..d7e6367 100644
--- a/src/colnod/subject.h
+++ b/src/colnod/subject.h
@@ -12,7 +12,7 @@ class Subject : public Entity {
public:
using Entity::Entity;
Subject() = default;
- Subject(const QString& name);
+ explicit Subject(const QString& name);
QString getEmail() const;
diff --git a/src/colnod/syncmanager.cpp b/src/colnod/syncmanager.cpp
index 411058c..29dcf07 100644
--- a/src/colnod/syncmanager.cpp
+++ b/src/colnod/syncmanager.cpp
@@ -1,12 +1,12 @@
#include "syncmanager.h"
-SyncManager::SyncManager(bool dryMode)
- :dryMode(dryMode)
+SyncManager::SyncManager(bool dryMode) :
+ reqMan(std::make_unique()),
+ dataMan( std::make_unique(dryMode)),
+ dryMode(dryMode)
{
- reqMan = std::make_unique();
- dataMan = std::make_unique(dryMode);
- connect(reqMan.get(), &RequestManager::error, this, &SyncManager::error, Qt::QueuedConnection);
- connect(dataMan.get(), &DataManager::error, this, &SyncManager::error, Qt::QueuedConnection);
+ connect(reqMan.get(), &RequestManager::error, this, &SyncManager::error);
+ connect(dataMan.get(), &DataManager::error, this, &SyncManager::error);
}
void SyncManager::loadDataFromColnod()
diff --git a/src/colnod/syncmanager.h b/src/colnod/syncmanager.h
index c5669e3..f39db10 100644
--- a/src/colnod/syncmanager.h
+++ b/src/colnod/syncmanager.h
@@ -9,8 +9,7 @@ class SyncManager : public QObject
Q_OBJECT
public:
-
- SyncManager(bool dryMode = false);
+ explicit SyncManager(bool dryMode = false);
void syncDataFromColnodToDB();
void syncDataFromDBToColnod();
diff --git a/src/colnod/token.h b/src/colnod/token.h
index 4292f3b..bce4c69 100644
--- a/src/colnod/token.h
+++ b/src/colnod/token.h
@@ -13,7 +13,7 @@ public:
Token() = default;
Token(const QString& name, QString tokenData, const QString& decription = "mobile");
- Token(const QString& name);
+ explicit Token(const QString& name);
~Token() override;
friend bool operator<(const Token &lToken, const Token &rToken){
diff --git a/test/unitTests/unitTests.pro b/test/unitTests/unitTests.pro
index 7fb83f9..78dd147 100644
--- a/test/unitTests/unitTests.pro
+++ b/test/unitTests/unitTests.pro
@@ -10,6 +10,7 @@ SOURCES += \
unittest.cpp
include(../../src/colnod/colnod.pri)
+include(../../server-sdk/serversdk.pri)
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin