|
Packit |
b1f7ae |
/*
|
|
Packit |
b1f7ae |
* Copyright (c) 2016-2017, Intel Corporation
|
|
Packit |
b1f7ae |
*
|
|
Packit |
b1f7ae |
* Redistribution and use in source and binary forms, with or without
|
|
Packit |
b1f7ae |
* modification, are permitted provided that the following conditions are met:
|
|
Packit |
b1f7ae |
*
|
|
Packit |
b1f7ae |
* * Redistributions of source code must retain the above copyright notice,
|
|
Packit |
b1f7ae |
* this list of conditions and the following disclaimer.
|
|
Packit |
b1f7ae |
* * Redistributions in binary form must reproduce the above copyright notice,
|
|
Packit |
b1f7ae |
* this list of conditions and the following disclaimer in the documentation
|
|
Packit |
b1f7ae |
* and/or other materials provided with the distribution.
|
|
Packit |
b1f7ae |
* * Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
b1f7ae |
* may be used to endorse or promote products derived from this software
|
|
Packit |
b1f7ae |
* without specific prior written permission.
|
|
Packit |
b1f7ae |
*
|
|
Packit |
b1f7ae |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
b1f7ae |
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
b1f7ae |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
Packit |
b1f7ae |
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
Packit |
b1f7ae |
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
Packit |
b1f7ae |
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
Packit |
b1f7ae |
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
Packit |
b1f7ae |
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
Packit |
b1f7ae |
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
Packit |
b1f7ae |
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
Packit |
b1f7ae |
* POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
b1f7ae |
*/
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
#include "ptunit_threads.h"
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
#include "pt_block_cache.h"
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
#include <string.h>
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
/* A test fixture optionally providing a block cache and automatically freeing
|
|
Packit |
b1f7ae |
* the cache.
|
|
Packit |
b1f7ae |
*/
|
|
Packit |
b1f7ae |
struct bcache_fixture {
|
|
Packit |
b1f7ae |
/* Threading support. */
|
|
Packit |
b1f7ae |
struct ptunit_thrd_fixture thrd;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
/* The cache - it will be freed automatically. */
|
|
Packit |
b1f7ae |
struct pt_block_cache *bcache;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
/* The test fixture initialization and finalization functions. */
|
|
Packit |
b1f7ae |
struct ptunit_result (*init)(struct bcache_fixture *);
|
|
Packit |
b1f7ae |
struct ptunit_result (*fini)(struct bcache_fixture *);
|
|
Packit |
b1f7ae |
};
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
enum {
|
|
Packit |
b1f7ae |
/* The number of entries in fixture-provided caches. */
|
|
Packit |
b1f7ae |
bfix_nentries = 0x10000,
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
#if defined(FEATURE_THREADS)
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
/* The number of additional threads to use for stress testing. */
|
|
Packit |
b1f7ae |
bfix_threads = 3,
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
#endif /* defined(FEATURE_THREADS) */
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
/* The number of iterations in stress testing. */
|
|
Packit |
b1f7ae |
bfix_iterations = 0x10
|
|
Packit |
b1f7ae |
};
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result cfix_init(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
ptu_test(ptunit_thrd_init, &bfix->thrd);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
bfix->bcache = NULL;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result bfix_init(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
ptu_test(cfix_init, bfix);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
bfix->bcache = pt_bcache_alloc(bfix_nentries);
|
|
Packit |
b1f7ae |
ptu_ptr(bfix->bcache);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result bfix_fini(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
int thrd;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
ptu_test(ptunit_thrd_fini, &bfix->thrd);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
for (thrd = 0; thrd < bfix->thrd.nthreads; ++thrd)
|
|
Packit |
b1f7ae |
ptu_int_eq(bfix->thrd.result[thrd], 0);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
pt_bcache_free(bfix->bcache);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result bcache_entry_size(void)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
ptu_uint_eq(sizeof(struct pt_bcache_entry), sizeof(uint32_t));
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result bcache_size(void)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
ptu_uint_le(sizeof(struct pt_block_cache),
|
|
Packit |
b1f7ae |
2 * sizeof(struct pt_bcache_entry));
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result free_null(void)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
pt_bcache_free(NULL);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result add_null(void)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
struct pt_bcache_entry bce;
|
|
Packit |
b1f7ae |
int errcode;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
memset(&bce, 0, sizeof(bce));
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
errcode = pt_bcache_add(NULL, 0ull, bce);
|
|
Packit |
b1f7ae |
ptu_int_eq(errcode, -pte_internal);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result lookup_null(void)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
struct pt_bcache_entry bce;
|
|
Packit |
b1f7ae |
struct pt_block_cache bcache;
|
|
Packit |
b1f7ae |
int errcode;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
errcode = pt_bcache_lookup(&bce, NULL, 0ull);
|
|
Packit |
b1f7ae |
ptu_int_eq(errcode, -pte_internal);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
errcode = pt_bcache_lookup(NULL, &bcache, 0ull);
|
|
Packit |
b1f7ae |
ptu_int_eq(errcode, -pte_internal);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result alloc(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
bfix->bcache = pt_bcache_alloc(0x10000ull);
|
|
Packit |
b1f7ae |
ptu_ptr(bfix->bcache);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result alloc_min(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
bfix->bcache = pt_bcache_alloc(1ull);
|
|
Packit |
b1f7ae |
ptu_ptr(bfix->bcache);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result alloc_too_big(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
bfix->bcache = pt_bcache_alloc(UINT32_MAX + 1ull);
|
|
Packit |
b1f7ae |
ptu_null(bfix->bcache);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result alloc_zero(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
bfix->bcache = pt_bcache_alloc(0ull);
|
|
Packit |
b1f7ae |
ptu_null(bfix->bcache);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result initially_empty(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
uint64_t index;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
for (index = 0; index < bfix_nentries; ++index) {
|
|
Packit |
b1f7ae |
struct pt_bcache_entry bce;
|
|
Packit |
b1f7ae |
int status;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
memset(&bce, 0xff, sizeof(bce));
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
status = pt_bcache_lookup(&bce, bfix->bcache, index);
|
|
Packit |
b1f7ae |
ptu_int_eq(status, 0);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
status = pt_bce_is_valid(bce);
|
|
Packit |
b1f7ae |
ptu_int_eq(status, 0);
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result add_bad_index(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
struct pt_bcache_entry bce;
|
|
Packit |
b1f7ae |
int errcode;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
memset(&bce, 0, sizeof(bce));
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
errcode = pt_bcache_add(bfix->bcache, bfix_nentries, bce);
|
|
Packit |
b1f7ae |
ptu_int_eq(errcode, -pte_internal);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result lookup_bad_index(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
struct pt_bcache_entry bce;
|
|
Packit |
b1f7ae |
int errcode;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
errcode = pt_bcache_lookup(&bce, bfix->bcache, bfix_nentries);
|
|
Packit |
b1f7ae |
ptu_int_eq(errcode, -pte_internal);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result add(struct bcache_fixture *bfix, uint64_t index)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
struct pt_bcache_entry bce, exp;
|
|
Packit |
b1f7ae |
int errcode;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
memset(&bce, 0xff, sizeof(bce));
|
|
Packit |
b1f7ae |
memset(&exp, 0x00, sizeof(exp));
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
exp.ninsn = 1;
|
|
Packit |
b1f7ae |
exp.displacement = 7;
|
|
Packit |
b1f7ae |
exp.mode = ptem_64bit;
|
|
Packit |
b1f7ae |
exp.qualifier = ptbq_decode;
|
|
Packit |
b1f7ae |
exp.isize = 7;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
errcode = pt_bcache_add(bfix->bcache, index, exp);
|
|
Packit |
b1f7ae |
ptu_int_eq(errcode, 0);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
errcode = pt_bcache_lookup(&bce, bfix->bcache, index);
|
|
Packit |
b1f7ae |
ptu_int_eq(errcode, 0);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
ptu_uint_eq(bce.ninsn, exp.ninsn);
|
|
Packit |
b1f7ae |
ptu_int_eq(bce.displacement, exp.displacement);
|
|
Packit |
b1f7ae |
ptu_uint_eq(pt_bce_exec_mode(bce), pt_bce_exec_mode(exp));
|
|
Packit |
b1f7ae |
ptu_uint_eq(pt_bce_qualifier(bce), pt_bce_qualifier(exp));
|
|
Packit |
b1f7ae |
ptu_uint_eq(bce.isize, exp.isize);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static int worker(void *arg)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
struct pt_bcache_entry exp;
|
|
Packit |
b1f7ae |
struct pt_block_cache *bcache;
|
|
Packit |
b1f7ae |
uint64_t iter, index;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
bcache = arg;
|
|
Packit |
b1f7ae |
if (!bcache)
|
|
Packit |
b1f7ae |
return -pte_internal;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
memset(&exp, 0x00, sizeof(exp));
|
|
Packit |
b1f7ae |
exp.ninsn = 5;
|
|
Packit |
b1f7ae |
exp.displacement = 28;
|
|
Packit |
b1f7ae |
exp.mode = ptem_64bit;
|
|
Packit |
b1f7ae |
exp.qualifier = ptbq_again;
|
|
Packit |
b1f7ae |
exp.isize = 3;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
for (index = 0; index < bfix_nentries; ++index) {
|
|
Packit |
b1f7ae |
for (iter = 0; iter < bfix_iterations; ++iter) {
|
|
Packit |
b1f7ae |
struct pt_bcache_entry bce;
|
|
Packit |
b1f7ae |
int errcode;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
memset(&bce, 0xff, sizeof(bce));
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
errcode = pt_bcache_lookup(&bce, bcache, index);
|
|
Packit |
b1f7ae |
if (errcode < 0)
|
|
Packit |
b1f7ae |
return errcode;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
if (!pt_bce_is_valid(bce)) {
|
|
Packit |
b1f7ae |
errcode = pt_bcache_add(bcache, index, exp);
|
|
Packit |
b1f7ae |
if (errcode < 0)
|
|
Packit |
b1f7ae |
return errcode;
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
errcode = pt_bcache_lookup(&bce, bcache, index);
|
|
Packit |
b1f7ae |
if (errcode < 0)
|
|
Packit |
b1f7ae |
return errcode;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
if (!pt_bce_is_valid(bce))
|
|
Packit |
b1f7ae |
return -pte_nosync;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
if (bce.ninsn != exp.ninsn)
|
|
Packit |
b1f7ae |
return -pte_nosync;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
if (bce.displacement != exp.displacement)
|
|
Packit |
b1f7ae |
return -pte_nosync;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
if (pt_bce_exec_mode(bce) != pt_bce_exec_mode(exp))
|
|
Packit |
b1f7ae |
return -pte_nosync;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
if (pt_bce_qualifier(bce) != pt_bce_qualifier(exp))
|
|
Packit |
b1f7ae |
return -pte_nosync;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
if (bce.isize != exp.isize)
|
|
Packit |
b1f7ae |
return -pte_nosync;
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return 0;
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
static struct ptunit_result stress(struct bcache_fixture *bfix)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
int errcode;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
#if defined(FEATURE_THREADS)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
int thrd;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
for (thrd = 0; thrd < bfix_threads; ++thrd)
|
|
Packit |
b1f7ae |
ptu_test(ptunit_thrd_create, &bfix->thrd, worker,
|
|
Packit |
b1f7ae |
bfix->bcache);
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
#endif /* defined(FEATURE_THREADS) */
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
errcode = worker(bfix->bcache);
|
|
Packit |
b1f7ae |
ptu_int_eq(errcode, 0);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
return ptu_passed();
|
|
Packit |
b1f7ae |
}
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
int main(int argc, char **argv)
|
|
Packit |
b1f7ae |
{
|
|
Packit |
b1f7ae |
struct bcache_fixture bfix, cfix;
|
|
Packit |
b1f7ae |
struct ptunit_suite suite;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
bfix.init = bfix_init;
|
|
Packit |
b1f7ae |
bfix.fini = bfix_fini;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
cfix.init = cfix_init;
|
|
Packit |
b1f7ae |
cfix.fini = bfix_fini;
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
suite = ptunit_mk_suite(argc, argv);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
ptu_run(suite, bcache_entry_size);
|
|
Packit |
b1f7ae |
ptu_run(suite, bcache_size);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
ptu_run(suite, free_null);
|
|
Packit |
b1f7ae |
ptu_run(suite, add_null);
|
|
Packit |
b1f7ae |
ptu_run(suite, lookup_null);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
ptu_run_f(suite, alloc, cfix);
|
|
Packit |
b1f7ae |
ptu_run_f(suite, alloc_min, cfix);
|
|
Packit |
b1f7ae |
ptu_run_f(suite, alloc_too_big, cfix);
|
|
Packit |
b1f7ae |
ptu_run_f(suite, alloc_zero, cfix);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
ptu_run_f(suite, initially_empty, bfix);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
ptu_run_f(suite, add_bad_index, bfix);
|
|
Packit |
b1f7ae |
ptu_run_f(suite, lookup_bad_index, bfix);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
ptu_run_fp(suite, add, bfix, 0ull);
|
|
Packit |
b1f7ae |
ptu_run_fp(suite, add, bfix, bfix_nentries - 1ull);
|
|
Packit |
b1f7ae |
ptu_run_f(suite, stress, bfix);
|
|
Packit |
b1f7ae |
|
|
Packit |
b1f7ae |
ptunit_report(&suite);
|
|
Packit |
b1f7ae |
return suite.nr_fails;
|
|
Packit |
b1f7ae |
}
|