#include <internal/tests.h>
 #include <api/fs/fs.h>
 #include "tests.h"
+#include <internal/evsel.h>
 
 static int libperf_print(enum libperf_print_level level,
                         const char *fmt, va_list ap)
 {
        struct perf_cpu_map *cpus;
        struct perf_evlist *evlist;
-       struct perf_evsel *evsel;
+       struct perf_evsel *evsel, *leader;
        struct perf_event_attr attr1 = {
                .type   = PERF_TYPE_SOFTWARE,
                .config = PERF_COUNT_SW_CPU_CLOCK,
        evlist = perf_evlist__new();
        __T("failed to create evlist", evlist);
 
-       evsel = perf_evsel__new(&attr1);
+       evsel = leader = perf_evsel__new(&attr1);
        __T("failed to create evsel1", evsel);
 
        perf_evlist__add(evlist, evsel);
 
        perf_evlist__add(evlist, evsel);
 
+       perf_evlist__set_leader(evlist);
+       __T("failed to set leader", leader->leader == leader);
+       __T("failed to set leader", evsel->leader  == leader);
+
        perf_evlist__set_maps(evlist, cpus, NULL);
 
        err = perf_evlist__open(evlist);
        struct perf_counts_values counts = { .val = 0 };
        struct perf_thread_map *threads;
        struct perf_evlist *evlist;
-       struct perf_evsel *evsel;
+       struct perf_evsel *evsel, *leader;
        struct perf_event_attr attr1 = {
                .type   = PERF_TYPE_SOFTWARE,
                .config = PERF_COUNT_SW_CPU_CLOCK,
        evlist = perf_evlist__new();
        __T("failed to create evlist", evlist);
 
-       evsel = perf_evsel__new(&attr1);
+       evsel = leader = perf_evsel__new(&attr1);
        __T("failed to create evsel1", evsel);
 
        perf_evlist__add(evlist, evsel);
 
        perf_evlist__add(evlist, evsel);
 
+       perf_evlist__set_leader(evlist);
+       __T("failed to set leader", leader->leader == leader);
+       __T("failed to set leader", evsel->leader  == leader);
+
        perf_evlist__set_maps(evlist, NULL, threads);
 
        err = perf_evlist__open(evlist);
        struct perf_counts_values counts = { .val = 0 };
        struct perf_thread_map *threads;
        struct perf_evlist *evlist;
-       struct perf_evsel *evsel;
+       struct perf_evsel *evsel, *leader;
        struct perf_event_attr attr1 = {
                .type     = PERF_TYPE_SOFTWARE,
                .config   = PERF_COUNT_SW_CPU_CLOCK,
        evlist = perf_evlist__new();
        __T("failed to create evlist", evlist);
 
-       evsel = perf_evsel__new(&attr1);
+       evsel = leader = perf_evsel__new(&attr1);
        __T("failed to create evsel1", evsel);
 
        perf_evlist__add(evlist, evsel);
 
        perf_evlist__add(evlist, evsel);
 
+       perf_evlist__set_leader(evlist);
+       __T("failed to set leader", leader->leader == leader);
+       __T("failed to set leader", evsel->leader  == leader);
+
        perf_evlist__set_maps(evlist, NULL, threads);
 
        err = perf_evlist__open(evlist);
 
        evsel = perf_evsel__new(&attr);
        __T("failed to create evsel1", evsel);
+       __T("failed to set leader", evsel->leader == evsel);
 
        perf_evlist__add(evlist, evsel);
 
 
        evsel = perf_evsel__new(&attr);
        __T("failed to create evsel1", evsel);
+       __T("failed to set leader", evsel->leader == evsel);
 
        perf_evlist__add(evlist, evsel);