Skip to content

Variability4TOSCA Conformance Test Suite 1.0 Release Candidate

This document specifies the conformance test suite for the Variability4TOSCA specification which can be used to evaluate Variability4TOSCA implementations. The specification is under active development and is not backwards compatible with any previous versions.

Conformance Tests

Each test is described on a separate page. The description includes typically a variable service template, variability inputs, expected errors, expected variability-resolved service template and so on along with an explanation about the expected processing.

ID Test
1 Operator "count"
2 Operator "exponential_regression"
3 Operator "variance"
4 Operator "logarithmic_regression"
5 Operator "max"
6 Operator "mean"
7 Operator "median"
8 Operator "min"
9 Operator "polynomial_regression"
10 Operator "standard_deviation"
11 Operator "sum"
12 Operator "variance"
13 Operator "add"
14 Operator "div"
15 Operator "mod" (Even)
16 Operator "add" (Odd)
17 Operator "mul"
18 Operator "sub"
19 artifacts-artifact-presence-number-absent
20 artifacts-artifact-presence-number-present
21 artifacts-artifact-presence-string-absent
22 artifacts-artifact-presence-string-present
23 artifacts-conditional
24 artifacts-container-presence-absent
25 artifacts-container-presence-present
26 artifacts-default-alternative
27 artifacts-default-alternative-false
28 artifacts-default-condition
29 Artifact Pruning
30 artifacts-throw-ambiguous-artifact
31 artifacts-throw-ambiguous-default
32 artifacts-throw-missing-artifact-container
33 Operator "and" Evaluates to "True" (Empty)
34 Operator "and" Evaluates to "false"
35 Operator "and" Evaluates to "false" (Nested)
36 Operator "and" Evaluates to "true"
37 Operator "and" Evaluates to "true" (Nested)
38 Operator "implies": false false -> true
39 Operator "implies": false true -> true
40 Operator "implies": true false -> false
41 Operator "implies": true true -> true
42 Operator "not" Evaluates to "false"
43 Operator "not" Evaluates to "true"
44 Operator "or" Evaluates to "False" (Empty)
45 Operator "or" Evaluates to "False"
46 Operator "or" Evaluates to "true"
47 Operator "or" Evaluates to "true" (All "true")
48 Operator "xor": all false -> false
49 Operator "xor": One ture -> true
50 Operator "xor": all true -> false
51 circles-alpha
52 circles-bravo
53 circles-charlie
54 circles-delta
55 circles-echo
56 circles-golf
57 circles-hotel
58 circles-india
59 consistency-throw-hosting-relation-missing
60 consistency-throw-hosting-relation-missing-constraint
61 consistency-throw-multiple-hosting-relations
62 consistency-throw-multiple-hosting-relations-constraint
63 consistency-throw-relation-source-missing
64 consistency-throw-relation-target-missing
65 Operator "equal" Evaluates to "false"
66 Operator "equal" Evaluates to "true"
67 Operator "greater_or_equal" Evaluates to "true" (Greater)
68 Operator "greater_or_equal" Evaluates to "true" (Equal)
69 Operator "greater_or_equal" Evaluates to "false" (Less)
70 Operator "greater" Evaluates to "false" (Equal)
71 Operator "greater" Evaluates to "true" (Greater)
72 Operator "greater" Evaluates to "false" (Less)
73 Operator "in_range" Evaluates to "false"
74 Operator "in_range" Evaluates to "true"
75 Operator "length" Evaluates to "false"
76 Operator "length" Evaluates to "true"
77 Operator "less_or_equal" Evaluates to "true" (Equal)
78 Operator "less_or_equal" Evaluates to "false" (Greater)
79 Operator "less_or_equal" Evaluates to "true" (Less)
80 Operator "less" Evaluates to "false" (Equal)
81 Operator "less" Evaluates to "false" (Greater)
82 Operator "less" Evaluates to "true" (Less)
83 Operator "max_length" Evaluates to "true" (Equal)
84 Operator "max_length" Evaluates to "false" (Greater)
85 Operator "max_length" Evaluates to "true" (Less)
86 Operator "min_length" Evaluates to "true" (Equal)
87 Operator "min_length" Evaluates to "true" (Greater)
88 Operator "min_length" Evaluates to "false" (Less)
89 Operator "valid_values" Evaluates to "false"
90 Operator "valid_values" Evaluates to "true"
91 date-operators-after-false
92 date-operators-after-or-same-false
93 date-operators-after-or-same-true
94 date-operators-after-true
95 date-operators-before-false
96 date-operators-before-or-same-false
97 date-operators-before-or-same-true
98 date-operators-before-true
99 date-operators-same-false
100 date-operators-same-true
101 date-operators-within-false
102 date-operators-within-true
103 Conditional Group
104 groups-default-condition
105 groups-default-condition-nothing
106 groups-group-presence-absent
107 groups-group-presence-present
108 groups-prune
109 hosting-aware-pruning-constraints-elastic
110 hosting-aware-pruning-constraints-static
111 hosting-aware-pruning-host-elastic
112 hosting-aware-pruning-host-static
113 hosting-aware-pruning-motivation-elastic
114 hosting-aware-pruning-motivation-static
115 hosting-aware-pruning-provider-elastic
116 hosting-aware-pruning-provider-static
117 hosting-aware-pruning-transitive-ambiguous
118 hosting-aware-pruning-transitive-both
119 hosting-aware-pruning-transitive-preserved
120 hosting-aware-pruning-transitive-unexpected
121 implications-constraints
122 implications-implied-left
123 implications-implied-right
124 implications-implies-left
125 implications-implies-right
126 implications-incoming-left
127 implications-incoming-right
128 implications-motivating-scenario-cloud
129 implications-motivating-scenario-static
130 implications-requires
131 implications-unexpected
132 implications-naive-constraints
133 implications-naive-implied-left
134 implications-naive-implied-right
135 implications-naive-implies-left
136 implications-naive-implies-right
137 implications-naive-incoming-left
138 implications-naive-incoming-right
139 implications-naive-motivating-scenario-cloud
140 implications-naive-motivating-scenario-static
141 implications-naive-naive
142 implications-naive-naive-another
143 implications-naive-naive-another-no-optimization
144 implications-naive-naive-another-not
145 implications-naive-naive-not
146 implications-naive-requires
147 implications-naive-unexpected
148 import-conditional
149 import-empty
150 import-get-import-absent
151 import-get-import-present
152 inputs-conditional
153 inputs-conditional-list
154 inputs-input-presence-absent
155 inputs-input-presence-present
156 nodes-conditional
157 nodes-conditional-type
158 nodes-conditional-type-default
159 nodes-default-false-false
160 nodes-default-false-true
161 nodes-default-host-absent
162 nodes-default-host-present
163 nodes-default-true-false
164 nodes-default-true-true
165 nodes-host-presence-absent
166 nodes-host-presence-false-false
167 nodes-host-presence-present
168 nodes-host-presence-true-false
169 nodes-host-presence-true-true
170 nodes-host-presence-true-true-constraint
171 nodes-node-presence-absent
172 nodes-node-presence-present
173 nodes-type-specific
174 Benchmark
175 Operator "concat"
176 Get Variability Expression
177 Operator "concat"
178 other-logic-expression-false
179 other-logic-expression-true
180 other-logic-value-expression
181 other-nothing
182 other-preset
183 other-presets
184 other-throw-CONTAINER
185 other-throw-SELF
186 other-throw-not-unique
187 Operator "concat"
188 Get Variability Expression
189 Get Variability Input
190 other-version
191 other-weight
192 persistent-persistent
193 persistent-persistent-false
194 persistent-persistent-throw
195 persistent-persistent-undefined
196 policies-conditional
197 policies-default-condition
198 policies-default-condition-nothing
199 Policy Targets Absent Members
200 Policy Targets Absent Nodes
201 Policy Has No Targets
202 Policy Targets Present Member
203 Policy Targets One Present Node
204 Policy Targets Present Nodes
205 policies-policy-presence-absent
206 policies-policy-presence-present
207 Policy Pruning
208 properties-artifact-container-presence-absent
209 properties-artifact-container-presence-present
210 properties-conditional
211 properties-default-alternative
212 properties-default-alternative-false
213 properties-default-condition
214 properties-expression
215 properties-list
216 properties-list-another
217 properties-map
218 properties-map-another
219 properties-node-container-presence-absent
220 properties-node-container-presence-present
221 properties-node-node-presence-CONTAINER-absent
222 properties-node-node-presence-CONTAINER-present
223 properties-node-property-presence-number-absent
224 properties-node-property-presence-number-present
225 properties-node-property-presence-string-absent
226 properties-node-property-presence-string-present
227 properties-properties
228 properties-relation-container-presence-absent
229 properties-relation-container-presence-present
230 properties-throw-ambiguous-property
231 properties-throw-missing-property-container
232 properties-throw-multiple-default
233 pruning-alpha-default
234 pruning-alpha-default-naive
235 pruning-alpha-pruning
236 pruning-artifact-default-alpha
237 pruning-artifact-default-bravo
238 pruning-artifact-default-charlie
239 pruning-artifact-default-delta
240 pruning-artifact-default-naive
241 pruning-bravo-default
242 pruning-bravo-pruning
243 pruning-charlie-default
244 pruning-charlie-pruning
245 pruning-delta-default
246 pruning-delta-pruning
247 pruning-echo-default
248 pruning-echo-pruning
249 pruning-foxtrott-default
250 pruning-foxtrott-pruning
251 pruning-hotel-default
252 pruning-hotel-pruning
253 pruning-incoming-artifact-pruning-alpha
254 pruning-incoming-artifact-pruning-bravo
255 pruning-incoming-artifact-pruning-charlie
256 pruning-incoming-artifact-pruning-delta
257 pruning-incoming-artifact-pruning-echo
258 pruning-incoming-artifact-pruning-foxtrott
259 pruning-incoming-artifact-pruning-golf
260 pruning-incoming-artifact-pruning-hotel
261 pruning-incoming-artifact-pruning-naive-alpha
262 pruning-incoming-artifact-pruning-naive-bravo
263 pruning-india-default
264 pruning-india-pruning
265 pruning-juliett-default
266 pruning-juliett-pruning
267 pruning-kilo-default
268 pruning-kilo-pruning
269 pruning-lima-default
270 pruning-lima-pruning
271 pruning-mike-default
272 pruning-mike-pruning
273 pruning-outgoing-relation-absent
274 pruning-outgoing-relation-present
275 pruning-outgoing-target-absent
276 pruning-outgoing-target-present
277 pruning-outgoingnaive-target-present
278 pruning-pruning
279 pruning-pruning-false-false
280 pruning-pruning-false-true
281 pruning-pruning-true-false
282 pruning-pruning-true-true
283 Relation Pruning
284 relationships-conditional
285 relationships-throw-multiple
286 relationships-throw-undefined
287 relationships-throw-unused
288 relationships-type-specific
289 requirement-assignment-conditional
290 requirement-assignment-default-alternative
291 requirement-assignment-default-alternative-false
292 requirement-assignment-default-condition
293 requirement-assignment-default-condition-throw-source
294 requirement-assignment-default-condition-throw-target
295 requirement-assignment-one-hosting-relation
296 requirement-assignment-relation-presence-index-absent
297 requirement-assignment-relation-presence-name-absent
298 requirement-assignment-source-presence-absent
299 requirement-assignment-source-presence-present
300 requirement-assignment-target-presence-absent
301 requirement-assignment-target-presence-present
302 requirement-assignment-throw-multiple-defaults
303 Scenario "Alpha"
304 scenario-worker-agent-false
305 scenario-worker-agent-true
306 scenario-worker-worker-false
307 scenario-worker-worker-true
308 technologies-ambiguous
309 technologies-ambiguous-disabled
310 technologies-conditional
311 technologies-constraint
312 technologies-constraint-disabled
313 technologies-default-multiple
314 technologies-default-true
315 technologies-expected
316 technologies-expected-disabled
317 technologies-lowercase
318 technologies-missing
319 technologies-missing-disabled
320 technologies-optimization
321 technologies-optimization-double
322 technologies-optimization-order
323 technologies-optimization-unsat
324 technologies-optimization-weight
325 technologies-pruning
326 technologies-pruning-disabled
327 technologies-rules
328 technologies-unique
329 technologies-unique-disabled

Reference Implementation

We provide a reference implementation for this specification as part of OpenTOSCA Vintner. OpenTOSCA Vintner is a TOSCA preprocessing and management layer. The project is open-source, licensed under Apache-2.0, and publicly available at GitHub.

Acknowledgments

This specification is developed for the purpose of research by the Institute of Software Engineering (ISTE) and the Institute of Architecture of Application Systems (IAAS) of the University of Stuttgart, Germany. The development is partially funded by the German Federal Ministry for Economic Affairs and Climate Action (BMWK) as part of the Software-Defined Car (SofDCar) project (19S21002).

Correspondence

Please address all correspondence concerning this specification to Miles Stötzner <miles.stoetzner@iste.uni-stuttgart.de, https://miles.stoetzner.de>.

Disclaimer of Warranty

Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.


Last update: March 27, 2024