summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-11-11 15:57:38 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-11-13 11:08:46 +0100
commit0d87b1fd8de30280e94b29d3fc629890c1b4b39b (patch)
tree606e454c97fe9ff01d8a7c4704a3608f8a68775a
parentspec: Add performance test suite (diff)
downloadrtems-central-0d87b1fd8de30280e94b29d3fc629890c1b4b39b.tar.bz2
spec: Add partition manager performance items
-rw-r--r--spec/rtems/part/req/perf-get-buffer.yml64
-rw-r--r--spec/rtems/part/req/perf-get-no-buffer.yml52
-rw-r--r--spec/rtems/part/req/perf-return-buffer.yml45
-rw-r--r--spec/rtems/part/val/performance.yml99
4 files changed, 260 insertions, 0 deletions
diff --git a/spec/rtems/part/req/perf-get-buffer.yml b/spec/rtems/part/req/perf-get-buffer.yml
new file mode 100644
index 00000000..09f84fe9
--- /dev/null
+++ b/spec/rtems/part/req/perf-get-buffer.yml
@@ -0,0 +1,64 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: runtime-measurement-request
+ uid: ../val/performance
+limits:
+ sparc/leon3:
+ DirtyCache:
+ max-upper-bound: 0.000005
+ mean-upper-bound: 0.000005
+ FullCache:
+ max-upper-bound: 0.000005
+ mean-upper-bound: 0.000005
+ HotCache:
+ max-upper-bound: 0.000005
+ mean-upper-bound: 0.000005
+ Load/1:
+ max-upper-bound: 0.00001
+ mean-upper-bound: 0.00001
+ Load/2:
+ max-upper-bound: 0.00001
+ mean-upper-bound: 0.00001
+ Load/3:
+ max-upper-bound: 0.00001
+ mean-upper-bound: 0.00001
+ Load/4:
+ max-upper-bound: 0.00001
+ mean-upper-bound: 0.00001
+params: {}
+rationale: null
+references: []
+test-body:
+ brief: |
+ Get a buffer.
+ code: |
+ ctx->status = rtems_partition_get_buffer( ctx->part_many, &ctx->buffer );
+ description: null
+test-cleanup: null
+test-prepare: null
+test-setup: null
+test-teardown:
+ brief: |
+ Return the buffer.
+ code: |
+ rtems_status_code sc;
+
+ T_quiet_rsc_success( ctx->status );
+
+ sc = rtems_partition_return_buffer( ctx->part_many, ctx->buffer );
+ T_quiet_rsc_success( sc );
+
+ return tic == toc;
+ description: null
+text: |
+ When a partition has exactly ${../val/performance:/params/buffer-count} free
+ buffers, the ${.:limit-kind} runtime of exactly
+ ${../val/performance:/params/sample-count} successful calls to
+ ${../if/get-buffer:/name} in the ${.:/environment} shall be
+ ${.:limit-condition}.
+non-functional-type: performance-runtime
+requirement-type: non-functional
+type: requirement
diff --git a/spec/rtems/part/req/perf-get-no-buffer.yml b/spec/rtems/part/req/perf-get-no-buffer.yml
new file mode 100644
index 00000000..0115fbef
--- /dev/null
+++ b/spec/rtems/part/req/perf-get-no-buffer.yml
@@ -0,0 +1,52 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: runtime-measurement-request
+ uid: ../val/performance
+limits: {}
+params: {}
+rationale: null
+references: []
+test-body:
+ brief: |
+ Try to get a buffer.
+ code: |
+ ctx->status = rtems_partition_get_buffer( ctx->part_one, &ctx->buffer );
+ description: null
+test-cleanup:
+ brief: |
+ Return the buffer.
+ code: |
+ rtems_status_code sc;
+
+ sc = rtems_partition_return_buffer( ctx->part_one, ctx->buffer_2 );
+ T_rsc_success( sc );
+ description: null
+test-prepare:
+ brief: |
+ Get the buffer.
+ code: |
+ rtems_status_code sc;
+
+ sc = rtems_partition_get_buffer( ctx->part_one, &ctx->buffer_2 );
+ T_rsc_success( sc );
+ description: null
+test-setup: null
+test-teardown:
+ brief: |
+ Check the status code.
+ code: |
+ T_quiet_rsc( ctx->status, RTEMS_UNSATISFIED );
+
+ return tic == toc;
+ description: null
+text: |
+ When a partition has no free buffers, the ${.:limit-kind} runtime of exactly
+ ${../val/performance:/params/sample-count} unsatisfied calls to
+ ${../if/get-buffer:/name} in the ${.:/environment} shall be
+ ${.:limit-condition}.
+non-functional-type: performance-runtime
+requirement-type: non-functional
+type: requirement
diff --git a/spec/rtems/part/req/perf-return-buffer.yml b/spec/rtems/part/req/perf-return-buffer.yml
new file mode 100644
index 00000000..0199c361
--- /dev/null
+++ b/spec/rtems/part/req/perf-return-buffer.yml
@@ -0,0 +1,45 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links:
+- role: runtime-measurement-request
+ uid: ../val/performance
+limits: {}
+params: {}
+rationale: null
+references: []
+test-body:
+ brief: |
+ Return the buffer.
+ code: |
+ ctx->status = rtems_partition_return_buffer( ctx->part_many, ctx->buffer );
+ description: null
+test-cleanup: null
+test-prepare: null
+test-setup:
+ brief: |
+ Get the buffer.
+ code: |
+ rtems_status_code sc;
+
+ sc = rtems_partition_get_buffer( ctx->part_many, &ctx->buffer );
+ T_quiet_rsc_success( sc );
+ description: null
+test-teardown:
+ brief: |
+ Check the status code.
+ code: |
+ T_quiet_rsc( ctx->status, RTEMS_SUCCESSFUL );
+
+ return tic == toc;
+ description: null
+text: |
+ When a partition has exactly ${../val/performance:/params/buffer-count} minus
+ one free buffers, the ${.:limit-kind} runtime of exactly
+ ${../val/performance:/params/sample-count} successful calls to
+ ${../if/return-buffer:/name} in the ${.:/environment} shall be
+ ${.:limit-condition}.
+non-functional-type: performance-runtime
+requirement-type: non-functional
+type: requirement
diff --git a/spec/rtems/part/val/performance.yml b/spec/rtems/part/val/performance.yml
new file mode 100644
index 00000000..110c7244
--- /dev/null
+++ b/spec/rtems/part/val/performance.yml
@@ -0,0 +1,99 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
+enabled-by: true
+links: []
+params:
+ sample-count: 1000
+ buffer-count: 100
+test-brief: |
+ This test case provides a context to run Partition Manager performance tests.
+test-cleanup: null
+test-context:
+- brief: |
+ This member provides a partition with exactly one free buffer.
+ description: null
+ member: |
+ rtems_id part_one
+- brief: |
+ This member provides a partition with exactly ${.:/params/buffer-count}
+ free buffers.
+ description: null
+ member: |
+ rtems_id part_many
+- brief: |
+ This member provides a status code.
+ description: null
+ member: |
+ rtems_status_code status
+- brief: |
+ This member provides a buffer pointer.
+ description: null
+ member: |
+ void *buffer
+- brief: |
+ This member provides a second buffer pointer.
+ description: null
+ member: |
+ void *buffer_2
+test-context-support: null
+test-description: null
+test-includes:
+- rtems.h
+- rtems/chain.h
+test-local-includes: []
+test-prepare: null
+test-setup:
+ brief: |
+ Creates the test partition.
+ code: |
+ rtems_status_code sc;
+ size_t size;
+ void *area;
+ uintptr_t length;
+
+ size = sizeof( rtems_chain_node );
+
+ area = T_malloc( size );
+ sc = rtems_partition_create(
+ rtems_build_name( ' ', 'O', 'N', 'E' ),
+ area,
+ size,
+ size,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &ctx->part_one
+ );
+ T_assert_rsc_success( sc );
+
+ length = ${.:/params/buffer-count} * size;
+ area = T_malloc( length );
+ sc = rtems_partition_create(
+ rtems_build_name( 'M', 'A', 'N', 'Y' ),
+ area,
+ length,
+ size,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &ctx->part_many
+ );
+ T_assert_rsc_success( sc );
+ description: null
+test-stop: null
+test-support: null
+test-target: testsuites/validation/tc-part-performance.c
+test-teardown:
+ brief: |
+ Deletes the test partition.
+ code: |
+ rtems_status_code sc;
+
+ if ( ctx->part_one != 0 ) {
+ sc = rtems_partition_delete( ctx->part_one );
+ T_rsc_success( sc );
+ }
+
+ if ( ctx->part_many != 0 ) {
+ sc = rtems_partition_delete( ctx->part_many );
+ T_rsc_success( sc );
+ }
+ description: null
+type: runtime-measurement-test