From 0bb9b192eb2d0720fecba87dfac3ff7b6350c680 Mon Sep 17 00:00:00 2001 From: Adam Wulkiewicz Date: Fri, 12 Jul 2013 16:45:06 +0000 Subject: [PATCH] [geometry][index]test: shared memory segment created only once to prevent race conditions [SVN r85009] --- .../rtree_interprocess_linear.cpp | 3 +-- .../rtree_interprocess_linear_dyn.cpp | 3 +-- .../rtree_interprocess_quadratic.cpp | 3 +-- .../rtree_interprocess_quadratic_dyn.cpp | 3 +-- .../interprocess/rtree_interprocess_rstar.cpp | 3 +-- .../rtree_interprocess_rstar_dyn.cpp | 3 +-- .../rtree/interprocess/test_interprocess.hpp | 19 ++++++++++++++++++- 7 files changed, 24 insertions(+), 13 deletions(-) diff --git a/index/test/rtree/interprocess/rtree_interprocess_linear.cpp b/index/test/rtree/interprocess/rtree_interprocess_linear.cpp index 1a6077f41..80221ac3f 100644 --- a/index/test/rtree/interprocess/rtree_interprocess_linear.cpp +++ b/index/test/rtree/interprocess/rtree_interprocess_linear.cpp @@ -13,8 +13,7 @@ int test_main(int, char* []) { typedef bg::model::point P2f; - testset::interprocess::modifiers(bgi::linear<32, 8>()); - testset::interprocess::additional(bgi::linear<32, 8>()); + testset::interprocess::modifiers_and_additional(bgi::linear<32, 8>()); return 0; } diff --git a/index/test/rtree/interprocess/rtree_interprocess_linear_dyn.cpp b/index/test/rtree/interprocess/rtree_interprocess_linear_dyn.cpp index 4823bbb57..17717ce31 100644 --- a/index/test/rtree/interprocess/rtree_interprocess_linear_dyn.cpp +++ b/index/test/rtree/interprocess/rtree_interprocess_linear_dyn.cpp @@ -13,8 +13,7 @@ int test_main(int, char* []) { typedef bg::model::point P2f; - testset::interprocess::modifiers(bgi::dynamic_linear(32, 8)); - testset::interprocess::additional(bgi::dynamic_linear(32, 8)); + testset::interprocess::modifiers_and_additional(bgi::dynamic_linear(32, 8)); return 0; } diff --git a/index/test/rtree/interprocess/rtree_interprocess_quadratic.cpp b/index/test/rtree/interprocess/rtree_interprocess_quadratic.cpp index 8a8bea0e8..b4630a172 100644 --- a/index/test/rtree/interprocess/rtree_interprocess_quadratic.cpp +++ b/index/test/rtree/interprocess/rtree_interprocess_quadratic.cpp @@ -13,8 +13,7 @@ int test_main(int, char* []) { typedef bg::model::point P2f; - testset::interprocess::modifiers(bgi::quadratic<32, 8>()); - testset::interprocess::additional(bgi::quadratic<32, 8>()); + testset::interprocess::modifiers_and_additional(bgi::quadratic<32, 8>()); return 0; } diff --git a/index/test/rtree/interprocess/rtree_interprocess_quadratic_dyn.cpp b/index/test/rtree/interprocess/rtree_interprocess_quadratic_dyn.cpp index b7710ef4b..cf935b377 100644 --- a/index/test/rtree/interprocess/rtree_interprocess_quadratic_dyn.cpp +++ b/index/test/rtree/interprocess/rtree_interprocess_quadratic_dyn.cpp @@ -13,8 +13,7 @@ int test_main(int, char* []) { typedef bg::model::point P2f; - testset::interprocess::modifiers(bgi::dynamic_quadratic(32, 8)); - testset::interprocess::additional(bgi::dynamic_quadratic(32, 8)); + testset::interprocess::modifiers_and_additional(bgi::dynamic_quadratic(32, 8)); return 0; } diff --git a/index/test/rtree/interprocess/rtree_interprocess_rstar.cpp b/index/test/rtree/interprocess/rtree_interprocess_rstar.cpp index 8402bb0fc..415a473da 100644 --- a/index/test/rtree/interprocess/rtree_interprocess_rstar.cpp +++ b/index/test/rtree/interprocess/rtree_interprocess_rstar.cpp @@ -13,8 +13,7 @@ int test_main(int, char* []) { typedef bg::model::point P2f; - testset::interprocess::modifiers(bgi::rstar<32, 8>()); - testset::interprocess::additional(bgi::rstar<32, 8>()); + testset::interprocess::modifiers_and_additional(bgi::rstar<32, 8>()); return 0; } diff --git a/index/test/rtree/interprocess/rtree_interprocess_rstar_dyn.cpp b/index/test/rtree/interprocess/rtree_interprocess_rstar_dyn.cpp index 52c81e958..06edc43a8 100644 --- a/index/test/rtree/interprocess/rtree_interprocess_rstar_dyn.cpp +++ b/index/test/rtree/interprocess/rtree_interprocess_rstar_dyn.cpp @@ -13,8 +13,7 @@ int test_main(int, char* []) { typedef bg::model::point P2f; - testset::interprocess::modifiers(bgi::dynamic_rstar(32, 8)); - testset::interprocess::additional(bgi::dynamic_rstar(32, 8)); + testset::interprocess::modifiers_and_additional(bgi::dynamic_rstar(32, 8)); return 0; } diff --git a/index/test/rtree/interprocess/test_interprocess.hpp b/index/test/rtree/interprocess/test_interprocess.hpp index 471f9fa15..7f061b00c 100644 --- a/index/test/rtree/interprocess/test_interprocess.hpp +++ b/index/test/rtree/interprocess/test_interprocess.hpp @@ -81,4 +81,21 @@ void additional(Parameters const& parameters = Parameters()) testset::additional(parameters, shmem_alloc(segment.get_segment_manager())); } -}} \ No newline at end of file +template +void modifiers_and_additional(Parameters const& parameters = Parameters()) +{ + namespace bi = boost::interprocess; + struct shm_remove + { + shm_remove() { bi::shared_memory_object::remove("shmem"); } + ~shm_remove(){ bi::shared_memory_object::remove("shmem"); } + } remover; + + bi::managed_shared_memory segment(bi::create_only, "shmem", 65535); + typedef bi::allocator shmem_alloc; + + testset::modifiers(parameters, shmem_alloc(segment.get_segment_manager())); + testset::additional(parameters, shmem_alloc(segment.get_segment_manager())); +} + +}}