Do thread cleanup within the same thread context.

This commit is contained in:
rakshasa
2025-05-30 10:16:03 +02:00
committed by Jari Sundell
parent de6c48ca3f
commit 2d565d1c80
7 changed files with 119 additions and 24 deletions
+39 -5
View File
@@ -2,29 +2,63 @@
#define TEST_HELPERS_TEST_MAIN_THREAD_H
#include <memory>
#include <torrent/common.h>
#include <torrent/utils/thread.h>
#include "test/helpers/test_fixture.h"
#include "test/helpers/test_thread.h"
#include "torrent/common.h"
#include "torrent/utils/thread.h"
class TestMainThread : public torrent::utils::Thread {
public:
static std::unique_ptr<TestMainThread> create();
~TestMainThread() override;
static std::unique_ptr<TestMainThread> create_with_mock();
const char* name() const override { return "rtorrent test main"; }
void init_thread() override;
void cleanup_thread() override;
void test_set_cached_time(std::chrono::microseconds t) { set_cached_time(365 * 24h + t); }
void test_add_cached_time(std::chrono::microseconds t) { set_cached_time(cached_time() + t); }
void test_process_events_without_cached_time() { process_events_without_cached_time(); }
private:
TestMainThread();
TestMainThread() = default;
void call_events() override;
std::chrono::microseconds next_timeout() override;
};
class TestFixtureWithMainThread : public test_fixture {
public:
void setUp();
void tearDown();
std::unique_ptr<TestMainThread> m_main_thread;
};
class TestFixtureWithMainAndDiskThread : public test_fixture {
public:
void setUp();
void tearDown();
std::unique_ptr<TestMainThread> m_main_thread;
};
class TestFixtureWithMainAndTrackerThread : public test_fixture {
public:
void setUp();
void tearDown();
std::unique_ptr<TestMainThread> m_main_thread;
};
class TestFixtureWithMockAndMainThread : public test_fixture {
public:
void setUp();
void tearDown();
std::unique_ptr<TestMainThread> m_main_thread;
};
#endif // TEST_HELPERS_TEST_MAIN_THREAD_H