summaryrefslogtreecommitdiffstats
path: root/testsuites/sptests
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2010-06-22 16:14:43 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2010-06-22 16:14:43 +0000
commitdb904606e335ba7ae4e363a96f7a5e2a2700bf4e (patch)
tree299a3e61d23b0fd93e2b1c2475412f6e79d665a6 /testsuites/sptests
parent2010-06-22 Jennifer Averett <Jennifer.Averett@OARcorp.com> (diff)
downloadrtems-db904606e335ba7ae4e363a96f7a5e2a2700bf4e.tar.bz2
2010-06-22 Joel Sherrill <joel.sherrilL@OARcorp.com>
* Makefile.am, configure.ac: Add new test to exercise path where using unlimited object support you are about to allocate more objects than can be represented in the Id. This test will NOT pass on targets with insufficient RAM. * sp71/.cvsignore, sp71/Makefile.am, sp71/init.c, sp71/sp71.doc, sp71/sp71.scn: New files.
Diffstat (limited to 'testsuites/sptests')
-rw-r--r--testsuites/sptests/ChangeLog9
-rw-r--r--testsuites/sptests/Makefile.am2
-rw-r--r--testsuites/sptests/configure.ac1
-rw-r--r--testsuites/sptests/sp71/.cvsignore2
-rw-r--r--testsuites/sptests/sp71/Makefile.am26
-rw-r--r--testsuites/sptests/sp71/init.c71
-rw-r--r--testsuites/sptests/sp71/sp71.doc22
-rw-r--r--testsuites/sptests/sp71/sp71.scn4
8 files changed, 136 insertions, 1 deletions
diff --git a/testsuites/sptests/ChangeLog b/testsuites/sptests/ChangeLog
index fc2c2cd5dd..756d303c51 100644
--- a/testsuites/sptests/ChangeLog
+++ b/testsuites/sptests/ChangeLog
@@ -1,3 +1,12 @@
+2010-06-22 Joel Sherrill <joel.sherrilL@OARcorp.com>
+
+ * Makefile.am, configure.ac: Add new test to exercise path where using
+ unlimited object support you are about to allocate more objects than
+ can be represented in the Id. This test will NOT pass on targets with
+ insufficient RAM.
+ * sp71/.cvsignore, sp71/Makefile.am, sp71/init.c, sp71/sp71.doc,
+ sp71/sp71.scn: New files.
+
2010-06-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* Makefile.am, configure.ac: spfatal20 not ready.
diff --git a/testsuites/sptests/Makefile.am b/testsuites/sptests/Makefile.am
index a1b45c449c..d25457e41a 100644
--- a/testsuites/sptests/Makefile.am
+++ b/testsuites/sptests/Makefile.am
@@ -14,7 +14,7 @@ SUBDIRS = \
sp40 sp41 sp42 sp43 sp44 sp45 sp46 sp47 sp48 sp49 \
sp50 sp51 sp52 sp53 sp54 sp55 sp56 sp57 sp58 sp59 \
sp60 sp61 sp62 sp63 sp64 sp65 sp66 sp67 sp68 sp69 \
- sp70 \
+ sp70 sp71 \
spchain spclockget spcoverage spobjgetnext spnotepad01 spprintk spsize \
spstkalloc spthreadq01 spwatchdog spwkspace \
spfatal01 spfatal02 spfatal03 spfatal04 spfatal05 spfatal06 spfatal07 \
diff --git a/testsuites/sptests/configure.ac b/testsuites/sptests/configure.ac
index 830d07ee28..2b04c497f2 100644
--- a/testsuites/sptests/configure.ac
+++ b/testsuites/sptests/configure.ac
@@ -96,6 +96,7 @@ sp67/Makefile
sp68/Makefile
sp69/Makefile
sp70/Makefile
+sp71/Makefile
spchain/Makefile
spclockget/Makefile
spcoverage/Makefile
diff --git a/testsuites/sptests/sp71/.cvsignore b/testsuites/sptests/sp71/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/testsuites/sptests/sp71/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/testsuites/sptests/sp71/Makefile.am b/testsuites/sptests/sp71/Makefile.am
new file mode 100644
index 0000000000..be4e42037a
--- /dev/null
+++ b/testsuites/sptests/sp71/Makefile.am
@@ -0,0 +1,26 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = sp71
+sp71_SOURCES = init.c ../../support/src/spin.c
+
+dist_rtems_tests_DATA = sp71.scn
+dist_rtems_tests_DATA += sp71.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+
+LINK_OBJS = $(sp71_OBJECTS) $(sp71_LDADD)
+LINK_LIBS = $(sp71_LDLIBS)
+
+sp71$(EXEEXT): $(sp71_OBJECTS) $(sp71_DEPENDENCIES)
+ @rm -f sp71$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/sp71/init.c b/testsuites/sptests/sp71/init.c
new file mode 100644
index 0000000000..954f21c191
--- /dev/null
+++ b/testsuites/sptests/sp71/init.c
@@ -0,0 +1,71 @@
+/*
+ * COPYRIGHT (c) 1989-2010.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#include <tmacros.h>
+#include "test_support.h"
+
+#define PER_ALLOCATION 8000
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_id id;
+ long created;
+
+ puts( "\n\n*** TEST 71 ***" );
+
+ created = 0;
+ do {
+ status = rtems_port_create(
+ rtems_build_name( 'P', 'O', 'R', 'T' ),
+ (void *) 0x1000,
+ (void *) 0x2000,
+ 1024,
+ &id
+ );
+ if ( status == RTEMS_TOO_MANY )
+ break;
+ directive_failed( status, "rtems_task_create" );
+ created++;
+ } while (1);
+
+ printf(
+ "%ld ports created using %d per allocation -- need %ld\n",
+ created,
+ PER_ALLOCATION,
+ (long) OBJECTS_ID_FINAL_INDEX
+ );
+
+ if ( (created + PER_ALLOCATION) > OBJECTS_ID_FINAL_INDEX ) {
+ puts( "Test case hit" );
+ puts( "*** END OF TEST 71 ***" );
+ } else {
+ puts( "Test case NOT hit" );
+ }
+ rtems_test_exit(0);
+}
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
+
+#define CONFIGURE_MAXIMUM_TASKS 1
+#define CONFIGURE_MAXIMUM_PORTS rtems_resource_unlimited(PER_ALLOCATION)
+#define CONFIGURE_UNIFIED_WORK_AREAS
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_INIT
+
+#include <rtems/confdefs.h>
+/* end of file */
diff --git a/testsuites/sptests/sp71/sp71.doc b/testsuites/sptests/sp71/sp71.doc
new file mode 100644
index 0000000000..9a4020d7c2
--- /dev/null
+++ b/testsuites/sptests/sp71/sp71.doc
@@ -0,0 +1,22 @@
+#
+# $Id$
+#
+# COPYRIGHT (c) 1989-2010.
+# On-Line Applications Research Corporation (OAR).
+#
+# The license and distribution terms for this file may be
+# found in the file LICENSE in this distribution or at
+# http://www.rtems.com/license/LICENSE.
+#
+
+This file describes the directives and concepts tested by this test set.
+
+test set name: sp71
+
+directives:
+
+ rtems_port_create
+
+concepts:
+
++ Using unlimited objects, create so many that the index field would overflow.
diff --git a/testsuites/sptests/sp71/sp71.scn b/testsuites/sptests/sp71/sp71.scn
new file mode 100644
index 0000000000..048c5ffbab
--- /dev/null
+++ b/testsuites/sptests/sp71/sp71.scn
@@ -0,0 +1,4 @@
+*** TEST 71 ***
+64000 ports created using 8000 per allocation -- need 65535
+Test case hit
+*** END OF TEST 71 ***