summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/shm_du_map.c3
-rw-r--r--src/lib/tests/CMakeLists.txt1
-rw-r--r--src/lib/tests/shm_du_map_test.c194
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;
-}