Adapt mocking to latest changes
* Cover all required requests so the connection can be established without errors * Add more events to test error handling * Fix definition of LIB_SYNCTHING_CONNECTOR_CONNECTION_MOCKED after syncthingconnection.cpp split
This commit is contained in:
parent
930691ebdc
commit
dcbc19cf8c
|
@ -95,7 +95,8 @@ if(SYNCTHING_CONNECTION_MOCKED)
|
||||||
syncthingconnectionmockhelpers.cpp
|
syncthingconnectionmockhelpers.cpp
|
||||||
)
|
)
|
||||||
set_property(
|
set_property(
|
||||||
SOURCE syncthingconnection_requests.cpp
|
SOURCE syncthingconnection.cpp
|
||||||
|
syncthingconnection_requests.cpp
|
||||||
syncthingconnectionmockhelpers.h
|
syncthingconnectionmockhelpers.h
|
||||||
syncthingconnectionmockhelpers.cpp
|
syncthingconnectionmockhelpers.cpp
|
||||||
APPEND PROPERTY COMPILE_DEFINITIONS ${META_PROJECT_VARNAME_UPPER}_CONNECTION_MOCKED
|
APPEND PROPERTY COMPILE_DEFINITIONS ${META_PROJECT_VARNAME_UPPER}_CONNECTION_MOCKED
|
||||||
|
|
|
@ -3,6 +3,10 @@
|
||||||
#include "./syncthingconnectionsettings.h"
|
#include "./syncthingconnectionsettings.h"
|
||||||
#include "./utils.h"
|
#include "./utils.h"
|
||||||
|
|
||||||
|
#ifdef LIB_SYNCTHING_CONNECTOR_CONNECTION_MOCKED
|
||||||
|
#include "./syncthingconnectionmockhelpers.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <c++utilities/conversion/stringconversion.h>
|
#include <c++utilities/conversion/stringconversion.h>
|
||||||
|
|
||||||
#include <QAuthenticator>
|
#include <QAuthenticator>
|
||||||
|
@ -103,6 +107,7 @@ SyncthingConnection::SyncthingConnection(const QString &syncthingUrl, const QByt
|
||||||
m_autoReconnectTimer.setTimerType(Qt::VeryCoarseTimer);
|
m_autoReconnectTimer.setTimerType(Qt::VeryCoarseTimer);
|
||||||
m_autoReconnectTimer.setInterval(SyncthingConnectionSettings::defaultReconnectInterval);
|
m_autoReconnectTimer.setInterval(SyncthingConnectionSettings::defaultReconnectInterval);
|
||||||
QObject::connect(&m_autoReconnectTimer, &QTimer::timeout, this, &SyncthingConnection::autoReconnect);
|
QObject::connect(&m_autoReconnectTimer, &QTimer::timeout, this, &SyncthingConnection::autoReconnect);
|
||||||
|
|
||||||
#ifdef LIB_SYNCTHING_CONNECTOR_CONNECTION_MOCKED
|
#ifdef LIB_SYNCTHING_CONNECTOR_CONNECTION_MOCKED
|
||||||
setupTestData();
|
setupTestData();
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -27,15 +27,8 @@ namespace Data {
|
||||||
*/
|
*/
|
||||||
namespace TestData {
|
namespace TestData {
|
||||||
static bool initialized = false;
|
static bool initialized = false;
|
||||||
static string config;
|
static string config, status, folderStats, deviceStats, errors, folderStatus, folderStatus2, folderStatus3, pullErrors, connections, version, empty;
|
||||||
static string status;
|
static string events[7];
|
||||||
static string folderStats;
|
|
||||||
static string deviceStats;
|
|
||||||
static string errors;
|
|
||||||
static string folderStatus;
|
|
||||||
static string folderStatus2;
|
|
||||||
static string connections;
|
|
||||||
static string events[6];
|
|
||||||
} // namespace TestData
|
} // namespace TestData
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
@ -71,10 +64,11 @@ void setupTestData()
|
||||||
const TestApplication testApp(0, nullptr);
|
const TestApplication testApp(0, nullptr);
|
||||||
|
|
||||||
// read mock files for REST-API
|
// read mock files for REST-API
|
||||||
const char *const fileNames[]
|
const char *const fileNames[] = { "config", "status", "folderstats", "devicestats", "errors", "folderstatus-01", "folderstatus-02",
|
||||||
= { "config", "status", "folderstats", "devicestats", "errors", "folderstatus-01", "folderstatus-02", "connections" };
|
"folderstatus-03", "pullerrors-01", "connections", "version", "empty" };
|
||||||
const char *const *fileName = fileNames;
|
const char *const *fileName = fileNames;
|
||||||
for (string *testDataVariable : { &config, &status, &folderStats, &deviceStats, &errors, &folderStatus, &folderStatus2, &connections }) {
|
for (string *testDataVariable : { &config, &status, &folderStats, &deviceStats, &errors, &folderStatus, &folderStatus2, &folderStatus3,
|
||||||
|
&pullErrors, &connections, &version, &empty }) {
|
||||||
*testDataVariable = readMockFile(testApp.testFilePath(argsToString("mocks/", *fileName, ".json")));
|
*testDataVariable = readMockFile(testApp.testFilePath(argsToString("mocks/", *fileName, ".json")));
|
||||||
++fileName;
|
++fileName;
|
||||||
}
|
}
|
||||||
|
@ -177,25 +171,38 @@ MockedReply *MockedReply::forRequest(const QString &method, const QString &path,
|
||||||
buffer = &folderStatus;
|
buffer = &folderStatus;
|
||||||
} else if (folder == QLatin1String("zX8xfl3ygn-")) {
|
} else if (folder == QLatin1String("zX8xfl3ygn-")) {
|
||||||
buffer = &folderStatus2;
|
buffer = &folderStatus2;
|
||||||
|
} else if (folder == QLatin1String("forever-alone")) {
|
||||||
|
buffer = &folderStatus3;
|
||||||
|
}
|
||||||
|
} else if (path == QLatin1String("folder/pullerrors")) {
|
||||||
|
const QString folder(query.queryItemValue(QStringLiteral("folder")));
|
||||||
|
if (folder == QLatin1String("GXWxf-3zgnU")) {
|
||||||
|
buffer = &pullErrors;
|
||||||
}
|
}
|
||||||
} else if (path == QLatin1String("system/connections")) {
|
} else if (path == QLatin1String("system/connections")) {
|
||||||
buffer = &connections;
|
buffer = &connections;
|
||||||
|
} else if (path == QLatin1String("system/version")) {
|
||||||
|
buffer = &version;
|
||||||
} else if (path == QLatin1String("events")) {
|
} else if (path == QLatin1String("events")) {
|
||||||
buffer = &events[s_eventIndex];
|
buffer = &events[s_eventIndex];
|
||||||
|
cerr << "mocking: at event index " << s_eventIndex << endl;
|
||||||
// "emit" the first event almost immediately and further events each 2.5 seconds
|
// "emit" the first event almost immediately and further events each 2.5 seconds
|
||||||
switch (s_eventIndex) {
|
switch (s_eventIndex) {
|
||||||
case 0:
|
case 0:
|
||||||
delay = 200;
|
delay = 200;
|
||||||
++s_eventIndex;
|
++s_eventIndex;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 6:
|
||||||
// continue emitting the last event every 10 seconds
|
// continue emitting the last event every 10 seconds
|
||||||
delay = 10000;
|
delay = 10000;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
delay = 2500;
|
delay = 2000;
|
||||||
++s_eventIndex;
|
++s_eventIndex;
|
||||||
}
|
}
|
||||||
|
} else if (path == QLatin1String("events/disk")) {
|
||||||
|
buffer = ∅
|
||||||
|
delay = 5000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
[]
|
|
@ -70,6 +70,20 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"type": "FolderErrors",
|
||||||
|
"time": "2000-06-26T13:39:24.697401384+02:00",
|
||||||
|
"data": {
|
||||||
|
"errors": [
|
||||||
|
{
|
||||||
|
"error": "should be ignored",
|
||||||
|
"path": "some path"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folder": "GXWxf-3zgnU"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"type": "FolderErrors",
|
"type": "FolderErrors",
|
||||||
|
|
|
@ -1,6 +1,24 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"id": 8,
|
"id": 8,
|
||||||
|
"type": "FolderErrors",
|
||||||
|
"time": "2018-12-13T00:34:12.9876937Z",
|
||||||
|
"data": {
|
||||||
|
"errors": [
|
||||||
|
{
|
||||||
|
"error": "some error",
|
||||||
|
"path": "some file"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"error": "another error",
|
||||||
|
"path": "another file"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"folder": "zX8xfl3ygn-"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
"type": "DownloadProgress",
|
"type": "DownloadProgress",
|
||||||
"time": "2018-12-13T00:34:12.9876937Z",
|
"time": "2018-12-13T00:34:12.9876937Z",
|
||||||
"data": {
|
"data": {
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"globalID": 8,
|
||||||
|
"type": "StateChanged",
|
||||||
|
"time": "2018-12-13T00:34:12.9876937Z",
|
||||||
|
"data": {
|
||||||
|
"folder": "zX8xfl3ygn-",
|
||||||
|
"from": "error",
|
||||||
|
"duration": 0.19782869900000002,
|
||||||
|
"to": "syncing"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"globalID": 8,
|
||||||
|
"type": "FolderSummary",
|
||||||
|
"time": "2018-12-13T00:34:12.9876937Z",
|
||||||
|
"data": {
|
||||||
|
"folder": "zX8xfl3ygn-",
|
||||||
|
"globalBytes": 24525452,
|
||||||
|
"globalDeleted": 8,
|
||||||
|
"globalFiles": 543,
|
||||||
|
"globalFolders": 3,
|
||||||
|
"localBytes": 24525452,
|
||||||
|
"localDeleted": 8,
|
||||||
|
"localFiles": 343,
|
||||||
|
"localFolders": 4,
|
||||||
|
"inSyncBytes": 13173473780,
|
||||||
|
"inSyncFiles": 42106,
|
||||||
|
"needBytes": 0,
|
||||||
|
"needFiles": 0,
|
||||||
|
"ignorePatterns": true,
|
||||||
|
"invalid": "",
|
||||||
|
"state": "syncing",
|
||||||
|
"stateChanged": "2018-12-13T00:34:12.9876937Z",
|
||||||
|
"version": 71989,
|
||||||
|
"pullErrors": 25
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 11,
|
||||||
|
"type": "FolderSummary",
|
||||||
|
"time": "2018-12-13T00:34:12.9876937Z",
|
||||||
|
"data": {
|
||||||
|
"folder": "GXWxf-3zgnU",
|
||||||
|
"summary": {
|
||||||
|
"globalBytes": 23173473780,
|
||||||
|
"globalDeleted": 2847,
|
||||||
|
"globalFiles": 82106,
|
||||||
|
"localBytes": 23173471732,
|
||||||
|
"localDeleted": 2847,
|
||||||
|
"localFiles": 82081,
|
||||||
|
"inSyncBytes": 23173473780,
|
||||||
|
"inSyncFiles": 82081,
|
||||||
|
"needBytes": 2048,
|
||||||
|
"needFiles": 25,
|
||||||
|
"ignorePatterns": true,
|
||||||
|
"invalid": "",
|
||||||
|
"state": "error",
|
||||||
|
"stateChanged": "2016-03-16T21:47:28.750853241+01:00",
|
||||||
|
"version": 71989,
|
||||||
|
"pullErrors": 25
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"globalBytes": 1,
|
||||||
|
"globalDeleted": 2,
|
||||||
|
"globalFiles": 3,
|
||||||
|
"globalFolders": 4,
|
||||||
|
"localBytes": 1,
|
||||||
|
"localDeleted": 2,
|
||||||
|
"localFiles": 3,
|
||||||
|
"localFolders": 4,
|
||||||
|
"ignorePatterns": true,
|
||||||
|
"invalid": "",
|
||||||
|
"state": "idle",
|
||||||
|
"stateChanged": "2018-03-16T21:47:28.750853241+01:00",
|
||||||
|
"version": 21
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"folder": "GXWxf-3zgnU",
|
||||||
|
"errors": [
|
||||||
|
{
|
||||||
|
"error": "open /Users/jb/src/github.com/syncthing/syncthing/test/s2/h2j/.syncthing.aslkjd.tmp: permission denied",
|
||||||
|
"path": "h2j/aslkjd"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"arch": "amd64",
|
||||||
|
"longVersion": "syncthing v0.10.27+3-gea8c3de (go1.4 darwin-amd64 default) jb@syno 2015-03-16 11:01:29 UTC",
|
||||||
|
"os": "darwin",
|
||||||
|
"version": "v0.10.27+3-gea8c3de"
|
||||||
|
}
|
Loading…
Reference in New Issue