test: Add userspace tests
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
// SPDX-License-Identifier: ISC
|
||||
|
||||
#include <string.h>
|
||||
#include <uapi/errno.h>
|
||||
#include <uapi/utsname.h>
|
||||
#include "lib/syscall.h"
|
||||
#include "lib/utest.h"
|
||||
|
||||
UTEST(syslog, writes_message) {
|
||||
const char msg[] = "utest: syslog test";
|
||||
struct sys_ret ret = sys_syslog(SYSLOG_INFO, msg, sizeof(msg) - 1);
|
||||
EXPECT_EQ(ret.error, 0);
|
||||
}
|
||||
|
||||
UTEST(syslog, rejects_bad_pointer) {
|
||||
struct sys_ret ret = sys_syslog(SYSLOG_INFO, (const char*)0x10, 8);
|
||||
EXPECT_EQ(ret.error, __EFAULT);
|
||||
}
|
||||
|
||||
UTEST(system, uname) {
|
||||
struct __utsname uts = {};
|
||||
struct sys_ret ret = sys_getuname(&uts);
|
||||
ASSERT_EQ(ret.error, 0);
|
||||
EXPECT_STREQ(uts.sysname, "Zinnia");
|
||||
EXPECT_STREQ(uts.machine, "x86_64");
|
||||
}
|
||||
|
||||
UTEST(syslog, long_message) {
|
||||
char msg[1024];
|
||||
memset(msg, 'x', sizeof(msg));
|
||||
EXPECT_EQ(sys_syslog(SYSLOG_INFO, msg, sizeof(msg)).error, 0);
|
||||
}
|
||||
|
||||
UTEST(system, uname_rejects_null) {
|
||||
EXPECT_EQ(sys_getuname(nullptr).error, __EINVAL);
|
||||
EXPECT_EQ(sys_setuname(nullptr).error, __EINVAL);
|
||||
}
|
||||
|
||||
UTEST(system, uname_rejects_bad_pointer) {
|
||||
EXPECT_EQ(sys_getuname((void*)0x10).error, __EFAULT);
|
||||
EXPECT_EQ(sys_setuname((const void*)0x10).error, __EFAULT);
|
||||
}
|
||||
|
||||
UTEST(system, setuname) {
|
||||
struct __utsname original = {};
|
||||
ASSERT_EQ(sys_getuname(&original).error, 0);
|
||||
|
||||
struct __utsname changed = original;
|
||||
memset(changed.nodename, 0, sizeof(changed.nodename));
|
||||
memcpy(changed.nodename, "foobar", sizeof("foobar"));
|
||||
ASSERT_EQ(sys_setuname(&changed).error, 0);
|
||||
|
||||
struct __utsname now = {};
|
||||
EXPECT_EQ(sys_getuname(&now).error, 0);
|
||||
EXPECT_STREQ(now.nodename, "foobar");
|
||||
EXPECT_STREQ(now.sysname, original.sysname);
|
||||
|
||||
EXPECT_EQ(sys_setuname(&original).error, 0);
|
||||
EXPECT_EQ(sys_getuname(&now).error, 0);
|
||||
EXPECT_STREQ(now.nodename, original.nodename);
|
||||
}
|
||||
Reference in New Issue
Block a user