83 lines
1.5 KiB
C++
83 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#define TEST_SERVER_HOST L"localhost"
|
|
#define TEST_SERVER_PORT 11980
|
|
#define TEST_SERVER_AND_PORT TEST_SERVER_HOST, TEST_SERVER_PORT
|
|
#define TEST_SERVER_VERSION L"1.1.0"
|
|
|
|
using namespace Sia::Api;
|
|
|
|
class Daemon
|
|
{
|
|
public:
|
|
~Daemon()
|
|
{
|
|
Stop();
|
|
}
|
|
|
|
private:
|
|
PROCESS_INFORMATION pi;
|
|
STARTUPINFO si;
|
|
|
|
private:
|
|
void Cleanup()
|
|
{
|
|
ZeroMemory(&si, sizeof(si));
|
|
si.cb = sizeof(si);
|
|
ZeroMemory(&pi, sizeof(pi));
|
|
|
|
String szCmdline = L"cmd.exe /c del /s /q .\\data";
|
|
CreateProcess(nullptr, &szCmdline[0], nullptr, nullptr, TRUE, 0, nullptr, nullptr, &si, &pi);
|
|
if (pi.hProcess)
|
|
{
|
|
WaitForSingleObject(pi.hProcess, INFINITE);
|
|
|
|
CloseHandle(pi.hProcess);
|
|
CloseHandle(pi.hThread);
|
|
}
|
|
|
|
ZeroMemory(&si, sizeof(si));
|
|
si.cb = sizeof(si);
|
|
ZeroMemory(&pi, sizeof(pi));
|
|
}
|
|
|
|
public:
|
|
void Start()
|
|
{
|
|
Cleanup();
|
|
|
|
String szCmdline = L"\"..\\..\\3rd-party\\Sia-v1.1.0-windows-amd64\\siad.exe\" -d .\\data --api-addr " + String(TEST_SERVER_HOST) + L":" + std::to_wstring(TEST_SERVER_PORT) + L" --no-bootstrap";
|
|
CreateProcess(nullptr, &szCmdline[0], nullptr, nullptr, TRUE, 0, nullptr, nullptr, &si, &pi);
|
|
}
|
|
|
|
void Stop()
|
|
{
|
|
if (pi.hProcess)
|
|
{
|
|
TerminateProcess(pi.hProcess, 0);
|
|
|
|
CloseHandle(pi.hProcess);
|
|
CloseHandle(pi.hThread);
|
|
|
|
Cleanup();
|
|
}
|
|
}
|
|
};
|
|
|
|
#define DAEMON_TEST() \
|
|
private:\
|
|
static Daemon _daemon; \
|
|
\
|
|
public:\
|
|
TEST_CLASS_INITIALIZE(StartDaemon)\
|
|
{\
|
|
_daemon.Start();\
|
|
}\
|
|
\
|
|
TEST_CLASS_CLEANUP(StopDaemon)\
|
|
{\
|
|
_daemon.Stop();\
|
|
}
|
|
|
|
|
|
#define DEFINE_DAEMON(class) Daemon class::_daemon |