diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/nasa_osal/configuration.xml | 74 | ||||
-rw-r--r-- | test/nasa_osal/source/test/test_sequence_001.c | 43 |
2 files changed, 100 insertions, 17 deletions
diff --git a/test/nasa_osal/configuration.xml b/test/nasa_osal/configuration.xml index 7eab9b5a9..732f80946 100644 --- a/test/nasa_osal/configuration.xml +++ b/test/nasa_osal/configuration.xml @@ -44,7 +44,7 @@ THD_WORKING_AREA(wa_test4, TASKS_STACK_SIZE);]]></value> <value>This sequence tests the NASA OSAL over ChibiOS/RT functionalities related to threading.</value>
</description>
<shared_code>
- <value><![CDATA[#include "osapi.h"
+ <value><![CDATA[#include "osapi.h" static void test_thread1(void) { @@ -60,18 +60,25 @@ static void test_thread3(void) { test_emit_token('C'); } -
-static void test_thread4(void) {
-
- test_emit_token('D');
+ +static void test_thread4(void) { + + test_emit_token('D'); } -
-static void test_thread_delete(void) {
+static void delete_handler(void) { + + test_emit_token('C'); +} + +static void test_thread_delete(void) { + + test_emit_token('A'); + (void) OS_TaskInstallDeleteHandler(delete_handler); while (!OS_TaskDeleteCheck()) { - OS_TaskDelay(1); - }
- test_emit_token('A');
+ (void) OS_TaskDelay(1); + } + test_emit_token('B'); }]]></value>
</shared_code>
<cases>
@@ -528,9 +535,9 @@ test_assert_sequence("ABCD", "task order violation");]]></value> <value />
</tags>
<code>
- <value><![CDATA[int32 err;
-
-err = OS_TaskDelete((uint32)-1);
+ <value><![CDATA[int32 err; + +err = OS_TaskDelete((uint32)-1); test_assert(err == OS_ERR_INVALID_ID, "wrong task id not detected");]]></value>
</code>
</step>
@@ -554,10 +561,47 @@ test_assert(err == OS_ERR_INVALID_ID, "wrong task id not detected");]]></value> <value />
</teardown_code>
<local_variables>
- <value />
+ <value><![CDATA[uint32 tid;]]></value>
</local_variables>
</various_code>
- <steps />
+ <steps>
+ <step>
+ <description>
+ <value>Creating a task executing an infinite loop.</value>
+ </description>
+ <tags>
+ <value />
+ </tags>
+ <code>
+ <value><![CDATA[int32 err; + +err = OS_TaskCreate(&tid, + "deletable thread", + test_thread_delete, + (uint32 *)wa_test1, + sizeof wa_test1, + TASKS_BASE_PRIORITY, + 0); +test_assert(err == OS_SUCCESS, "deletable task creation failed");]]></value>
+ </code>
+ </step>
+ <step>
+ <description>
+ <value>Letting the task run for a while then deleting it. A check is performed on the correct execution of the delete handler.</value>
+ </description>
+ <tags>
+ <value />
+ </tags>
+ <code>
+ <value><![CDATA[int32 err;
+
+(void) OS_TaskDelay(50);
+err = OS_TaskDelete(tid);
+test_assert(err == OS_SUCCESS, "delete failed");
+test_assert_sequence("ABC", "events order violation");]]></value>
+ </code>
+ </step>
+ </steps>
</case>
</cases>
</sequence>
diff --git a/test/nasa_osal/source/test/test_sequence_001.c b/test/nasa_osal/source/test/test_sequence_001.c index 7c7829d8a..f8081cde1 100644 --- a/test/nasa_osal/source/test/test_sequence_001.c +++ b/test/nasa_osal/source/test/test_sequence_001.c @@ -61,12 +61,19 @@ static void test_thread4(void) { test_emit_token('D'); } +static void delete_handler(void) { + + test_emit_token('C'); +} + static void test_thread_delete(void) { + test_emit_token('A'); + (void) OS_TaskInstallDeleteHandler(delete_handler); while (!OS_TaskDeleteCheck()) { - OS_TaskDelay(1); + (void) OS_TaskDelay(1); } - test_emit_token('A'); + test_emit_token('B'); }
/****************************************************************************
@@ -498,9 +505,41 @@ static const testcase_t test_001_003 = { * functionality.
*
* <h2>Test Steps</h2>
+ * - Creating a task executing an infinite loop.
+ * - Letting the task run for a while then deleting it. A check is
+ * performed on the correct execution of the delete handler.
+ * .
*/
static void test_001_004_execute(void) {
+ uint32 tid;
+
+ /* Creating a task executing an infinite loop.*/
+ test_set_step(1);
+ {
+ int32 err;
+
+ err = OS_TaskCreate(&tid,
+ "deletable thread",
+ test_thread_delete,
+ (uint32 *)wa_test1,
+ sizeof wa_test1,
+ TASKS_BASE_PRIORITY,
+ 0);
+ test_assert(err == OS_SUCCESS, "deletable task creation failed");
+ }
+
+ /* Letting the task run for a while then deleting it. A check is
+ performed on the correct execution of the delete handler.*/
+ test_set_step(2);
+ {
+ int32 err;
+
+ (void) OS_TaskDelay(50);
+ err = OS_TaskDelete(tid);
+ test_assert(err == OS_SUCCESS, "delete failed");
+ test_assert_sequence("ABC", "events order violation");
+ }
}
static const testcase_t test_001_004 = {
|