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 = {
 | 
