aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexei Starovoitov <ast@kernel.org>2018-01-22 20:46:57 -0500
committerDaniel Borkmann <daniel@iogearbox.net>2018-01-23 12:28:03 -0500
commit1a97cf1fe50340c5e758d7a74419d8f6e8b49ace (patch)
tree52f2e7bd300f04190a571c7d3cfd39ea757fac12
parent35136920e100b85b15b2cfd1505453ba5b6c757f (diff)
selftests/bpf: speedup test_maps
test_hashmap_walk takes very long time on debug kernel with kasan on. Reduce the number of iterations in this test without sacrificing test coverage. Also add printfs as progress indicator. Signed-off-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
-rw-r--r--tools/testing/selftests/bpf/test_maps.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/tools/testing/selftests/bpf/test_maps.c b/tools/testing/selftests/bpf/test_maps.c
index 040356ecc862..f0d2f09898a3 100644
--- a/tools/testing/selftests/bpf/test_maps.c
+++ b/tools/testing/selftests/bpf/test_maps.c
@@ -242,7 +242,7 @@ static void test_hashmap_percpu(int task, void *data)
242 242
243static void test_hashmap_walk(int task, void *data) 243static void test_hashmap_walk(int task, void *data)
244{ 244{
245 int fd, i, max_entries = 100000; 245 int fd, i, max_entries = 1000;
246 long long key, value, next_key; 246 long long key, value, next_key;
247 bool next_key_valid = true; 247 bool next_key_valid = true;
248 248
@@ -931,8 +931,12 @@ static void test_map_large(void)
931 close(fd); 931 close(fd);
932} 932}
933 933
934static void run_parallel(int tasks, void (*fn)(int task, void *data), 934#define run_parallel(N, FN, DATA) \
935 void *data) 935 printf("Fork %d tasks to '" #FN "'\n", N); \
936 __run_parallel(N, FN, DATA)
937
938static void __run_parallel(int tasks, void (*fn)(int task, void *data),
939 void *data)
936{ 940{
937 pid_t pid[tasks]; 941 pid_t pid[tasks];
938 int i; 942 int i;
@@ -972,7 +976,7 @@ static void test_map_stress(void)
972#define DO_UPDATE 1 976#define DO_UPDATE 1
973#define DO_DELETE 0 977#define DO_DELETE 0
974 978
975static void do_work(int fn, void *data) 979static void test_update_delete(int fn, void *data)
976{ 980{
977 int do_update = ((int *)data)[1]; 981 int do_update = ((int *)data)[1];
978 int fd = ((int *)data)[0]; 982 int fd = ((int *)data)[0];
@@ -1012,7 +1016,7 @@ static void test_map_parallel(void)
1012 */ 1016 */
1013 data[0] = fd; 1017 data[0] = fd;
1014 data[1] = DO_UPDATE; 1018 data[1] = DO_UPDATE;
1015 run_parallel(TASKS, do_work, data); 1019 run_parallel(TASKS, test_update_delete, data);
1016 1020
1017 /* Check that key=0 is already there. */ 1021 /* Check that key=0 is already there. */
1018 assert(bpf_map_update_elem(fd, &key, &value, BPF_NOEXIST) == -1 && 1022 assert(bpf_map_update_elem(fd, &key, &value, BPF_NOEXIST) == -1 &&
@@ -1035,7 +1039,7 @@ static void test_map_parallel(void)
1035 1039
1036 /* Now let's delete all elemenets in parallel. */ 1040 /* Now let's delete all elemenets in parallel. */
1037 data[1] = DO_DELETE; 1041 data[1] = DO_DELETE;
1038 run_parallel(TASKS, do_work, data); 1042 run_parallel(TASKS, test_update_delete, data);
1039 1043
1040 /* Nothing should be left. */ 1044 /* Nothing should be left. */
1041 key = -1; 1045 key = -1;