diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/shm_du_map.c | 3 | ||||
-rw-r--r-- | src/lib/tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/lib/tests/shm_du_map_test.c | 194 |
3 files changed, 1 insertions, 197 deletions
diff --git a/src/lib/shm_du_map.c b/src/lib/shm_du_map.c index 56062c9d..71c15731 100644 --- a/src/lib/shm_du_map.c +++ b/src/lib/shm_du_map.c @@ -328,9 +328,8 @@ int shm_release_du_buff(struct shm_du_map * dum, size_t idx) long blocks = 0; - /* FIXME: this is crap for the test */ if (idx > SHM_BLOCKS_IN_MAP) - idx = *dum->ptr_tail; + return -1; pthread_mutex_lock(dum->shm_mutex); diff --git a/src/lib/tests/CMakeLists.txt b/src/lib/tests/CMakeLists.txt index 7d848dd5..e905c389 100644 --- a/src/lib/tests/CMakeLists.txt +++ b/src/lib/tests/CMakeLists.txt @@ -5,7 +5,6 @@ create_test_sourcelist(${PARENT_DIR}_tests test_suite.c # Add new tests here bitmap_test.c du_buff_test.c - shm_du_map_test.c ) add_executable(${PARENT_DIR}_test EXCLUDE_FROM_ALL ${${PARENT_DIR}_tests}) diff --git a/src/lib/tests/shm_du_map_test.c b/src/lib/tests/shm_du_map_test.c deleted file mode 100644 index 55938a62..00000000 --- a/src/lib/tests/shm_du_map_test.c +++ /dev/null @@ -1,194 +0,0 @@ -/* - * Ouroboros - Copyright (C) 2016 - * - * Test of the Shared Memory Map - * - * Dimitri Staessens <dimitri.staessens@intec.ugent.be> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -#include <ouroboros/config.h> -#include <ouroboros/shm_du_map.h> -#include <sys/types.h> -#include <stdlib.h> -#include <time.h> -#include <sys/mman.h> -#include <pthread.h> - -#define OUROBOROS_PREFIX "lib/test/shm_du_map_test" - -#include <ouroboros/logs.h> - -#define SIZE_OF_DU_BUFF 32 -#define TEST_BUFF_SIZE (SHM_DU_BUFF_BLOCK_SIZE - SIZE_OF_DU_BUFF) - -#define MAX(a,b) (a > b ? a : b) -#define MIN(a,b) (a < b ? a : b) - -int sync; - -void * produce() -{ - struct shm_du_map * dum; - long test_buf_size = 0; - uint8_t * test_values; - int headspace; - int tailspace; - long i; - long bytes_written = 0; - struct timespec starttime; - struct timespec stoptime; - double elapsed; - - dum = shm_du_map_open(); - if (dum == NULL) { - LOG_ERR("Could not open shm."); - return (void *)-1; - } - - srand(time(NULL)); - - test_values = malloc (sizeof *test_values * TEST_BUFF_SIZE); - for (i = 0; i < TEST_BUFF_SIZE; i++) - test_values[i] = 170; - - clock_gettime(CLOCK_MONOTONIC, &starttime); - for (i = 1; i < 16 * SHM_BLOCKS_IN_MAP; i++) { - size_t len; - - test_buf_size = TEST_BUFF_SIZE; - - headspace = 32; - tailspace = 8; - - len = test_buf_size - (headspace + tailspace); - - if (shm_create_du_buff(dum, - test_buf_size, - headspace, - test_values, - len) < 0) { - continue; - } - - bytes_written += len; - } - - sync = -2; - - clock_gettime(CLOCK_MONOTONIC, &stoptime); - elapsed =(stoptime.tv_sec + stoptime.tv_nsec / 1000000000.0) - - (starttime.tv_sec + starttime.tv_nsec / 1000000000.0); - LOG_INFO("%ld bytes written in %.1lf ms = %lf Gb/s", - bytes_written, - elapsed * 1000.0, - bytes_written * 8 / (elapsed * 1000000000)); - - free(test_values); - - sync = -1; - - shm_du_map_close(dum); - - return 0; -} - -void * consume() -{ - struct shm_du_map * dum; - struct timespec ts; - - ts.tv_sec = 0; - ts.tv_nsec = 1000000; - - dum = shm_du_map_open(); - - if (dum == NULL) { - LOG_ERR("Could not open shm."); - return (void *)-1; - } - - while (true) { - shm_release_du_buff(dum, 1823429173941); - if (sync) - break; - } - nanosleep(&ts, NULL); - - - shm_du_map_close(dum); - - return 0; -} - -int shm_du_map_test(int argc, char ** argv) -{ - struct shm_du_map * dum; - int res1; - pthread_t producer; - pthread_t consumer; - - /* test 1 */ - - LOG_INFO("starting create/close test."); - - dum = shm_du_map_create(); - - if (dum == NULL) { - LOG_ERR("Could not open shm (dum)."); - return -1; - } - - shm_du_map_destroy(dum); - - LOG_INFO("done."); - - /* test 2 */ - - LOG_INFO("starting sequential test."); - - dum = shm_du_map_create(); - - res1 = (int) pthread_create(&producer, NULL, produce, NULL); - pthread_join(producer, NULL); - - pthread_create(&consumer, NULL, consume, NULL); - pthread_join(consumer, NULL); - - shm_du_map_destroy(dum); - - LOG_INFO("done."); - - /* test 3 */ - - LOG_INFO("starting concurrency test."); - - sync = 0; - - dum = shm_du_map_create(); - - res1 = (int) pthread_create(&producer, NULL, produce, NULL); - pthread_create(&consumer, NULL, consume, NULL); - - pthread_join(producer, NULL); - pthread_join(consumer, NULL); - - shm_du_map_destroy(dum); - - LOG_INFO("done."); - - return res1; -} |