| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
- #include "test_util.h"
- #include "nimble/nimble_npl.h"
- #define TEST_MEMPOOL_BLOCKS 4
- #define TEST_MEMPOOL_BLOCK_SIZE 128
- static struct ble_npl_mempool s_mempool;
- static os_membuf_t s_mempool_mem[OS_MEMPOOL_SIZE(TEST_MEMPOOL_BLOCKS,
- TEST_MEMPOOL_BLOCK_SIZE)];
- static void *s_memblock[TEST_MEMPOOL_BLOCKS];
- /**
- * Unit test for initializing a mempool.
- *
- * ble_npl_error_t ble_npl_mempool_init(struct ble_npl_mempool *mp, int blocks,
- * int block_size, void *membuf, char *name);
- *
- */
- int test_init(void)
- {
- int err;
- err = ble_npl_mempool_init(NULL,
- TEST_MEMPOOL_BLOCKS,
- TEST_MEMPOOL_BLOCK_SIZE,
- NULL,
- "Null mempool");
- VerifyOrQuit(err, "ble_npl_mempool_init accepted NULL parameters.");
- err = ble_npl_mempool_init(&s_mempool,
- TEST_MEMPOOL_BLOCKS,
- TEST_MEMPOOL_BLOCK_SIZE,
- s_mempool_mem,
- "s_mempool");
- return err;
- }
- /**
- * Test integrity check of a mempool.
- *
- * bool ble_npl_mempool_is_sane(const struct ble_npl_mempool *mp);
- */
- int test_is_sane(void)
- {
- return (ble_npl_mempool_is_sane(&s_mempool)) ? PASS : FAIL;
- }
- /**
- * Test getting a memory block from the pool, putting it back,
- * and checking if it is still valid.
- *
- * void *ble_npl_memblock_get(struct ble_npl_mempool *mp);
- *
- * ble_npl_error_t ble_npl_memblock_put(struct ble_npl_mempool *mp, void *block_addr);
- *
- * int ble_npl_memblock_from(const struct ble_npl_mempool *mp, const void *block_addr);
- */
- int test_stress(void)
- {
- int loops = 3;
- while(loops--)
- {
- for (int i = 0; i < 4; i++)
- {
- s_memblock[i] = ble_npl_memblock_get(&s_mempool);
- VerifyOrQuit(ble_npl_memblock_from(&s_mempool, s_memblock[i]),
- "ble_npl_memblock_get return invalid block.");
- }
- for (int i = 0; i < 4; i++)
- {
- SuccessOrQuit(ble_npl_memblock_put(&s_mempool, s_memblock[i]),
- "ble_npl_memblock_put refused to take valid block.");
- //VerifyOrQuit(!ble_npl_memblock_from(&s_mempool, s_memblock[i]),
- // "Block still valid after ble_npl_memblock_put.");
- }
- }
- return PASS;
- }
- int main(void)
- {
- SuccessOrQuit(test_init(), "Failed: ble_npl_mempool_init");
- SuccessOrQuit(test_is_sane(), "Failed: ble_npl_mempool_is_sane");
- SuccessOrQuit(test_stress(), "Failed: ble_npl_mempool stree test");
- SuccessOrQuit(test_is_sane(), "Failed: ble_npl_mempool_is_sane");
- printf("All tests passed\n");
- return PASS;
- }
|