Skip to content

Commit

Permalink
test: verify prealloc result to avoid skipping wrong function execution
Browse files Browse the repository at this point in the history
prealloc might fail in case of pool reopen after transaction abort

Signed-off-by: Tomasz Gromadzki <tomasz.gromadzki@intel.com>
  • Loading branch information
grom72 committed Apr 3, 2023
1 parent 7e92273 commit 2fc7c14
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 13 deletions.
4 changes: 2 additions & 2 deletions src/test/obj_pmalloc_mt/TEST0
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2015-2019, Intel Corporation
# Copyright 2015-2023, Intel Corporation

#
# src/test/obj_pmalloc_mt/TEST0 -- multithreaded allocator test
Expand All @@ -16,6 +16,6 @@ configure_valgrind helgrind force-enable
setup

PMEM_IS_PMEM_FORCE=1 expect_normal_exit\
./obj_pmalloc_mt$EXESUFFIX 32 1000 100 $DIR/testfile
./obj_pmalloc_mt$EXESUFFIX 32 1000 100 $DIR/testfile0

pass
4 changes: 2 additions & 2 deletions src/test/obj_pmalloc_mt/TEST1
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2016-2019, Intel Corporation
# Copyright 2016-2023, Intel Corporation

#
# src/test/obj_pmalloc_mt/TEST1 -- multithreaded allocator test
Expand All @@ -16,6 +16,6 @@ configure_valgrind helgrind force-disable
setup

PMEM_IS_PMEM_FORCE=1 expect_normal_exit\
./obj_pmalloc_mt$EXESUFFIX 32 1000 100 $DIR/testfile
./obj_pmalloc_mt$EXESUFFIX 32 1000 100 $DIR/testfile1

pass
4 changes: 2 additions & 2 deletions src/test/obj_pmalloc_mt/TEST2
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2015-2019, Intel Corporation
# Copyright 2015-2023, Intel Corporation

#
# src/test/obj_pmalloc_mt/TEST2 -- multithreaded allocator test
Expand All @@ -16,6 +16,6 @@ configure_valgrind helgrind force-enable
setup

PMEM_IS_PMEM_FORCE=1 expect_normal_exit\
./obj_pmalloc_mt$EXESUFFIX 4 64 4 $DIR/testfile
./obj_pmalloc_mt$EXESUFFIX 4 64 4 $DIR/testfile2

pass
4 changes: 2 additions & 2 deletions src/test/obj_pmalloc_mt/TEST3
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2015-2019, Intel Corporation
# Copyright 2015-2023, Intel Corporation

#
# src/test/obj_pmalloc_mt/TEST3 -- multithreaded allocator test
Expand All @@ -16,6 +16,6 @@ configure_valgrind drd force-enable
setup

PMEM_IS_PMEM_FORCE=1 expect_normal_exit\
./obj_pmalloc_mt$EXESUFFIX 4 64 4 $DIR/testfile
./obj_pmalloc_mt$EXESUFFIX 4 64 4 $DIR/testfile3

pass
29 changes: 29 additions & 0 deletions src/test/obj_pmalloc_mt/TEST8
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2023, Intel Corporation

#
# src/test/obj_pmalloc_mt/TEST8 -- multithreaded allocator test
# (short) w/ iterations
#

. ../unittest/unittest.sh

require_fs_type pmem
require_test_type short

setup

TEST_FILE_PATH=$DIR/testfile

rm -f $TEST_FILE_PATH

PMEM_IS_PMEM_FORCE=1 expect_normal_exit\
./obj_pmalloc_mt$EXESUFFIX 32 1000 100 $TEST_FILE_PATH

rm $TEST_FILE_PATH

PMEM_IS_PMEM_FORCE=1 expect_normal_exit\
./obj_pmalloc_mt$EXESUFFIX 32 1000 100 $TEST_FILE_PATH

pass
1 change: 1 addition & 0 deletions src/test/obj_pmalloc_mt/err8.log.match
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{obj_pmalloc_mt.c:66 realloc_worker} obj_pmalloc_mt/TEST8: Error: assertion failure: ret (0xffffffffffffffff) == 0 (0x0)
14 changes: 10 additions & 4 deletions src/test/obj_pmalloc_mt/obj_pmalloc_mt.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// SPDX-License-Identifier: BSD-3-Clause
/* Copyright 2015-2020, Intel Corporation */
/* Copyright 2015-2023, Intel Corporation */

/*
* obj_pmalloc_mt.c -- multithreaded test of allocator
Expand Down Expand Up @@ -59,9 +59,12 @@ static void *
realloc_worker(void *arg)
{
struct worker_args *a = arg;
int ret;

for (unsigned i = 0; i < Ops_per_thread; ++i) {
prealloc(a->pop, &a->r->offs[a->idx][i], REALLOC_SIZE, 0, 0);
ret = prealloc(a->pop, &a->r->offs[a->idx][i],
REALLOC_SIZE, 0, 0);
UT_ASSERTeq(ret, 0);
UT_ASSERTne(a->r->offs[a->idx][i], 0);
}

Expand All @@ -85,15 +88,17 @@ static void *
mix_worker(void *arg)
{
struct worker_args *a = arg;
int ret;

/*
* The mix scenario is ran twice to increase the chances of run
* contention.
*/
for (unsigned j = 0; j < MIX_RERUNS; ++j) {
for (unsigned i = 0; i < Ops_per_thread; ++i) {
pmalloc(a->pop, &a->r->offs[a->idx][i],
ret = pmalloc(a->pop, &a->r->offs[a->idx][i],
ALLOC_SIZE, 0, 0);
UT_ASSERTeq(ret, 0);
UT_ASSERTne(a->r->offs[a->idx][i], 0);
}

Expand Down Expand Up @@ -338,7 +343,8 @@ main(int argc, char *argv[])

if (!exists) {
pop = pmemobj_create(argv[4], "TEST", (PMEMOBJ_MIN_POOL) +
(MAX_THREADS * CHUNKSIZE * CHUNKS_PER_THREAD),
(MAX_THREADS * CHUNKSIZE * CHUNKS_PER_THREAD) +
(MAX_THREADS * MAX_OPS_PER_THREAD * REALLOC_SIZE),
0666);

if (pop == NULL)
Expand Down
2 changes: 1 addition & 1 deletion utils/docker/run-build.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2016-2022, Intel Corporation
# Copyright 2016-2023, Intel Corporation

#
# run-build.sh - is called inside a Docker container; prepares the environment
Expand Down

0 comments on commit 2fc7c14

Please sign in to comment.