File indexing completed on 2024-04-28 03:51:39

0001 /*
0002     SPDX-FileCopyrightText: 2015 Vishesh Handa <vhanda@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-or-later
0005 */
0006 
0007 #ifndef BALOO_SINGLEDBTEST_H
0008 #define BALOO_SINGLEDBTEST_H
0009 
0010 #include <QObject>
0011 #include <QTemporaryDir>
0012 #include <QTest>
0013 
0014 #include <lmdb.h>
0015 #include <memory>
0016 
0017 class SingleDBTest : public QObject
0018 {
0019     Q_OBJECT
0020 private Q_SLOTS:
0021     void init()
0022     {
0023         m_tempDir = std::make_unique<QTemporaryDir>();
0024 
0025         mdb_env_create(&m_env);
0026         mdb_env_set_maxdbs(m_env, 1);
0027 
0028         // The directory needs to be created before opening the environment
0029         QByteArray path = QFile::encodeName(m_tempDir->path());
0030         mdb_env_open(m_env, path.constData(), 0, 0664);
0031         mdb_txn_begin(m_env, nullptr, 0, &m_txn);
0032     }
0033 
0034     void cleanup()
0035     {
0036         mdb_txn_abort(m_txn);
0037         m_txn = nullptr;
0038         mdb_env_close(m_env);
0039         m_env = nullptr;
0040         m_tempDir.reset();
0041     }
0042 
0043 protected:
0044     MDB_env* m_env = nullptr;
0045     MDB_txn* m_txn = nullptr;
0046     std::unique_ptr<QTemporaryDir> m_tempDir;
0047 };
0048 
0049 #endif // SINGLEDBTEST_H