mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 13:10:19 +00:00
a261466594
If we want to avoid the parsers to directly modify global data, we have to provide a device_table to parse into. This adds such a state and the corresponding function parameters. However, for now this is unused. Adding new parameters is very painful and this commit shows that we urgently need a "struct divelog" collecting all those tables! Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
90 lines
2.7 KiB
C++
90 lines
2.7 KiB
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#include "testparseperformance.h"
|
|
#include "core/device.h"
|
|
#include "core/divesite.h"
|
|
#include "core/trip.h"
|
|
#include "core/file.h"
|
|
#include "core/git-access.h"
|
|
#include "core/settings/qPrefProxy.h"
|
|
#include "core/settings/qPrefCloudStorage.h"
|
|
#include <QFile>
|
|
#include <QDebug>
|
|
#include <QNetworkProxy>
|
|
|
|
#define LARGE_TEST_REPO "https://github.com/Subsurface/large-anonymous-sample-data"
|
|
|
|
void TestParsePerformance::initTestCase()
|
|
{
|
|
/* we need to manually tell that the resource exists, because we are using it as library. */
|
|
Q_INIT_RESOURCE(subsurface);
|
|
|
|
// Set UTF8 text codec as in real applications
|
|
QTextCodec::setCodecForLocale(QTextCodec::codecForMib(106));
|
|
|
|
// first, setup the preferences an proxy information
|
|
copy_prefs(&default_prefs, &prefs);
|
|
QCoreApplication::setOrganizationName("Subsurface");
|
|
QCoreApplication::setOrganizationDomain("subsurface.hohndel.org");
|
|
QCoreApplication::setApplicationName("Subsurface");
|
|
qPrefProxy::load();
|
|
qPrefCloudStorage::load();
|
|
|
|
QNetworkProxy proxy;
|
|
proxy.setType(QNetworkProxy::ProxyType(prefs.proxy_type));
|
|
proxy.setHostName(prefs.proxy_host);
|
|
proxy.setPort(prefs.proxy_port);
|
|
if (prefs.proxy_auth) {
|
|
proxy.setUser(prefs.proxy_user);
|
|
proxy.setPassword(prefs.proxy_pass);
|
|
}
|
|
QNetworkProxy::setApplicationProxy(proxy);
|
|
|
|
// now cleanup the cache dir in case there's something weird from previous runs
|
|
QString localCacheDir(get_local_dir(LARGE_TEST_REPO, "git"));
|
|
QDir localCacheDirectory(localCacheDir);
|
|
QCOMPARE(localCacheDirectory.removeRecursively(), true);
|
|
}
|
|
|
|
void TestParsePerformance::init()
|
|
{
|
|
}
|
|
|
|
void TestParsePerformance::cleanup()
|
|
{
|
|
clear_dive_file_data();
|
|
}
|
|
|
|
void TestParsePerformance::parseSsrf()
|
|
{
|
|
// parsing of a V2 file should work
|
|
QFile largeSsrfFile(SUBSURFACE_TEST_DATA "/dives/large-anon.ssrf");
|
|
if (!largeSsrfFile.exists()) {
|
|
qDebug() << "missing large sample data file - available at " LARGE_TEST_REPO;
|
|
qDebug() << "clone the repo, uncompress the file and copy it to " SUBSURFACE_TEST_DATA "/dives/large-anon.ssrf";
|
|
return;
|
|
}
|
|
QBENCHMARK {
|
|
parse_file(SUBSURFACE_TEST_DATA "/dives/large-anon.ssrf", &dive_table, &trip_table,
|
|
&dive_site_table, &device_table, &filter_preset_table);
|
|
}
|
|
}
|
|
|
|
void TestParsePerformance::parseGit()
|
|
{
|
|
// some more necessary setup
|
|
git_libgit2_init();
|
|
|
|
// first parse this once to populate the local cache - this way network
|
|
// effects don't dominate the parse time
|
|
parse_file(LARGE_TEST_REPO "[git]", &dive_table, &trip_table, &dive_site_table,
|
|
&device_table, &filter_preset_table);
|
|
|
|
cleanup();
|
|
|
|
QBENCHMARK {
|
|
parse_file(LARGE_TEST_REPO "[git]", &dive_table, &trip_table, &dive_site_table,
|
|
&device_table, &filter_preset_table);
|
|
}
|
|
}
|
|
|
|
QTEST_GUILESS_MAIN(TestParsePerformance)
|