[PATCH 10/10] sptests/sp20: Use printer task
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Jun 21 13:57:55 UTC 2016
This avoids test failures due to slow output devices.
---
testsuites/sptests/sp20/init.c | 30 +++++++++++++++++--
testsuites/sptests/sp20/sp20.scn | 36 +++++++++++-----------
testsuites/sptests/sp20/system.h | 4 ++-
testsuites/sptests/sp20/task1.c | 64 ++++++++++++++++++++++++----------------
4 files changed, 88 insertions(+), 46 deletions(-)
diff --git a/testsuites/sptests/sp20/init.c b/testsuites/sptests/sp20/init.c
index e88c6c2..d3bdab8 100644
--- a/testsuites/sptests/sp20/init.c
+++ b/testsuites/sptests/sp20/init.c
@@ -28,14 +28,40 @@
const char rtems_test_name[] = "SP 20";
+rtems_printer rtems_test_printer;
+
+#define BUFFER_COUNT 20
+
+#define BUFFER_SIZE 100
+
+static rtems_printer_task_context printer_task;
+
+static long buffers[ BUFFER_COUNT ][ BUFFER_SIZE / sizeof(long) ];
+
+void end_of_test( void )
+{
+ rtems_test_printf( TEST_END_STRING );
+ rtems_printer_task_drain( &printer_task );
+ rtems_test_exit( 0 );
+}
+
rtems_task Init(
rtems_task_argument argument
)
{
- uint32_t index;
+ int error;
+ uint32_t index;
rtems_status_code status;
- TEST_BEGIN();
+ rtems_printer_task_set_priority( &printer_task, 254 );
+ rtems_printer_task_set_file_descriptor( &printer_task, 1 );
+ rtems_printer_task_set_buffer_table( &printer_task, &buffers[ 0 ][ 0 ] );
+ rtems_printer_task_set_buffer_count( &printer_task, BUFFER_COUNT );
+ rtems_printer_task_set_buffer_size( &printer_task, BUFFER_SIZE );
+ error = rtems_print_printer_task( &rtems_test_printer, &printer_task );
+ rtems_test_assert( error == 0 );
+
+ rtems_test_printf( TEST_BEGIN_STRING );
Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' );
Task_name[ 2 ] = rtems_build_name( 'T', 'A', '2', ' ' );
diff --git a/testsuites/sptests/sp20/sp20.scn b/testsuites/sptests/sp20/sp20.scn
index d0726f7..f3d7afb 100644
--- a/testsuites/sptests/sp20/sp20.scn
+++ b/testsuites/sptests/sp20/sp20.scn
@@ -1,40 +1,40 @@
-*** TEST 20 ***
+*** BEGIN OF TEST SP 20 ***
TA1 - rtems_rate_monotonic_create id = 0x42010001
TA1 - rtems_rate_monotonic_ident id = 0x42010001
-TA1 - (0x2c010001) period 2
+TA1 - (0x42010001) period 2
TA2 - rtems_rate_monotonic_create id = 0x42010002
TA2 - rtems_rate_monotonic_ident id = 0x42010002
-TA2 - (0x2c010002) period 2
+TA2 - (0x42010002) period 2
TA3 - rtems_rate_monotonic_create id = 0x42010003
TA3 - rtems_rate_monotonic_ident id = 0x42010003
-TA3 - (0x2c010003) period 2
+TA3 - (0x42010003) period 2
TA4 - rtems_rate_monotonic_create id = 0x42010004
TA4 - rtems_rate_monotonic_ident id = 0x42010004
-TA4 - (0x2c010004) period 2
+TA4 - (0x42010004) period 2
TA5 - rtems_rate_monotonic_create id = 0x42010005
TA5 - rtems_rate_monotonic_ident id = 0x42010005
-TA5 - (0x2c010005) period 100
+TA5 - (0x42010005) period 100
TA6 - rtems_rate_monotonic_create id = 0x42010006
TA6 - rtems_rate_monotonic_ident id = 0x42010006
-TA6 - (0x2c010006) period 0
+TA6 - (0x42010006) period 0
TA5 - PERIODS CHECK OK (1)
TA5 - PERIODS CHECK OK (2)
TA5 - PERIODS CHECK OK (3)
TA5 - PERIODS CHECK OK (4)
TA5 - PERIODS CHECK OK (5)
-TA6 - Actual: 10 Expected: 10 - OK
-TA6 - Actual: 20 Expected: 20 - OK
-TA6 - Actual: 30 Expected: 30 - OK
-TA6 - Actual: 40 Expected: 40 - OK
-TA6 - Actual: 50 Expected: 50 - OK
-TA6 - Actual: 60 Expected: 60 - OK
-TA6 - Actual: 70 Expected: 70 - OK
-TA6 - Actual: 80 Expected: 80 - OK
-TA6 - Actual: 90 Expected: 90 - OK
-TA6 - Actual: 100 Expected: 100 - OK
+TA6 - Actual: 10 Expected: 10 - OK
+TA6 - Actual: 20 Expected: 20 - OK
+TA6 - Actual: 30 Expected: 30 - OK
+TA6 - Actual: 40 Expected: 40 - OK
+TA6 - Actual: 50 Expected: 50 - OK
+TA6 - Actual: 60 Expected: 60 - OK
+TA6 - Actual: 70 Expected: 70 - OK
+TA6 - Actual: 80 Expected: 80 - OK
+TA6 - Actual: 90 Expected: 90 - OK
+TA6 - Actual: 100 Expected: 100 - OK
TA5 - PERIODS CHECK OK (6)
TA5 - PERIODS CHECK OK (7)
TA5 - PERIODS CHECK OK (8)
TA5 - PERIODS CHECK OK (9)
TA5 - PERIODS CHECK OK (10)
-*** END OF TEST 20 ***
+*** END OF TEST SP 20 ***
diff --git a/testsuites/sptests/sp20/system.h b/testsuites/sptests/sp20/system.h
index 33d07f7..dfefe4b 100644
--- a/testsuites/sptests/sp20/system.h
+++ b/testsuites/sptests/sp20/system.h
@@ -38,7 +38,7 @@ void Get_all_counters( void );
#define CONFIGURE_MICROSECONDS_PER_TICK 100000
-#define CONFIGURE_MAXIMUM_TASKS 7
+#define CONFIGURE_MAXIMUM_TASKS 8
#define CONFIGURE_MAXIMUM_PERIODS 10
#define CONFIGURE_INIT_TASK_PRIORITY 10
@@ -58,4 +58,6 @@ TEST_EXTERN struct counters Count; /* iteration counters */
TEST_EXTERN struct counters Temporary_count;
extern rtems_task_priority Priorities[ 7 ];
+void end_of_test( void );
+
/* end of include file */
diff --git a/testsuites/sptests/sp20/task1.c b/testsuites/sptests/sp20/task1.c
index 6edfd23..497b4f0 100644
--- a/testsuites/sptests/sp20/task1.c
+++ b/testsuites/sptests/sp20/task1.c
@@ -25,6 +25,19 @@ uint32_t Periods[7] = { 0, 2, 2, 2, 2, 100, 0 };
uint32_t Iterations[7] = { 0, 50, 50, 50, 50, 1, TA6_ITERATIONS };
rtems_task_priority Priorities[7] = { 0, 1, 1, 3, 4, 5, 1 };
+static char *name( size_t i, char buf[ 4 ] )
+{
+ rtems_name_to_characters(
+ Task_name[ i ],
+ &buf[ 0 ],
+ &buf[ 1 ],
+ &buf[ 2 ],
+ &buf[ 3 ]
+ );
+ buf[ 3 ] = '\0';
+ return &buf[ 0 ];
+}
+
rtems_task Task_1_through_6(
rtems_task_argument argument
)
@@ -35,22 +48,26 @@ rtems_task Task_1_through_6(
int pass;
uint32_t failed;
rtems_status_code status;
+ char buf[ 4 ];
status = rtems_rate_monotonic_create( argument, &rmid );
directive_failed( status, "rtems_rate_monotonic_create" );
- put_name( Task_name[ argument ], FALSE );
- printf( "- rtems_rate_monotonic_create id = 0x%08" PRIxrtems_id "\n", rmid );
+ rtems_test_printf(
+ "%s - rtems_rate_monotonic_create id = 0x%08" PRIxrtems_id "\n",
+ name( argument, buf ),
+ rmid
+ );
status = rtems_rate_monotonic_ident( argument, &test_rmid );
directive_failed( status, "rtems_rate_monotonic_ident" );
- put_name( Task_name[ argument ], FALSE );
- printf(
- "- rtems_rate_monotonic_ident id = 0x%08" PRIxrtems_id "\n",
+ rtems_test_printf(
+ "%s - rtems_rate_monotonic_ident id = 0x%08" PRIxrtems_id "\n",
+ name( argument, buf ),
test_rmid
);
if ( rmid != test_rmid ) {
- printf(
+ rtems_test_printf(
"RMID's DO NOT MATCH (0x%" PRIxrtems_id " and 0x%" PRIxrtems_id ")\n",
rmid,
test_rmid
@@ -58,9 +75,9 @@ rtems_task Task_1_through_6(
rtems_test_exit( 0 );
}
- put_name( Task_name[ argument ], FALSE );
- printf(
- "- (0x%08" PRIxrtems_id ") period %" PRIu32 "\n",
+ rtems_test_printf(
+ "%s - (0x%08" PRIxrtems_id ") period %" PRIu32 "\n",
+ name( argument, buf ),
rmid,
Periods[ argument ]
);
@@ -98,12 +115,12 @@ rtems_task Task_1_through_6(
for( index = 1 ; index <= 4 ; index++ ) {
if ( Temporary_count.count[ index ] != Iterations[ index ] ) {
- puts_nocr( "FAIL -- " );
- put_name ( Task_name[ index ], FALSE );
- printf ( " Actual=%" PRIu32 ", Expected=%" PRIu32 "\n",
- Temporary_count.count[ index ],
- Iterations[ index ]
- );
+ rtems_test_printf(
+ "%s - FAIL - Actual=%" PRIu32 ", Expected=%" PRIu32 "\n",
+ name( index, buf ),
+ Temporary_count.count[ index ],
+ Iterations[ index ]
+ );
failed += 1;
}
}
@@ -113,13 +130,10 @@ rtems_task Task_1_through_6(
pass += 1;
- printf( "TA5 - PERIODS CHECK OK (%d)\n", pass );
-
- fflush( stdout );
+ rtems_test_printf( "TA5 - PERIODS CHECK OK (%d)\n", pass );
if ( pass == 10 ) {
- TEST_END();
- rtems_test_exit( 0 );
+ end_of_test();
}
}
@@ -134,27 +148,27 @@ rtems_task Task_1_through_6(
status = rtems_rate_monotonic_period( rmid, period);
directive_failed( status, "rtems_rate_monotonic_period of TA6" );
time[0] = _Watchdog_Ticks_since_boot; /* timestamp */
- /*printf("%d - %d\n", period, time[0]);*/
+ /*rtems_test_printf("%d - %d\n", period, time[0]);*/
for (index = 1; index <= TA6_ITERATIONS; index++) {
period = (index+1)*TA6_PERIOD_FACTOR;
status = rtems_rate_monotonic_period( rmid, period);
directive_failed( status, "rtems_rate_monotonic_period of TA6" );
time[index] = _Watchdog_Ticks_since_boot; /* timestamp */
- /*printf("%d - %d\n", period, time[index]);*/
+ /*rtems_test_printf("%d - %d\n", period, time[index]);*/
}
for (index = 1; index <= TA6_ITERATIONS; index++) {
rtems_interval meas = time[index] - time[index-1];
period = index*TA6_PERIOD_FACTOR;
- printf(
+ rtems_test_printf(
"TA6 - Actual: %" PRIdrtems_interval
" Expected: %" PRIdrtems_interval,
meas,
period
);
- if (period == meas) printf(" - OK\n");
- else printf(" - FAILED\n");
+ if (period == meas) rtems_test_printf(" - OK\n");
+ else rtems_test_printf(" - FAILED\n");
}
}
rtems_task_suspend(RTEMS_SELF);
--
1.8.4.5
More information about the devel
mailing list