[+] Add event + semaphore IPC test

[*] Update runtime
This commit is contained in:
Reece Wilson 2022-04-14 20:46:56 +01:00
parent 47162ec671
commit 9ce2f7e63e
2 changed files with 98 additions and 1 deletions

@ -1 +1 @@
Subproject commit 415116c891dd0bc6c43c2fae409e1561690eaab9 Subproject commit 44839e6234f6a8eb9c39a09a5ea8cd5ee348ac7f

View File

@ -0,0 +1,97 @@
/***
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: Main.cpp
Date: 2022-2-18
Author: Reece
***/
#include <AuroraRuntime.hpp>
#include <gtest/gtest.h>
#if defined(AURORA_IS_POSIX_DERIVED)
TEST(IPC, ShareUnixFd)
{
int fds[2];
ASSERT_EQ(pipe(fds), 0);
ASSERT_EQ(write(fds[1], "hello", 5), 5);
auto handleString = AuIO::UNIX::ShareFileDescriptor(fds[0]);
AuLogDbg("UNIX IPC Handle: {}", handleString);
ASSERT_TRUE(bool(handleString.size()));
auto acceptFd = AuIO::UNIX::ShareFileDescriptorAccept(handleString);
AuLogDbg("Got FD: {}, started with: {}", acceptFd, fds[0]);
char hello[5];
ASSERT_EQ(read(acceptFd, hello, 5), 5);
AuLogDbg("Write side said: {}", AuString(hello, hello + 5));
ASSERT_EQ(AuString(hello, hello + 5), "hello");
close(fds[0]);
close(fds[1]);
close(acceptFd);
AuIO::UNIX::ShareFileDescriptorStop(handleString);
}
#endif
TEST(IPC, Event)
{
auto event = Aurora::IPC::NewEvent(false, true);
ASSERT_TRUE(bool(event));
auto handleString = event->ExportToString();
ASSERT_TRUE(bool(handleString.size()));
AuLogDbg("Exported event handle: {}", handleString);
auto eventImported = Aurora::IPC::ImportEvent(handleString);
ASSERT_TRUE(bool(eventImported));
ASSERT_FALSE(eventImported->IsSignaled());
ASSERT_FALSE(event->IsSignaled());
event->Set();
ASSERT_TRUE(eventImported->IsSignaled());
ASSERT_FALSE(eventImported->IsSignaled());
ASSERT_FALSE(event->IsSignaled());
}
TEST(IPC, Semaphore)
{
auto semaphore = Aurora::IPC::NewSemaphore(2);
ASSERT_TRUE(bool(semaphore));
auto handleString = semaphore->ExportToString();
ASSERT_TRUE(bool(handleString.size()));
AuLogDbg("Exported semaphore handle: {}", handleString);
auto semaphoreImported = Aurora::IPC::ImportSemaphore(handleString);
ASSERT_TRUE(bool(semaphoreImported));
ASSERT_TRUE(semaphoreImported->IsSignaled());
ASSERT_TRUE(semaphore->IsSignaled());
ASSERT_FALSE(semaphoreImported->IsSignaled());
ASSERT_FALSE(semaphore->IsSignaled());
semaphore->AddOne();
ASSERT_TRUE(semaphore->IsSignaled());
ASSERT_FALSE(semaphoreImported->IsSignaled());
ASSERT_FALSE(semaphore->IsSignaled());
}
void RunTests()
{
Aurora::RuntimeStartInfo info;
info.console.fio.enableLogging = false;
info.console.asyncVSLog = true;
Aurora::RuntimeStart(info);
}