/*
- * Copyright (c) 2011 David Goulet <david.goulet@polymtl.ca>
+ * Copyright (C) 2011 David Goulet <david.goulet@polymtl.ca>
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * as published by the Free Software Foundation; only version 2
- * of the License.
+ * SPDX-License-Identifier: GPL-2.0-only
*
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#define _GNU_SOURCE
#include <assert.h>
#include <errno.h>
#include <stdio.h>
#include <bin/lttng-sessiond/trace-kernel.h>
#include <common/defaults.h>
-#include "utils.h"
-
-/* This path will NEVER be created in this test */
-#define PATH1 "/tmp/.test-junk-lttng"
+#include <tap/tap.h>
#define RANDOM_STRING_LEN 11
-/* For lttngerr.h */
+/* Number of TAP tests in this file */
+#define NUM_TESTS 11
+
+/* For error.h */
int lttng_opt_quiet = 1;
int lttng_opt_verbose;
+int lttng_opt_mi;
static const char alphanum[] =
"0123456789"
return random_string;
}
-static void create_one_kernel_session(void)
+static void test_create_one_kernel_session(void)
{
- printf("Create kernel session: ");
- kern = trace_kernel_create_session(PATH1);
- assert(kern != NULL);
- PRINT_OK();
+ kern = trace_kernel_create_session();
+ ok(kern != NULL, "Create kernel session");
- printf("Validating kernel session: ");
- assert(kern->fd == -1);
- assert(kern->metadata_stream_fd == -1);
- assert(kern->consumer_fds_sent == 0);
- assert(kern->channel_count == 0);
- assert(kern->stream_count_global == 0);
- assert(kern->metadata == NULL);
- PRINT_OK();
-
- /* Init list in order to avoid sefaults from cds_list_del */
- trace_kernel_destroy_session(kern);
+ if (!kern) {
+ skip(1, "Kernel session is null");
+ return;
+ }
+ ok(kern->fd == -1 &&
+ kern->metadata_stream_fd == -1 &&
+ kern->consumer_fds_sent == 0 &&
+ kern->channel_count == 0 &&
+ kern->stream_count_global == 0 &&
+ kern->metadata == NULL,
+ "Validate kernel session");
}
-static void create_kernel_metadata(void)
+static void test_create_kernel_metadata(void)
{
assert(kern != NULL);
- printf("Create kernel metadata: ");
kern->metadata = trace_kernel_create_metadata();
- assert(kern->metadata != NULL);
- PRINT_OK();
-
- printf("Validating kernel session metadata: ");
- assert(kern->metadata->fd == -1);
- assert(kern->metadata->conf != NULL);
- assert(kern->metadata->conf->attr.overwrite
- == DEFAULT_CHANNEL_OVERWRITE);
- assert(kern->metadata->conf->attr.subbuf_size
- == default_get_metadata_subbuf_size());
- assert(kern->metadata->conf->attr.num_subbuf
- == DEFAULT_METADATA_SUBBUF_NUM);
- assert(kern->metadata->conf->attr.switch_timer_interval
- == DEFAULT_CHANNEL_SWITCH_TIMER);
- assert(kern->metadata->conf->attr.read_timer_interval
- == DEFAULT_CHANNEL_READ_TIMER);
- assert(kern->metadata->conf->attr.output
- == DEFAULT_KERNEL_CHANNEL_OUTPUT);
- PRINT_OK();
+ ok(kern->metadata != NULL, "Create kernel metadata");
+
+ ok(kern->metadata->fd == -1 &&
+ kern->metadata->conf != NULL &&
+ kern->metadata->conf->attr.overwrite
+ == DEFAULT_CHANNEL_OVERWRITE &&
+ kern->metadata->conf->attr.subbuf_size
+ == default_get_metadata_subbuf_size() &&
+ kern->metadata->conf->attr.num_subbuf
+ == DEFAULT_METADATA_SUBBUF_NUM &&
+ kern->metadata->conf->attr.switch_timer_interval
+ == DEFAULT_KERNEL_CHANNEL_SWITCH_TIMER &&
+ kern->metadata->conf->attr.read_timer_interval
+ == DEFAULT_KERNEL_CHANNEL_READ_TIMER &&
+ kern->metadata->conf->attr.output
+ == DEFAULT_KERNEL_CHANNEL_OUTPUT,
+ "Validate kernel session metadata");
trace_kernel_destroy_metadata(kern->metadata);
}
-static void create_kernel_channel(void)
+static void test_create_kernel_channel(void)
{
struct ltt_kernel_channel *chan;
struct lttng_channel attr;
+ struct lttng_channel_extended extended;
memset(&attr, 0, sizeof(attr));
+ memset(&extended, 0, sizeof(extended));
+ attr.attr.extended.ptr = &extended;
- printf("Creating kernel channel: ");
chan = trace_kernel_create_channel(&attr);
- assert(chan != NULL);
- PRINT_OK();
+ ok(chan != NULL, "Create kernel channel");
+
+ if (!chan) {
+ skip(1, "Channel is null");
+ return;
+ }
- printf("Validating kernel channel: ");
- assert(chan->fd == -1);
- assert(chan->enabled == 1);
- assert(chan->stream_count == 0);
- assert(chan->ctx == NULL);
- assert(chan->channel->attr.overwrite == attr.attr.overwrite);
- PRINT_OK();
+ ok(chan->fd == -1 &&
+ chan->enabled == 1 &&
+ chan->stream_count == 0 &&
+ chan->channel->attr.overwrite == attr.attr.overwrite,
+ "Validate kernel channel");
/* Init list in order to avoid sefaults from cds_list_del */
CDS_INIT_LIST_HEAD(&chan->list);
trace_kernel_destroy_channel(chan);
}
-static void create_kernel_event(void)
+static void test_create_kernel_event(void)
{
+ enum lttng_error_code ret;
struct ltt_kernel_event *event;
struct lttng_event ev;
memset(&ev, 0, sizeof(ev));
- strncpy(ev.name, get_random_string(), LTTNG_KERNEL_SYM_NAME_LEN);
+ ok(!lttng_strncpy(ev.name, get_random_string(),
+ LTTNG_KERNEL_SYM_NAME_LEN),
+ "Validate string length");
ev.type = LTTNG_EVENT_TRACEPOINT;
ev.loglevel_type = LTTNG_EVENT_LOGLEVEL_ALL;
- printf("Creating kernel event: ");
- event = trace_kernel_create_event(&ev);
- assert(event != NULL);
- PRINT_OK();
+ ret = trace_kernel_create_event(&ev, NULL, NULL, &event);
+ ok(ret == LTTNG_OK, "Create kernel event");
+
+ if (!event) {
+ skip(1, "Event is null");
+ return;
+ }
- printf("Validating kernel event: ");
- assert(event->fd == -1);
- assert(event->enabled == 1);
- assert(event->event->instrumentation == LTTNG_KERNEL_TRACEPOINT);
- assert(strlen(event->event->name));
- PRINT_OK();
+ ok(event->fd == -1 &&
+ event->enabled == 1 &&
+ event->event->instrumentation == LTTNG_KERNEL_TRACEPOINT &&
+ strlen(event->event->name),
+ "Validate kernel event");
/* Init list in order to avoid sefaults from cds_list_del */
CDS_INIT_LIST_HEAD(&event->list);
trace_kernel_destroy_event(event);
}
-static void create_kernel_stream(void)
+static void test_create_kernel_stream(void)
{
struct ltt_kernel_stream *stream;
- printf("Creating kernel stream: ");
stream = trace_kernel_create_stream("stream1", 0);
- assert(stream != NULL);
- PRINT_OK();
+ ok(stream != NULL, "Create kernel stream");
+
+ if (!stream) {
+ skip(1, "Stream is null");
+ return;
+ }
- printf("Validating kernel stream: ");
- assert(stream->fd == -1);
- assert(stream->state == 0);
- PRINT_OK();
+ ok(stream->fd == -1 &&
+ stream->state == 0,
+ "Validate kernel stream");
/* Init list in order to avoid sefaults from cds_list_del */
CDS_INIT_LIST_HEAD(&stream->list);
int main(int argc, char **argv)
{
- printf("\nTesting kernel data structures:\n-----------\n");
-
- create_one_kernel_session();
-
- create_kernel_metadata();
- create_kernel_channel();
-
+ plan_tests(NUM_TESTS);
- create_kernel_event();
+ diag("Kernel data structure unit test");
- create_kernel_stream();
+ test_create_one_kernel_session();
+ test_create_kernel_metadata();
+ test_create_kernel_channel();
+ test_create_kernel_event();
+ test_create_kernel_stream();
/* Success */
return 0;