Commit 7d2c6cfc authored by John Fastabend's avatar John Fastabend Committed by Daniel Borkmann
Browse files

bpf: use --cgroup in test_suite if supplied



If the user supplies a --cgroup value in the arguments when running
the test_suite go ahaead and run the self tests there. I use this
to test with multiple cgroup users.

Signed-off-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent b5d83fec
Loading
Loading
Loading
Loading
+31 −22
Original line number Diff line number Diff line
@@ -1345,9 +1345,9 @@ static int populate_progs(char *bpf_file)
	return 0;
}

static int __test_suite(char *bpf_file)
static int __test_suite(int cg_fd, char *bpf_file)
{
	int cg_fd, err;
	int err, cleanup = cg_fd;

	err = populate_progs(bpf_file);
	if (err < 0) {
@@ -1355,6 +1355,7 @@ static int __test_suite(char *bpf_file)
		return err;
	}

	if (cg_fd < 0) {
		if (setup_cgroup_environment()) {
			fprintf(stderr, "ERROR: cgroup env failed\n");
			return -EINVAL;
@@ -1372,6 +1373,7 @@ static int __test_suite(char *bpf_file)
			fprintf(stderr, "ERROR: failed to join cgroup\n");
			return -EINVAL;
		}
	}

	/* Tests basic commands and APIs with range of iov values */
	txmsg_start = txmsg_end = 0;
@@ -1391,20 +1393,24 @@ static int __test_suite(char *bpf_file)

out:
	printf("Summary: %i PASSED %i FAILED\n", passed, failed);
	if (cleanup < 0) {
		cleanup_cgroup_environment();
		close(cg_fd);
	}
	return err;
}

static int test_suite(void)
static int test_suite(int cg_fd)
{
	int err;

	err = __test_suite(BPF_SOCKMAP_FILENAME);
	err = __test_suite(cg_fd, BPF_SOCKMAP_FILENAME);
	if (err)
		goto out;
	err = __test_suite(BPF_SOCKHASH_FILENAME);
	err = __test_suite(cg_fd, BPF_SOCKHASH_FILENAME);
out:
	if (cg_fd > -1)
		close(cg_fd);
	return err;
}

@@ -1417,7 +1423,7 @@ int main(int argc, char **argv)
	int test = PING_PONG;

	if (argc < 2)
		return test_suite();
		return test_suite(-1);

	while ((opt = getopt_long(argc, argv, ":dhvc:r:i:l:t:",
				  long_options, &longindex)) != -1) {
@@ -1483,6 +1489,9 @@ int main(int argc, char **argv)
		}
	}

	if (argc <= 3 && cg_fd)
		return test_suite(cg_fd);

	if (!cg_fd) {
		fprintf(stderr, "%s requires cgroup option: --cgroup <path>\n",
			argv[0]);