lkml.org 
[lkml]   [2016]   [Apr]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 03/29] radix tree test suite: Add tests for radix_tree_locate_item()
    Date
    Fairly simple tests; add various items to the tree, then make sure we
    can find them again. Also check that a pointer that we know isn't in
    the tree is not found.

    Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
    Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com>
    ---
    tools/testing/radix-tree/linux/kernel.h | 3 +++
    tools/testing/radix-tree/main.c | 41 +++++++++++++++++++++++++++++++++
    2 files changed, 44 insertions(+)

    diff --git a/tools/testing/radix-tree/linux/kernel.h b/tools/testing/radix-tree/linux/kernel.h
    index 6d0cdf6..76a88f3 100644
    --- a/tools/testing/radix-tree/linux/kernel.h
    +++ b/tools/testing/radix-tree/linux/kernel.h
    @@ -9,6 +9,9 @@

    #include "../../include/linux/compiler.h"

    +#define CONFIG_SHMEM
    +#define CONFIG_SWAP
    +
    #ifndef NULL
    #define NULL 0
    #endif
    diff --git a/tools/testing/radix-tree/main.c b/tools/testing/radix-tree/main.c
    index 0e83cad..71c5272 100644
    --- a/tools/testing/radix-tree/main.c
    +++ b/tools/testing/radix-tree/main.c
    @@ -232,10 +232,51 @@ void copy_tag_check(void)
    item_kill_tree(&tree);
    }

    +void __locate_check(struct radix_tree_root *tree, unsigned long index)
    +{
    + struct item *item;
    + unsigned long index2;
    +
    + item_insert(tree, index);
    + item = item_lookup(tree, index);
    + index2 = radix_tree_locate_item(tree, item);
    + if (index != index2) {
    + printf("index %ld inserted; found %ld\n",
    + index, index2);
    + abort();
    + }
    +}
    +
    +static void locate_check(void)
    +{
    + RADIX_TREE(tree, GFP_KERNEL);
    + unsigned long offset, index;
    +
    + for (offset = 0; offset < (1 << 3); offset++) {
    + for (index = 0; index < (1UL << 5); index++) {
    + __locate_check(&tree, index + offset);
    + }
    + if (radix_tree_locate_item(&tree, &tree) != -1)
    + abort();
    +
    + item_kill_tree(&tree);
    + }
    +
    + if (radix_tree_locate_item(&tree, &tree) != -1)
    + abort();
    + __locate_check(&tree, -1);
    + if (radix_tree_locate_item(&tree, &tree) != -1)
    + abort();
    + item_kill_tree(&tree);
    +}
    +
    static void single_thread_tests(void)
    {
    int i;

    + printf("starting single_thread_tests: %d allocated\n", nr_allocated);
    + locate_check();
    + printf("after locate_check: %d allocated\n", nr_allocated);
    tag_check();
    printf("after tag_check: %d allocated\n", nr_allocated);
    gang_check();
    --
    2.8.0.rc3
    \
     
     \ /
      Last update: 2016-04-14 16:41    [W:4.160 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site