aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/test-logging.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/test-logging.c')
-rw-r--r--tests/unit/test-logging.c42
1 files changed, 20 insertions, 22 deletions
diff --git a/tests/unit/test-logging.c b/tests/unit/test-logging.c
index 05703a4e51..66dbc82a56 100644
--- a/tests/unit/test-logging.c
+++ b/tests/unit/test-logging.c
@@ -29,6 +29,7 @@
#include "qapi/error.h"
#include "qemu/log.h"
+#include "qemu/rcu.h"
static void test_parse_range(void)
{
@@ -109,12 +110,10 @@ static void test_parse_path(gconstpointer data)
static void test_logfile_write(gconstpointer data)
{
- QemuLogFile *logfile;
- QemuLogFile *logfile2;
+ FILE *logfile0, *logfile1;
gchar const *dir = data;
- g_autofree gchar *file_path = NULL;
+ g_autofree gchar *file_path0 = NULL;
g_autofree gchar *file_path1 = NULL;
- FILE *orig_fd;
/*
* Before starting test, set log flags, to ensure the file gets
@@ -122,30 +121,29 @@ static void test_logfile_write(gconstpointer data)
* In cases where a logging backend other than log is used,
* this is needed.
*/
- qemu_set_log(CPU_LOG_TB_OUT_ASM);
- file_path = g_build_filename(dir, "qemu_test_log_write0.log", NULL);
+ qemu_set_log(CPU_LOG_TB_OUT_ASM, &error_abort);
+ file_path0 = g_build_filename(dir, "qemu_test_log_write0.log", NULL);
file_path1 = g_build_filename(dir, "qemu_test_log_write1.log", NULL);
/*
* Test that even if an open file handle is changed,
* our handle remains valid due to RCU.
*/
- qemu_set_log_filename(file_path, &error_abort);
- rcu_read_lock();
- logfile = qatomic_rcu_read(&qemu_logfile);
- orig_fd = logfile->fd;
- g_assert(logfile && logfile->fd);
- fprintf(logfile->fd, "%s 1st write to file\n", __func__);
- fflush(logfile->fd);
+ qemu_set_log_filename(file_path0, &error_abort);
+ logfile0 = qemu_log_trylock();
+ g_assert(logfile0);
+ fprintf(logfile0, "%s 1st write to file\n", __func__);
+ fflush(logfile0);
/* Change the logfile and ensure that the handle is still valid. */
qemu_set_log_filename(file_path1, &error_abort);
- logfile2 = qatomic_rcu_read(&qemu_logfile);
- g_assert(logfile->fd == orig_fd);
- g_assert(logfile2->fd != logfile->fd);
- fprintf(logfile->fd, "%s 2nd write to file\n", __func__);
- fflush(logfile->fd);
- rcu_read_unlock();
+ logfile1 = qemu_log_trylock();
+ g_assert(logfile1);
+ g_assert(logfile0 != logfile1);
+ fprintf(logfile0, "%s 2nd write to file\n", __func__);
+ fflush(logfile0);
+ qemu_log_unlock(logfile0);
+ qemu_log_unlock(logfile1);
}
static void test_logfile_lock(gconstpointer data)
@@ -162,7 +160,7 @@ static void test_logfile_lock(gconstpointer data)
* our handle remains valid for use due to RCU.
*/
qemu_set_log_filename(file_path, &error_abort);
- logfile = qemu_log_lock();
+ logfile = qemu_log_trylock();
g_assert(logfile);
fprintf(logfile, "%s 1st write to file\n", __func__);
fflush(logfile);
@@ -171,7 +169,7 @@ static void test_logfile_lock(gconstpointer data)
* Initiate a close file and make sure our handle remains
* valid since we still have the logfile lock.
*/
- qemu_log_close();
+ qemu_set_log_filename_flags(NULL, 0, &error_abort);
fprintf(logfile, "%s 2nd write to file\n", __func__);
fflush(logfile);
qemu_log_unlock(logfile);
@@ -209,7 +207,7 @@ int main(int argc, char **argv)
tmp_path, test_logfile_lock);
rc = g_test_run();
- qemu_log_close();
+ qemu_set_log_filename_flags(NULL, 0, &error_abort);
drain_call_rcu();
rmdir_full(tmp_path);