vnet: export header files to build the plugins
[vpp.git] / src / plugins / unittest / pool_test.c
1 /*
2  * Copyright (c) 2021 Dave Barach
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at:
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15
16 #include <vlib/vlib.h>
17
18 static clib_error_t *
19 test_pool_command_fn (vlib_main_t *vm, unformat_input_t *input,
20                       vlib_cli_command_t *cmd)
21 {
22   static int sizes[] = { 3, 31, 2042, 2048 };
23
24   int i, j;
25   u64 *pool;
26   uword this_size;
27
28   for (j = 0; j < ARRAY_LEN (sizes); j++)
29     {
30       this_size = sizes[j];
31
32       pool_init_fixed (pool, this_size);
33
34       i = 0;
35
36       while (pool_free_elts (pool) > 0)
37         {
38           u64 *p __attribute__ ((unused));
39
40           pool_get (pool, p);
41           i++;
42         }
43
44       vlib_cli_output (vm, "allocated %d elts\n", i);
45
46       for (--i; i >= 0; i--)
47         {
48           pool_put_index (pool, i);
49         }
50
51       ALWAYS_ASSERT (pool_free_elts (pool) == this_size);
52     }
53
54   vlib_cli_output (vm, "Test succeeded...\n");
55   return 0;
56 }
57
58 VLIB_CLI_COMMAND (test_pool_command, static) = {
59   .path = "test pool",
60   .short_help = "vppinfra pool.h tests",
61   .function = test_pool_command_fn,
62 };
63
64 /*
65  * fd.io coding-style-patch-verification: ON
66  *
67  * Local Variables:
68  * eval: (c-set-style "gnu")
69  * End:
70  */