1*c6bde958SFlorian Lehner // SPDX-License-Identifier: GPL-2.0
2*c6bde958SFlorian Lehner 
3*c6bde958SFlorian Lehner #include <test_progs.h>
4*c6bde958SFlorian Lehner #include "test_hash_large_key.skel.h"
5*c6bde958SFlorian Lehner 
test_hash_large_key(void)6*c6bde958SFlorian Lehner void test_hash_large_key(void)
7*c6bde958SFlorian Lehner {
8*c6bde958SFlorian Lehner 	int err, value = 21, duration = 0, hash_map_fd;
9*c6bde958SFlorian Lehner 	struct test_hash_large_key *skel;
10*c6bde958SFlorian Lehner 
11*c6bde958SFlorian Lehner 	struct bigelement {
12*c6bde958SFlorian Lehner 		int a;
13*c6bde958SFlorian Lehner 		char b[4096];
14*c6bde958SFlorian Lehner 		long long c;
15*c6bde958SFlorian Lehner 	} key;
16*c6bde958SFlorian Lehner 	bzero(&key, sizeof(key));
17*c6bde958SFlorian Lehner 
18*c6bde958SFlorian Lehner 	skel = test_hash_large_key__open_and_load();
19*c6bde958SFlorian Lehner 	if (CHECK(!skel, "skel_open_and_load", "skeleton open/load failed\n"))
20*c6bde958SFlorian Lehner 		return;
21*c6bde958SFlorian Lehner 
22*c6bde958SFlorian Lehner 	hash_map_fd = bpf_map__fd(skel->maps.hash_map);
23*c6bde958SFlorian Lehner 	if (CHECK(hash_map_fd < 0, "bpf_map__fd", "failed\n"))
24*c6bde958SFlorian Lehner 		goto cleanup;
25*c6bde958SFlorian Lehner 
26*c6bde958SFlorian Lehner 	err = test_hash_large_key__attach(skel);
27*c6bde958SFlorian Lehner 	if (CHECK(err, "attach_raw_tp", "err %d\n", err))
28*c6bde958SFlorian Lehner 		goto cleanup;
29*c6bde958SFlorian Lehner 
30*c6bde958SFlorian Lehner 	err = bpf_map_update_elem(hash_map_fd, &key, &value, BPF_ANY);
31*c6bde958SFlorian Lehner 	if (CHECK(err, "bpf_map_update_elem", "errno=%d\n", errno))
32*c6bde958SFlorian Lehner 		goto cleanup;
33*c6bde958SFlorian Lehner 
34*c6bde958SFlorian Lehner 	key.c = 1;
35*c6bde958SFlorian Lehner 	err = bpf_map_lookup_elem(hash_map_fd, &key, &value);
36*c6bde958SFlorian Lehner 	if (CHECK(err, "bpf_map_lookup_elem", "errno=%d\n", errno))
37*c6bde958SFlorian Lehner 		goto cleanup;
38*c6bde958SFlorian Lehner 
39*c6bde958SFlorian Lehner 	CHECK_FAIL(value != 42);
40*c6bde958SFlorian Lehner 
41*c6bde958SFlorian Lehner cleanup:
42*c6bde958SFlorian Lehner 	test_hash_large_key__destroy(skel);
43*c6bde958SFlorian Lehner }
44