aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2016-03-19 10:47:17 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2016-03-19 10:47:17 +0000
commitd29098e7f64c4d15b5414447937bfd09f142f758 (patch)
tree60b1a38771a8143fd2ef71ddf16cf66c6996f215 /test
parentb3fe630e4bab9a0af6f514ba086b26a1183fd333 (diff)
downloadChibiOS-d29098e7f64c4d15b5414447937bfd09f142f758.tar.gz
ChibiOS-d29098e7f64c4d15b5414447937bfd09f142f758.tar.bz2
ChibiOS-d29098e7f64c4d15b5414447937bfd09f142f758.zip
Guarded pools tested.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9137 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'test')
-rw-r--r--test/nasa_osal/patch.xml25
-rw-r--r--test/nil/configuration.xml165
-rw-r--r--test/nil/patch.xml25
-rw-r--r--test/nil/source/test/test_root.c64
-rw-r--r--test/nil/source/test/test_root.h14
-rw-r--r--test/nil/source/test/test_sequence_001.c2
-rw-r--r--test/nil/source/test/test_sequence_001.h2
-rw-r--r--test/nil/source/test/test_sequence_002.c6
-rw-r--r--test/nil/source/test/test_sequence_002.h2
-rw-r--r--test/nil/source/test/test_sequence_003.c2
-rw-r--r--test/nil/source/test/test_sequence_003.h2
-rw-r--r--test/nil/source/test/test_sequence_004.c10
-rw-r--r--test/nil/source/test/test_sequence_004.h2
-rw-r--r--test/nil/source/test/test_sequence_005.c137
-rw-r--r--test/nil/source/test/test_sequence_005.h2
15 files changed, 372 insertions, 88 deletions
diff --git a/test/nasa_osal/patch.xml b/test/nasa_osal/patch.xml
index 879b2ed23..c617cd8f6 100644
--- a/test/nasa_osal/patch.xml
+++ b/test/nasa_osal/patch.xml
@@ -1,5 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<SPC5-Patch version="1.0.0">
<!--It is your patch repository, do not break your XML File.-->
- <files />
+ <files>
+ <file componentId="org.chibios.spc5.components.chibios_unitary_tests_engine" version="1.0.0.qualifier" path="component/lib/include/ch_test.h" user="false">
+ <diff><![CDATA[--- components/chibios_unit_tests_engine_component/lib/include/ch_test.h
++++ components/chibios_unit_tests_engine_component/lib/include/ch_test.h
+@@ -1,5 +1,5 @@
+ /*
+- ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
++ ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.]]></diff>
+ </file>
+ <file componentId="org.chibios.spc5.components.chibios_unitary_tests_engine" version="1.0.0.qualifier" path="component/lib/src/ch_test.c" user="false">
+ <diff><![CDATA[--- components/chibios_unit_tests_engine_component/lib/src/ch_test.c
++++ components/chibios_unit_tests_engine_component/lib/src/ch_test.c
+@@ -1,5 +1,5 @@
+ /*
+- ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
++ ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.]]></diff>
+ </file>
+ </files>
</SPC5-Patch>
diff --git a/test/nil/configuration.xml b/test/nil/configuration.xml
index 7488bf61f..118c70153 100644
--- a/test/nil/configuration.xml
+++ b/test/nil/configuration.xml
@@ -818,9 +818,9 @@ test_assert(msg1 == MSG_OK, "wrong wake-up message");]]></value>
<value />
</tags>
<code>
- <value><![CDATA[test_assert_lock(chMBGetFreeCountI(&mb1) == MB_SIZE, "not empty");
-test_assert_lock(chMBGetUsedCountI(&mb1) == 0, "still full");
-test_assert(mb1.buffer == mb1.wrptr, "write pointer not aligned to base");
+ <value><![CDATA[test_assert_lock(chMBGetFreeCountI(&mb1) == MB_SIZE, "not empty");
+test_assert_lock(chMBGetUsedCountI(&mb1) == 0, "still full");
+test_assert(mb1.buffer == mb1.wrptr, "write pointer not aligned to base");
test_assert(mb1.buffer == mb1.rdptr, "read pointer not aligned to base");]]></value>
</code>
</step>
@@ -927,23 +927,24 @@ test_assert(msg1 == MSG_TIMEOUT, "wrong wake-up message");]]></value>
<value>This sequence tests the ChibiOS/NIL functionalities related to memory pools.</value>
</description>
<shared_code>
- <value><![CDATA[#define MEMORY_POOL_SIZE 4
-
-static uint32_t objects[MEMORY_POOL_SIZE];
+ <value><![CDATA[#define MEMORY_POOL_SIZE 4
+
+static uint32_t objects[MEMORY_POOL_SIZE];
static MEMORYPOOL_DECL(mp1, sizeof (uint32_t), NULL);
-
-static void *null_provider(size_t size, unsigned align) {
-
- (void)size;
- (void)align;
-
- return NULL;
+static GUARDEDMEMORYPOOL_DECL(gmp1, sizeof (uint32_t));
+
+static void *null_provider(size_t size, unsigned align) {
+
+ (void)size;
+ (void)align;
+
+ return NULL;
}]]></value>
</shared_code>
<cases>
<case>
<brief>
- <value>Loading and empting the memory pool.</value>
+ <value>Loading and empting a memory pool.</value>
</brief>
<description>
<value>The memory pool functionality is tested by loading and empting it, all conditions are tested.</value>
@@ -982,7 +983,7 @@ static void *null_provider(size_t size, unsigned align) {
<value />
</tags>
<code>
- <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
+ <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
test_assert(chPoolAlloc(&mp1) != NULL, "list empty");]]></value>
</code>
</step>
@@ -1005,7 +1006,7 @@ static void *null_provider(size_t size, unsigned align) {
<value />
</tags>
<code>
- <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
+ <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
chPoolFree(&mp1, &objects[i]);]]></value>
</code>
</step>
@@ -1017,7 +1018,7 @@ static void *null_provider(size_t size, unsigned align) {
<value />
</tags>
<code>
- <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
+ <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
test_assert(chPoolAlloc(&mp1) != NULL, "list empty");]]></value>
</code>
</step>
@@ -1040,12 +1041,140 @@ static void *null_provider(size_t size, unsigned align) {
<value />
</tags>
<code>
- <value><![CDATA[chPoolObjectInit(&mp1, sizeof (uint32_t), null_provider);
+ <value><![CDATA[chPoolObjectInit(&mp1, sizeof (uint32_t), null_provider);
test_assert(chPoolAlloc(&mp1) == NULL, "provider returned memory");]]></value>
</code>
</step>
</steps>
</case>
+ <case>
+ <brief>
+ <value>Loading and empting a guarded memory pool without waiting.</value>
+ </brief>
+ <description>
+ <value>The memory pool functionality is tested by loading and empting it, all conditions are tested.</value>
+ </description>
+ <condition>
+ <value />
+ </condition>
+ <various_code>
+ <setup_code>
+ <value><![CDATA[chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t));]]></value>
+ </setup_code>
+ <teardown_code>
+ <value />
+ </teardown_code>
+ <local_variables>
+ <value><![CDATA[unsigned i;]]></value>
+ </local_variables>
+ </various_code>
+ <steps>
+ <step>
+ <description>
+ <value>Adding the objects to the pool using chGuardedPoolLoadArray().</value>
+ </description>
+ <tags>
+ <value />
+ </tags>
+ <code>
+ <value><![CDATA[chGuardedPoolLoadArray(&gmp1, objects, MEMORY_POOL_SIZE);]]></value>
+ </code>
+ </step>
+ <step>
+ <description>
+ <value>Emptying the pool using chGuardedPoolAllocTimeout().</value>
+ </description>
+ <tags>
+ <value />
+ </tags>
+ <code>
+ <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
+ test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) != NULL, "list empty");]]></value>
+ </code>
+ </step>
+ <step>
+ <description>
+ <value>Now must be empty.</value>
+ </description>
+ <tags>
+ <value />
+ </tags>
+ <code>
+ <value><![CDATA[test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) == NULL, "list not empty");]]></value>
+ </code>
+ </step>
+ <step>
+ <description>
+ <value>Adding the objects to the pool using chGuardedPoolFree().</value>
+ </description>
+ <tags>
+ <value />
+ </tags>
+ <code>
+ <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
+ chGuardedPoolFree(&gmp1, &objects[i]);]]></value>
+ </code>
+ </step>
+ <step>
+ <description>
+ <value>Emptying the pool using chGuardedPoolAllocTimeout() again.</value>
+ </description>
+ <tags>
+ <value />
+ </tags>
+ <code>
+ <value><![CDATA[for (i = 0; i < MEMORY_POOL_SIZE; i++)
+ test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) != NULL, "list empty");]]></value>
+ </code>
+ </step>
+ <step>
+ <description>
+ <value>Now must be empty again.</value>
+ </description>
+ <tags>
+ <value />
+ </tags>
+ <code>
+ <value><![CDATA[test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) == NULL, "list not empty");]]></value>
+ </code>
+ </step>
+ </steps>
+ </case>
+ <case>
+ <brief>
+ <value>Guarded Memory Pools timeout.</value>
+ </brief>
+ <description>
+ <value>The timeout features for the Guarded Memory Pools is tested.</value>
+ </description>
+ <condition>
+ <value />
+ </condition>
+ <various_code>
+ <setup_code>
+ <value><![CDATA[chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t));]]></value>
+ </setup_code>
+ <teardown_code>
+ <value />
+ </teardown_code>
+ <local_variables>
+ <value />
+ </local_variables>
+ </various_code>
+ <steps>
+ <step>
+ <description>
+ <value>Trying to allocate with 100mS timeout, must fail because the pool is empty.</value>
+ </description>
+ <tags>
+ <value />
+ </tags>
+ <code>
+ <value><![CDATA[test_assert(chGuardedPoolAllocTimeout(&gmp1, MS2ST(100)) == NULL, "list not empty");]]></value>
+ </code>
+ </step>
+ </steps>
+ </case>
</cases>
</sequence>
</sequences>
diff --git a/test/nil/patch.xml b/test/nil/patch.xml
index 879b2ed23..c617cd8f6 100644
--- a/test/nil/patch.xml
+++ b/test/nil/patch.xml
@@ -1,5 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<SPC5-Patch version="1.0.0">
<!--It is your patch repository, do not break your XML File.-->
- <files />
+ <files>
+ <file componentId="org.chibios.spc5.components.chibios_unitary_tests_engine" version="1.0.0.qualifier" path="component/lib/include/ch_test.h" user="false">
+ <diff><![CDATA[--- components/chibios_unit_tests_engine_component/lib/include/ch_test.h
++++ components/chibios_unit_tests_engine_component/lib/include/ch_test.h
+@@ -1,5 +1,5 @@
+ /*
+- ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
++ ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.]]></diff>
+ </file>
+ <file componentId="org.chibios.spc5.components.chibios_unitary_tests_engine" version="1.0.0.qualifier" path="component/lib/src/ch_test.c" user="false">
+ <diff><![CDATA[--- components/chibios_unit_tests_engine_component/lib/src/ch_test.c
++++ components/chibios_unit_tests_engine_component/lib/src/ch_test.c
+@@ -1,5 +1,5 @@
+ /*
+- ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
++ ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.]]></diff>
+ </file>
+ </files>
</SPC5-Patch>
diff --git a/test/nil/source/test/test_root.c b/test/nil/source/test/test_root.c
index f261965cb..1516898c5 100644
--- a/test/nil/source/test/test_root.c
+++ b/test/nil/source/test/test_root.c
@@ -61,38 +61,38 @@ const testcase_t * const *test_suite[] = {
/* Shared code. */
/*===========================================================================*/
-semaphore_t gsem1, gsem2;
-thread_reference_t gtr1;
-
-/*
- * Support thread.
- */
-THD_WORKING_AREA(wa_test_support, 128);
-THD_FUNCTION(test_support, arg) {
-#if CH_CFG_USE_EVENTS == TRUE
- thread_t *tp = (thread_t *)arg;
-#else
- (void)arg;
-#endif
-
- /* Initializing global resources.*/
- chSemObjectInit(&gsem1, 0);
- chSemObjectInit(&gsem2, 0);
-
- while (true) {
- chSysLock();
- if (chSemGetCounterI(&gsem1) < 0)
- chSemSignalI(&gsem1);
- chSemResetI(&gsem2, 0);
- chThdResumeI(&gtr1, MSG_OK);
-#if CH_CFG_USE_EVENTS == TRUE
- chEvtSignalI(tp, 0x55);
-#endif
- chSchRescheduleS();
- chSysUnlock();
-
- chThdSleepMilliseconds(250);
- }
+semaphore_t gsem1, gsem2;
+thread_reference_t gtr1;
+
+/*
+ * Support thread.
+ */
+THD_WORKING_AREA(wa_test_support, 128);
+THD_FUNCTION(test_support, arg) {
+#if CH_CFG_USE_EVENTS == TRUE
+ thread_t *tp = (thread_t *)arg;
+#else
+ (void)arg;
+#endif
+
+ /* Initializing global resources.*/
+ chSemObjectInit(&gsem1, 0);
+ chSemObjectInit(&gsem2, 0);
+
+ while (true) {
+ chSysLock();
+ if (chSemGetCounterI(&gsem1) < 0)
+ chSemSignalI(&gsem1);
+ chSemResetI(&gsem2, 0);
+ chThdResumeI(&gtr1, MSG_OK);
+#if CH_CFG_USE_EVENTS == TRUE
+ chEvtSignalI(tp, 0x55);
+#endif
+ chSchRescheduleS();
+ chSysUnlock();
+
+ chThdSleepMilliseconds(250);
+ }
}
/** @} */
diff --git a/test/nil/source/test/test_root.h b/test/nil/source/test/test_root.h
index ce6d8d457..ee0c42d0b 100644
--- a/test/nil/source/test/test_root.h
+++ b/test/nil/source/test/test_root.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -48,12 +48,12 @@ extern "C" {
/* Shared definitions. */
/*===========================================================================*/
-#define TEST_SUITE_NAME "ChibiOS/NIL Test Suite"
-
-extern semaphore_t gsem1, gsem2;
-extern thread_reference_t gtr1;
-extern THD_WORKING_AREA(wa_test_support, 128);
-
+#define TEST_SUITE_NAME "ChibiOS/NIL Test Suite"
+
+extern semaphore_t gsem1, gsem2;
+extern thread_reference_t gtr1;
+extern THD_WORKING_AREA(wa_test_support, 128);
+
THD_FUNCTION(test_support, arg);
#endif /* _SPC5_TEST_ROOT_H_ */
diff --git a/test/nil/source/test/test_sequence_001.c b/test/nil/source/test/test_sequence_001.c
index 858930775..4be1c4785 100644
--- a/test/nil/source/test/test_sequence_001.c
+++ b/test/nil/source/test/test_sequence_001.c
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/nil/source/test/test_sequence_001.h b/test/nil/source/test/test_sequence_001.h
index 9ba5dc4be..83ef96518 100644
--- a/test/nil/source/test/test_sequence_001.h
+++ b/test/nil/source/test/test_sequence_001.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/nil/source/test/test_sequence_002.c b/test/nil/source/test/test_sequence_002.c
index 946b6d05e..bd626683b 100644
--- a/test/nil/source/test/test_sequence_002.c
+++ b/test/nil/source/test/test_sequence_002.c
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -38,8 +38,8 @@
* Shared code.
****************************************************************************/
-#include "ch.h"
-
+#include "ch.h"
+
static semaphore_t sem1;
/****************************************************************************
diff --git a/test/nil/source/test/test_sequence_002.h b/test/nil/source/test/test_sequence_002.h
index b408f96f4..bd7b6c764 100644
--- a/test/nil/source/test/test_sequence_002.h
+++ b/test/nil/source/test/test_sequence_002.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/nil/source/test/test_sequence_003.c b/test/nil/source/test/test_sequence_003.c
index e0ae074e8..b58bd3b69 100644
--- a/test/nil/source/test/test_sequence_003.c
+++ b/test/nil/source/test/test_sequence_003.c
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/nil/source/test/test_sequence_003.h b/test/nil/source/test/test_sequence_003.h
index ca7045528..587acc5de 100644
--- a/test/nil/source/test/test_sequence_003.h
+++ b/test/nil/source/test/test_sequence_003.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/nil/source/test/test_sequence_004.c b/test/nil/source/test/test_sequence_004.c
index 4cddf5fe4..6cf37b289 100644
--- a/test/nil/source/test/test_sequence_004.c
+++ b/test/nil/source/test/test_sequence_004.c
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -38,10 +38,10 @@
* Shared code.
****************************************************************************/
-#define ALLOWED_DELAY MS2ST(5)
-#define MB_SIZE 4
-
-static msg_t mb_buffer[MB_SIZE];
+#define ALLOWED_DELAY MS2ST(5)
+#define MB_SIZE 4
+
+static msg_t mb_buffer[MB_SIZE];
static MAILBOX_DECL(mb1, mb_buffer, MB_SIZE);
/****************************************************************************
diff --git a/test/nil/source/test/test_sequence_004.h b/test/nil/source/test/test_sequence_004.h
index 4e0e48f6a..3ecaa4259 100644
--- a/test/nil/source/test/test_sequence_004.h
+++ b/test/nil/source/test/test_sequence_004.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/test/nil/source/test/test_sequence_005.c b/test/nil/source/test/test_sequence_005.c
index 9d14cfdb6..fa3fc8eab 100644
--- a/test/nil/source/test/test_sequence_005.c
+++ b/test/nil/source/test/test_sequence_005.c
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -29,6 +29,8 @@
*
* <h2>Test Cases</h2>
* - @subpage test_005_001
+ * - @subpage test_005_002
+ * - @subpage test_005_003
* .
*/
@@ -36,17 +38,18 @@
* Shared code.
****************************************************************************/
-#define MEMORY_POOL_SIZE 4
-
-static uint32_t objects[MEMORY_POOL_SIZE];
-static MEMORYPOOL_DECL(mp1, sizeof (uint32_t), NULL);
-
-static void *null_provider(size_t size, unsigned align) {
-
- (void)size;
- (void)align;
-
- return NULL;
+#define MEMORY_POOL_SIZE 4
+
+static uint32_t objects[MEMORY_POOL_SIZE];
+static MEMORYPOOL_DECL(mp1, sizeof (uint32_t), NULL);
+static GUARDEDMEMORYPOOL_DECL(gmp1, sizeof (uint32_t));
+
+static void *null_provider(size_t size, unsigned align) {
+
+ (void)size;
+ (void)align;
+
+ return NULL;
}
/****************************************************************************
@@ -54,7 +57,7 @@ static void *null_provider(size_t size, unsigned align) {
****************************************************************************/
/**
- * @page test_005_001 Loading and empting the memory pool
+ * @page test_005_001 Loading and empting a memory pool
*
* <h2>Description</h2>
* The memory pool functionality is tested by loading and empting it,
@@ -128,12 +131,116 @@ static void test_005_001_execute(void) {
}
static const testcase_t test_005_001 = {
- "Loading and empting the memory pool",
+ "Loading and empting a memory pool",
test_005_001_setup,
NULL,
test_005_001_execute
};
+/**
+ * @page test_005_002 Loading and empting a guarded memory pool without waiting
+ *
+ * <h2>Description</h2>
+ * The memory pool functionality is tested by loading and empting it,
+ * all conditions are tested.
+ *
+ * <h2>Test Steps</h2>
+ * - Adding the objects to the pool using chGuardedPoolLoadArray().
+ * - Emptying the pool using chGuardedPoolAllocTimeout().
+ * - Now must be empty.
+ * - Adding the objects to the pool using chGuardedPoolFree().
+ * - Emptying the pool using chGuardedPoolAllocTimeout() again.
+ * - Now must be empty again.
+ * .
+ */
+
+static void test_005_002_setup(void) {
+ chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t));
+}
+
+static void test_005_002_execute(void) {
+ unsigned i;
+
+ /* Adding the objects to the pool using chGuardedPoolLoadArray().*/
+ test_set_step(1);
+ {
+ chGuardedPoolLoadArray(&gmp1, objects, MEMORY_POOL_SIZE);
+ }
+
+ /* Emptying the pool using chGuardedPoolAllocTimeout().*/
+ test_set_step(2);
+ {
+ for (i = 0; i < MEMORY_POOL_SIZE; i++)
+ test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) != NULL, "list empty");
+ }
+
+ /* Now must be empty.*/
+ test_set_step(3);
+ {
+ test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) == NULL, "list not empty");
+ }
+
+ /* Adding the objects to the pool using chGuardedPoolFree().*/
+ test_set_step(4);
+ {
+ for (i = 0; i < MEMORY_POOL_SIZE; i++)
+ chGuardedPoolFree(&gmp1, &objects[i]);
+ }
+
+ /* Emptying the pool using chGuardedPoolAllocTimeout() again.*/
+ test_set_step(5);
+ {
+ for (i = 0; i < MEMORY_POOL_SIZE; i++)
+ test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) != NULL, "list empty");
+ }
+
+ /* Now must be empty again.*/
+ test_set_step(6);
+ {
+ test_assert(chGuardedPoolAllocTimeout(&gmp1, TIME_IMMEDIATE) == NULL, "list not empty");
+ }
+}
+
+static const testcase_t test_005_002 = {
+ "Loading and empting a guarded memory pool without waiting",
+ test_005_002_setup,
+ NULL,
+ test_005_002_execute
+};
+
+/**
+ * @page test_005_003 Guarded Memory Pools timeout
+ *
+ * <h2>Description</h2>
+ * The timeout features for the Guarded Memory Pools is tested.
+ *
+ * <h2>Test Steps</h2>
+ * - Trying to allocate with 100mS timeout, must fail because the pool
+ * is empty.
+ * .
+ */
+
+static void test_005_003_setup(void) {
+ chGuardedPoolObjectInit(&gmp1, sizeof (uint32_t));
+}
+
+static void test_005_003_execute(void) {
+
+ /* Trying to allocate with 100mS timeout, must fail because the pool
+ is empty.*/
+ test_set_step(1);
+ {
+ test_assert(chGuardedPoolAllocTimeout(&gmp1, MS2ST(100)) == NULL, "list not empty");
+ }
+}
+
+static const testcase_t test_005_003 = {
+ "Guarded Memory Pools timeout",
+ test_005_003_setup,
+ NULL,
+ test_005_003_execute
+};
+
/****************************************************************************
* Exported data.
****************************************************************************/
@@ -143,5 +250,7 @@ static const testcase_t test_005_001 = {
*/
const testcase_t * const test_sequence_005[] = {
&test_005_001,
+ &test_005_002,
+ &test_005_003,
NULL
};
diff --git a/test/nil/source/test/test_sequence_005.h b/test/nil/source/test/test_sequence_005.h
index a6d54f033..4cb8e1db0 100644
--- a/test/nil/source/test/test_sequence_005.h
+++ b/test/nil/source/test/test_sequence_005.h
@@ -1,5 +1,5 @@
/*
- ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
+ ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.