summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-11-12 12:01:26 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-11-13 11:08:43 +0100
commit4a6b9bc5b83cbfee575831a9f94508ba8d0bd435 (patch)
treeb7db9a6793edf9a3251222f7c0f9c1615bbfadd7
parentspec: Add runtime measurement test case item type (diff)
downloadrtems-central-4a6b9bc5b83cbfee575831a9f94508ba8d0bd435.tar.bz2
spec: Add runtime performance item type
-rw-r--r--spec/spec/requirement-non-functional-generic.yml71
-rw-r--r--spec/spec/requirement-non-functional-type.yml31
-rw-r--r--spec/spec/requirement-non-functional.yml2
-rw-r--r--spec/spec/requirement-performance-runtime-env.yml22
-rw-r--r--spec/spec/requirement-performance-runtime-envs.yml23
-rw-r--r--spec/spec/requirement-performance-runtime-kind.yml24
-rw-r--r--spec/spec/requirement-performance-runtime-limits.yml24
-rw-r--r--spec/spec/requirement-performance-runtime-params.yml23
-rw-r--r--spec/spec/requirement-performance-runtime-values.yml23
-rw-r--r--spec/spec/requirement-performance-runtime.yml155
-rw-r--r--spec/spec/runtime-measurement-request-role.yml23
11 files changed, 389 insertions, 32 deletions
diff --git a/spec/spec/requirement-non-functional-generic.yml b/spec/spec/requirement-non-functional-generic.yml
new file mode 100644
index 00000000..9a12cbb9
--- /dev/null
+++ b/spec/spec/requirement-non-functional-generic.yml
@@ -0,0 +1,71 @@
+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: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: build-configuration
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: constraint
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: design
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: documentation
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: interface
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: interface-requirement
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: maintainability
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: performance
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: portability
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: quality
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: reliability
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: resource
+ uid: requirement-non-functional
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: safety
+ uid: requirement-non-functional
+spec-description: |
+ Items of this type state a non-functional requirement with the non-functional
+ type defined by the specification type refinement.
+spec-example: null
+spec-info:
+ dict:
+ attributes: {}
+ description: null
+ mandatory-attributes: all
+spec-name: Generic Non-Functional Requirement Item Type
+spec-type: requirement-non-functional-generic
+type: spec
diff --git a/spec/spec/requirement-non-functional-type.yml b/spec/spec/requirement-non-functional-type.yml
deleted file mode 100644
index 35c163a9..00000000
--- a/spec/spec/requirement-non-functional-type.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-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: spec-member
- uid: root
-spec-description: null
-spec-example: null
-spec-info:
- str:
- assert:
- in:
- - build-configuration
- - constraint
- - design
- - documentation
- - interface
- - interface-requirement
- - maintainability
- - performance
- - portability
- - quality
- - reliability
- - resource
- - safety
- description: |
- This type shall be used for non-functional requirement types.
-spec-name: Requirement Non-Functional Type
-spec-type: requirement-non-functional-type
-type: spec
diff --git a/spec/spec/requirement-non-functional.yml b/spec/spec/requirement-non-functional.yml
index 11bd5495..030a9769 100644
--- a/spec/spec/requirement-non-functional.yml
+++ b/spec/spec/requirement-non-functional.yml
@@ -17,7 +17,7 @@ spec-info:
non-functional-type:
description: |
It shall be the non-functional type of the requirement.
- spec-type: requirement-non-functional-type
+ spec-type: name
description: |
This set of attributes specifies a non-functional requirement.
mandatory-attributes: all
diff --git a/spec/spec/requirement-performance-runtime-env.yml b/spec/spec/requirement-performance-runtime-env.yml
new file mode 100644
index 00000000..35becdee
--- /dev/null
+++ b/spec/spec/requirement-performance-runtime-env.yml
@@ -0,0 +1,22 @@
+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: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ assert:
+ - in:
+ - FullCache
+ - HotCache
+ - DirtyCache
+ - re: ^Load/[1-9][0-9]*$
+ description: |
+ It specifies the runtime measurement environment.
+spec-name: Runtime Measurement Environment
+spec-type: requirement-performance-runtime-env
+type: spec
diff --git a/spec/spec/requirement-performance-runtime-envs.yml b/spec/spec/requirement-performance-runtime-envs.yml
new file mode 100644
index 00000000..9c301a5c
--- /dev/null
+++ b/spec/spec/requirement-performance-runtime-envs.yml
@@ -0,0 +1,23 @@
+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: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes: {}
+ description: |
+ This set of attributes provides runtime performance limits for a set of
+ runtime measurement environments.
+ generic-attributes:
+ description: null
+ key-spec-type: requirement-performance-runtime-env
+ value-spec-type: requirement-performance-runtime-values
+ mandatory-attributes: all
+spec-name: Runtime Measurement Environment Table
+spec-type: requirement-performance-runtime-envs
+type: spec
diff --git a/spec/spec/requirement-performance-runtime-kind.yml b/spec/spec/requirement-performance-runtime-kind.yml
new file mode 100644
index 00000000..1c0abb93
--- /dev/null
+++ b/spec/spec/requirement-performance-runtime-kind.yml
@@ -0,0 +1,24 @@
+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: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ str:
+ assert:
+ - in:
+ - max-lower-bound
+ - max-upper-bound
+ - mean-lower-bound
+ - mean-upper-bound
+ - min-lower-bound
+ - min-upper-bound
+ description: |
+ It specifies the kind of a runtime measurement value.
+spec-name: Runtime Measurement Value Kind
+spec-type: requirement-performance-runtime-kind
+type: spec
diff --git a/spec/spec/requirement-performance-runtime-limits.yml b/spec/spec/requirement-performance-runtime-limits.yml
new file mode 100644
index 00000000..4a642fb1
--- /dev/null
+++ b/spec/spec/requirement-performance-runtime-limits.yml
@@ -0,0 +1,24 @@
+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: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes: {}
+ description: |
+ This set of attributes provides runtime performance limits for BSP
+ variants specified by ``"<arch>/<bsp>"`` with <arch> being the
+ architecture of the BSP and <bsp> being the base name of the BSP.
+ generic-attributes:
+ description: null
+ key-spec-type: str
+ value-spec-type: requirement-performance-runtime-envs
+ mandatory-attributes: all
+spec-name: Runtime Performance Limit Table
+spec-type: requirement-performance-runtime-limits
+type: spec
diff --git a/spec/spec/requirement-performance-runtime-params.yml b/spec/spec/requirement-performance-runtime-params.yml
new file mode 100644
index 00000000..4f460a9f
--- /dev/null
+++ b/spec/spec/requirement-performance-runtime-params.yml
@@ -0,0 +1,23 @@
+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: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes: {}
+ description: |
+ This set of attributes defines parameters of the runtime performance
+ requirement.
+ generic-attributes:
+ description: null
+ key-spec-type: name
+ value-spec-type: any
+ mandatory-attributes: all
+spec-name: Runtime Performance Parameter Set
+spec-type: requirement-performance-runtime-params
+type: spec
diff --git a/spec/spec/requirement-performance-runtime-values.yml b/spec/spec/requirement-performance-runtime-values.yml
new file mode 100644
index 00000000..100c0374
--- /dev/null
+++ b/spec/spec/requirement-performance-runtime-values.yml
@@ -0,0 +1,23 @@
+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: spec-member
+ uid: root
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes: {}
+ description: |
+ This set of attributes provides a set of runtime measurement values each
+ of a specified kind. The unit of the values shall be one second.
+ generic-attributes:
+ description: null
+ key-spec-type: requirement-performance-runtime-kind
+ value-spec-type: float
+ mandatory-attributes: all
+spec-name: Runtime Measurement Value Table
+spec-type: requirement-performance-runtime-values
+type: spec
diff --git a/spec/spec/requirement-performance-runtime.yml b/spec/spec/requirement-performance-runtime.yml
new file mode 100644
index 00000000..6dc19d9c
--- /dev/null
+++ b/spec/spec/requirement-performance-runtime.yml
@@ -0,0 +1,155 @@
+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: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: non-functional-type
+ spec-value: performance-runtime
+ uid: requirement-non-functional
+spec-description: |
+ The item shall have exactly one link with the
+ ${runtime-measurement-request-role:/spec-name}. A requirement text processor
+ shall support a substitution of $${.:/limit-kind}:
+
+ * For a ${requirement-performance-runtime-kind:/spec-name} of
+ ``min-lower-bound`` or ``min-upper-bound``, the substitution of
+ $${.:/limit-kind} shall be ``"minimum"``.
+
+ * For a ${requirement-performance-runtime-kind:/spec-name} of
+ ``mean-lower-bound`` or ``mean-upper-bound``, the substitution of
+ $${.:/limit-kind} shall be ``"mean"``.
+
+ * For a ${requirement-performance-runtime-kind:/spec-name} of
+ ``max-lower-bound`` or ``max-upper-bound``, the substitution of
+ $${.:/limit-kind} shall be ``"maximum"``.
+
+ A requirement text processor shall support a substitution of
+ $${.:/limit-condition}:
+
+ * For a ${requirement-performance-runtime-kind:/spec-name} of
+ ``min-lower-bound``, ``mean-lower-bound``, or ``max-lower-bound``, the
+ substitution of $${.:/limit-condition} shall be ``"greater than or equal to
+ <value>"`` with <value> being the value of the corresponding entry in the
+ ${requirement-performance-runtime-values:/spec-name}.
+
+ * For a ${requirement-performance-runtime-kind:/spec-name} of
+ ``min-upper-bound``, ``mean-upper-bound``, or ``max-upper-bound``, the
+ substitution of $${.:/limit-condition} shall be ``"less than or equal to
+ <value>"`` with <value> being the value of the corresponding entry in the
+ ${requirement-performance-runtime-values:/spec-name}.
+
+ A requirement text processor shall support a substitution of
+ $${.:/environment}. The value of the substitution shall be ``"<environment>
+ environment"`` with <environment> being the environment of the corresponding
+ entry in the ${requirement-performance-runtime-envs:/spec-name}.
+spec-example: |
+ 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
+spec-info:
+ dict:
+ attributes:
+ limits:
+ description: null
+ spec-type: requirement-performance-runtime-limits
+ params:
+ description: null
+ spec-type: requirement-performance-runtime-params
+ test-body:
+ description: |
+ It shall provide the code of the measure runtime body handler. In
+ contrast to other methods, this method is mandatory.
+ spec-type: test-support-method
+ test-setup:
+ description: |
+ It may provide the code of the measure runtime setup handler.
+ spec-type: test-support-method
+ test-teardown:
+ description: |
+ It may provide the code of the measure runtime teardown handler.
+ spec-type: test-support-method
+ test-prepare:
+ description: |
+ It may provide the code to prepare the measure runtime request. This
+ method is called after the prepare method of the corresponding
+ ${runtime-measurement-test:/spec-name} item and before the request.
+ spec-type: test-support-method
+ test-cleanup:
+ description: |
+ It may provide the code to clean up the measure runtime request.
+ This method is called before the cleanup method of the corresponding
+ ${runtime-measurement-test:/spec-name} item and after the request.
+ spec-type: test-support-method
+ description: |
+ This set of attributes specifies non-functional runtime performance
+ requirements and the corresponding validation test code. Along with the
+ requirement, the test code to execute a measure runtime request is
+ specified.
+ mandatory-attributes: all
+spec-name: Runtime Performance Requirement Item Type
+spec-type: requirement-performance-runtime
+type: spec
diff --git a/spec/spec/runtime-measurement-request-role.yml b/spec/spec/runtime-measurement-request-role.yml
new file mode 100644
index 00000000..0103073d
--- /dev/null
+++ b/spec/spec/runtime-measurement-request-role.yml
@@ -0,0 +1,23 @@
+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: spec-member
+ uid: root
+- role: spec-refinement
+ spec-key: role
+ spec-value: runtime-measurement-request
+ uid: link
+spec-description: null
+spec-example: null
+spec-info:
+ dict:
+ attributes: {}
+ description: |
+ It defines the runtime measurement request role of links. The link
+ target shall be a ${runtime-measurement-test:/spec-name} item.
+ mandatory-attributes: all
+spec-name: Runtime Measurement Request Link Role
+spec-type: runtime-measurement-request-role
+type: spec