mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
selftests/liveupdate: add test cases for LIVEUPDATE_SESSION_GET_NAME
Verify that the new LIVEUPDATE_SESSION_GET_NAME ioctl works as expected via new test cases in the existing liveupdate selftest. Signed-off-by: Luca Boccassi <luca.boccassi@gmail.com> Reviewed-by: Pasha Tatashin <pasha.tatashin@soleen.com> Reviewed-by: Pratyush Yadav <pratyush@kernel.org> Link: https://lore.kernel.org/r/20260429212221.814107-5-luca.boccassi@gmail.com Signed-off-by: Pasha Tatashin <pasha.tatashin@soleen.com> Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
This commit is contained in:
parent
4c08a9f38c
commit
a1f8ed3451
|
|
@ -102,6 +102,22 @@ static int create_session(int lu_fd, const char *name)
|
|||
return args.fd;
|
||||
}
|
||||
|
||||
/* Helper function to get a session name via ioctl. */
|
||||
static int get_session_name(int session_fd, char *name, size_t name_len)
|
||||
{
|
||||
struct liveupdate_session_get_name args = {};
|
||||
|
||||
args.size = sizeof(args);
|
||||
|
||||
if (ioctl(session_fd, LIVEUPDATE_SESSION_GET_NAME, &args))
|
||||
return -errno;
|
||||
|
||||
strncpy(name, (char *)args.name, name_len - 1);
|
||||
name[name_len - 1] = '\0';
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Test Case: Create Duplicate Session
|
||||
*
|
||||
|
|
@ -428,4 +444,59 @@ TEST_F(liveupdate_device, create_session_empty_name)
|
|||
EXPECT_EQ(session_fd, -EINVAL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Test Case: Get Session Name
|
||||
*
|
||||
* Verifies that the full session name can be retrieved from a session file
|
||||
* descriptor via ioctl.
|
||||
*/
|
||||
TEST_F(liveupdate_device, get_session_name)
|
||||
{
|
||||
char name_buf[LIVEUPDATE_SESSION_NAME_LENGTH] = {};
|
||||
const char *session_name = "get-name-test-session";
|
||||
int session_fd;
|
||||
|
||||
self->fd1 = open(LIVEUPDATE_DEV, O_RDWR);
|
||||
if (self->fd1 < 0 && errno == ENOENT)
|
||||
SKIP(return, "%s does not exist", LIVEUPDATE_DEV);
|
||||
ASSERT_GE(self->fd1, 0);
|
||||
|
||||
session_fd = create_session(self->fd1, session_name);
|
||||
ASSERT_GE(session_fd, 0);
|
||||
|
||||
ASSERT_EQ(get_session_name(session_fd, name_buf, sizeof(name_buf)), 0);
|
||||
ASSERT_STREQ(name_buf, session_name);
|
||||
|
||||
ASSERT_EQ(close(session_fd), 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Test Case: Get Session Name at Maximum Length
|
||||
*
|
||||
* Verifies that a session name using the full LIVEUPDATE_SESSION_NAME_LENGTH
|
||||
* (minus the null terminator) can be correctly retrieved.
|
||||
*/
|
||||
TEST_F(liveupdate_device, get_session_name_max_length)
|
||||
{
|
||||
char name_buf[LIVEUPDATE_SESSION_NAME_LENGTH] = {};
|
||||
char long_name[LIVEUPDATE_SESSION_NAME_LENGTH];
|
||||
int session_fd;
|
||||
|
||||
memset(long_name, 'A', sizeof(long_name) - 1);
|
||||
long_name[sizeof(long_name) - 1] = '\0';
|
||||
|
||||
self->fd1 = open(LIVEUPDATE_DEV, O_RDWR);
|
||||
if (self->fd1 < 0 && errno == ENOENT)
|
||||
SKIP(return, "%s does not exist", LIVEUPDATE_DEV);
|
||||
ASSERT_GE(self->fd1, 0);
|
||||
|
||||
session_fd = create_session(self->fd1, long_name);
|
||||
ASSERT_GE(session_fd, 0);
|
||||
|
||||
ASSERT_EQ(get_session_name(session_fd, name_buf, sizeof(name_buf)), 0);
|
||||
ASSERT_STREQ(name_buf, long_name);
|
||||
|
||||
ASSERT_EQ(close(session_fd), 0);
|
||||
}
|
||||
|
||||
TEST_HARNESS_MAIN
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user