From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:51767) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RnXsv-0006l8-RA for qemu-devel@nongnu.org; Wed, 18 Jan 2012 10:57:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RnXsu-0006kz-Tv for qemu-devel@nongnu.org; Wed, 18 Jan 2012 10:57:13 -0500 Received: from mx1.redhat.com ([209.132.183.28]:55945) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RnXsu-0006kh-Mi for qemu-devel@nongnu.org; Wed, 18 Jan 2012 10:57:12 -0500 Message-ID: <4F16EC9F.9020503@redhat.com> Date: Wed, 18 Jan 2012 17:00:31 +0100 From: Kevin Wolf MIME-Version: 1.0 References: <1326479558-3016-1-git-send-email-aliguori@us.ibm.com> <1326479558-3016-3-git-send-email-aliguori@us.ibm.com> In-Reply-To: <1326479558-3016-3-git-send-email-aliguori@us.ibm.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 3/6] qtest: add C version of test infrastructure List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Paolo Bonzini , qemu-devel@nongnu.org, Stefan Hajnoczi Am 13.01.2012 19:32, schrieb Anthony Liguori: > This also includes a qtest wrapper script to make it easier to launch qtest > tests directly. > > Signed-off-by: Anthony Liguori > +QTestState *qtest_init(const char *extra_args) > +{ > + QTestState *s; > + struct sockaddr_un addr; > + int sock, ret, i; > + gchar *socket_path; > + gchar *pid_file; > + gchar *command; > + const char *qemu_binary; > + pid_t pid; > + > + qemu_binary = getenv("QTEST_QEMU_BINARY"); > + g_assert(qemu_binary != NULL); > + > + socket_path = g_strdup_printf("/tmp/qtest-%d.sock", getpid()); > + pid_file = g_strdup_printf("/tmp/qtest-%d.pid", getpid()); > + > + s = g_malloc(sizeof(*s)); > + > + sock = socket(PF_UNIX, SOCK_STREAM, 0); > + g_assert_no_errno(sock); > + > + addr.sun_family = AF_UNIX; > + snprintf(addr.sun_path, sizeof(addr.sun_path), "%s", socket_path); > + > + pid = fork(); > + if (pid == 0) { > + command = g_strdup_printf("%s " > + "-qtest unix:%s,server,nowait " > + "-qtest-log /dev/null " > + "-pidfile %s " > + "-machine accel=qtest " > + "%s", qemu_binary, socket_path, > + pid_file, > + extra_args ?: ""); > + > + ret = system(command); > + exit(ret); > + g_free(command); > + } > + > + do { > + sleep(1); This is the line that takes the greatest part of the time for make check-qtest. Can we use some shorter delay if it's required at all? > + ret = connect(sock, (struct sockaddr *)&addr, sizeof(addr)); > + } while (ret == -1); > + g_assert_no_errno(ret); > + > + s->fd = sock; > + s->rx = g_string_new(""); > + s->pid_file = pid_file; > + for (i = 0; i < MAX_IRQ; i++) { > + s->irq_level[i] = false; > + } > + > + g_free(socket_path); > + > + return s; > +} Kevin