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 artifacts-dont-throw-ambiguous-artifact
30 Artifact Pruning
31 artifacts-required-artifact-constraint-sat
32 artifacts-required-artifact-constraint-sat-pruning
33 artifacts-required-artifact-constraint-unsat
34 artifacts-throw-ambiguous-artifact
35 artifacts-throw-ambiguous-default
36 artifacts-throw-missing-artifact-container
37 artifacts-unique-artifact-constraint-sat-none
38 artifacts-unique-artifact-constraint-sat-one
39 artifacts-unique-artifact-constraint-sat-other
40 artifacts-unique-artifact-constraint-unsat
41 Operator "and" Evaluates to "True" (Empty)
42 Operator "and" Evaluates to "false"
43 Operator "and" Evaluates to "false" (Nested)
44 Operator "and" Evaluates to "true"
45 Operator "and" Evaluates to "true" (Nested)
46 Operator "implies": false false -> true
47 Operator "implies": false true -> true
48 Operator "implies": true false -> false
49 Operator "implies": true true -> true
50 Operator "not" Evaluates to "false"
51 Operator "not" Evaluates to "true"
52 Operator "or" Evaluates to "False" (Empty)
53 Operator "or" Evaluates to "False"
54 Operator "or" Evaluates to "true"
55 Operator "or" Evaluates to "true" (All "true")
56 Operator "xor": all false -> false
57 Operator "xor": One ture -> true
58 Operator "xor": all true -> false
59 circles-alpha
60 circles-bravo
61 circles-charlie
62 circles-delta
63 circles-echo
64 circles-golf
65 circles-hotel
66 circles-india
67 consistency-throw-hosting-relation-missing
68 consistency-throw-hosting-relation-missing-constraint
69 consistency-throw-multiple-hosting-relations
70 consistency-throw-multiple-hosting-relations-constraint
71 consistency-throw-relation-source-missing
72 consistency-throw-relation-target-missing
73 Operator "equal" Evaluates to "false"
74 Operator "equal" Evaluates to "true"
75 Operator "greater_or_equal" Evaluates to "true" (Greater)
76 Operator "greater_or_equal" Evaluates to "true" (Equal)
77 Operator "greater_or_equal" Evaluates to "false" (Less)
78 Operator "greater" Evaluates to "false" (Equal)
79 Operator "greater" Evaluates to "true" (Greater)
80 Operator "greater" Evaluates to "false" (Less)
81 Operator "in_range" Evaluates to "false"
82 Operator "in_range" Evaluates to "true"
83 Operator "length" Evaluates to "false"
84 Operator "length" Evaluates to "true"
85 Operator "less_or_equal" Evaluates to "true" (Equal)
86 Operator "less_or_equal" Evaluates to "false" (Greater)
87 Operator "less_or_equal" Evaluates to "true" (Less)
88 Operator "less" Evaluates to "false" (Equal)
89 Operator "less" Evaluates to "false" (Greater)
90 Operator "less" Evaluates to "true" (Less)
91 Operator "max_length" Evaluates to "true" (Equal)
92 Operator "max_length" Evaluates to "false" (Greater)
93 Operator "max_length" Evaluates to "true" (Less)
94 Operator "min_length" Evaluates to "true" (Equal)
95 Operator "min_length" Evaluates to "true" (Greater)
96 Operator "min_length" Evaluates to "false" (Less)
97 Operator "valid_values" Evaluates to "false"
98 Operator "valid_values" Evaluates to "true"
99 date-operators-after-false
100 date-operators-after-or-same-false
101 date-operators-after-or-same-true
102 date-operators-after-true
103 date-operators-before-false
104 date-operators-before-or-same-false
105 date-operators-before-or-same-true
106 date-operators-before-true
107 date-operators-same-false
108 date-operators-same-true
109 date-operators-within-false
110 date-operators-within-true
111 Conditional Group
112 groups-default-condition
113 groups-default-condition-nothing
114 groups-group-presence-absent
115 groups-group-presence-present
116 groups-prune
117 hosting-aware-pruning-constraints-elastic
118 hosting-aware-pruning-constraints-static
119 hosting-aware-pruning-fig-10-broken
120 hosting-aware-pruning-fig-10-fixed
121 hosting-aware-pruning-host-elastic
122 hosting-aware-pruning-host-static
123 hosting-aware-pruning-motivation-elastic
124 hosting-aware-pruning-motivation-static
125 hosting-aware-pruning-provider-elastic
126 hosting-aware-pruning-provider-static
127 hosting-aware-pruning-transitive-ambiguous
128 hosting-aware-pruning-transitive-both
129 hosting-aware-pruning-transitive-preserved
130 hosting-aware-pruning-transitive-unexpected
131 implications-constraints
132 implications-implied-left
133 implications-implied-right
134 implications-implies-left
135 implications-implies-right
136 implications-incoming-left
137 implications-incoming-right
138 implications-motivating-scenario-cloud
139 implications-motivating-scenario-static
140 implications-requires
141 implications-unexpected
142 implications-naive-constraints
143 implications-naive-implied-left
144 implications-naive-implied-right
145 implications-naive-implies-left
146 implications-naive-implies-right
147 implications-naive-incoming-left
148 implications-naive-incoming-right
149 implications-naive-motivating-scenario-cloud
150 implications-naive-motivating-scenario-static
151 implications-naive-naive
152 implications-naive-naive-another
153 implications-naive-naive-another-no-optimization
154 implications-naive-naive-another-not
155 implications-naive-naive-not
156 implications-naive-requires
157 implications-naive-unexpected
158 implied-default-fixed-left
159 implied-default-fixed-right
160 implied-default-manual-left
161 implied-default-manual-right
162 implied-host-broken
163 implied-host-fixed-left
164 implied-host-fixed-right
165 implied-host-manual-left
166 implied-host-manual-right
167 import-conditional
168 import-empty
169 import-get-import-absent
170 import-get-import-present
171 inputs-conditional
172 inputs-conditional-list
173 inputs-default-alternative
174 inputs-input-presence-absent
175 inputs-input-presence-present
176 inputs-pruning-consumed
177 inputs-pruning-consumed-still
178 inputs-pruning-no-consumer
179 inputs-pruning-not-consumed-anymore
180 inputs-pruning-not-consumed-anymore-v3
181 inputs-unique-input-constraint-sat
182 inputs-unique-input-constraint-sat-other
183 inputs-unique-input-constraint-sat-pruning-consumed
184 inputs-unique-input-constraint-sat-pruning-consumed-default
185 inputs-unique-input-constraint-unsat
186 nodes-conditional
187 nodes-conditional-type
188 nodes-conditional-type-default
189 nodes-default-false-false
190 nodes-default-false-true
191 nodes-default-host-absent
192 nodes-default-host-present
193 nodes-default-true-false
194 nodes-default-true-true
195 nodes-host-presence-absent
196 nodes-host-presence-false-false
197 nodes-host-presence-present
198 nodes-host-presence-true-false
199 nodes-host-presence-true-true
200 nodes-host-presence-true-true-constraint
201 nodes-node-presence-absent
202 nodes-node-presence-present
203 nodes-required-incoming-relation-constraint-sat
204 nodes-required-incoming-relation-constraint-unsat
205 nodes-type-specific
206 Benchmark
207 Operator "concat"
208 Get Variability Expression
209 Operator "concat"
210 other-logic-expression-false
211 other-logic-expression-true
212 other-logic-value-expression
213 other-nothing
214 other-preset
215 other-presets
216 other-throw-CONTAINER
217 other-throw-SELF
218 other-throw-not-unique
219 Operator "concat"
220 Get Variability Expression
221 Get Variability Input
222 other-version
223 other-weight
224 outputs-conditional
225 outputs-conditional-list
226 outputs-default
227 outputs-input-presence-absent
228 outputs-input-presence-present
229 outputs-pruning-not-produced-anymore-unfurl-1
230 outputs-pruning-not-produced-anymore-unfurl-2
231 outputs-pruning-not-produced-anymore-xopera
232 outputs-pruning-not-produced-anymore-xopera-v3
233 outputs-pruning-produced-unfurl
234 outputs-pruning-produced-unfurl-attribute
235 outputs-pruning-produced-unfurl-attribute-not
236 outputs-unique-output-constraint-sat
237 outputs-unique-output-constraint-sat-default
238 outputs-unique-output-constraint-sat-other
239 outputs-unique-output-constraint-sat-pruning-not-produced-anymore-xopera
240 outputs-unique-output-constraint-sat-pruning-produced-xopera
241 outputs-unique-output-constraint-unsat
242 persistent-persistent
243 persistent-persistent-false
244 persistent-persistent-throw
245 persistent-persistent-undefined
246 policies-conditional
247 policies-default-condition
248 policies-default-condition-nothing
249 Policy Targets Absent Members
250 Policy Targets Absent Nodes
251 Policy Has No Targets
252 Policy Targets Present Member
253 Policy Targets One Present Node
254 Policy Targets Present Nodes
255 policies-policy-presence-absent
256 policies-policy-presence-present
257 Policy Pruning
258 properties-artifact-container-presence-absent
259 properties-artifact-container-presence-present
260 properties-conditional
261 properties-default-alternative
262 properties-default-alternative-false
263 properties-default-condition
264 properties-expression
265 properties-list
266 properties-list-another
267 properties-map
268 properties-map-another
269 properties-node-container-presence-absent
270 properties-node-container-presence-present
271 properties-node-node-presence-CONTAINER-absent
272 properties-node-node-presence-CONTAINER-present
273 properties-node-property-presence-number-absent
274 properties-node-property-presence-number-present
275 properties-node-property-presence-string-absent
276 properties-node-property-presence-string-present
277 properties-properties
278 properties-relation-container-presence-absent
279 properties-relation-container-presence-present
280 properties-throw-ambiguous-property
281 properties-throw-missing-property-container
282 properties-throw-multiple-default
283 properties-unique-property-constraint-sat
284 properties-unique-property-constraint-unsat
285 pruning-alpha-default
286 pruning-alpha-default-naive
287 pruning-alpha-pruning
288 pruning-artifact-default-alpha
289 pruning-artifact-default-bravo
290 pruning-artifact-default-charlie
291 pruning-artifact-default-delta
292 pruning-artifact-default-naive
293 pruning-bravo-default
294 pruning-bravo-pruning
295 pruning-charlie-default
296 pruning-charlie-pruning
297 pruning-delta-default
298 pruning-delta-pruning
299 pruning-echo-default
300 pruning-echo-pruning
301 pruning-foxtrott-default
302 pruning-foxtrott-pruning
303 pruning-hotel-default
304 pruning-hotel-pruning
305 pruning-incoming-artifact-pruning-alpha
306 pruning-incoming-artifact-pruning-bravo
307 pruning-incoming-artifact-pruning-charlie
308 pruning-incoming-artifact-pruning-delta
309 pruning-incoming-artifact-pruning-echo
310 pruning-incoming-artifact-pruning-foxtrott
311 pruning-incoming-artifact-pruning-golf
312 pruning-incoming-artifact-pruning-hotel
313 pruning-incoming-artifact-pruning-naive-alpha
314 pruning-incoming-artifact-pruning-naive-bravo
315 pruning-india-default
316 pruning-india-pruning
317 pruning-juliett-default
318 pruning-juliett-pruning
319 pruning-kilo-default
320 pruning-kilo-pruning
321 pruning-lima-default
322 pruning-lima-pruning
323 pruning-mike-default
324 pruning-mike-pruning
325 pruning-outgoing-relation-absent
326 pruning-outgoing-relation-present
327 pruning-outgoing-target-absent
328 pruning-outgoing-target-present
329 pruning-outgoingnaive-target-present
330 pruning-pruning
331 pruning-pruning-false-false
332 pruning-pruning-false-true
333 pruning-pruning-true-false
334 pruning-pruning-true-true
335 Relation Pruning
336 relationships-conditional
337 relationships-throw-multiple
338 relationships-throw-undefined
339 relationships-throw-unused
340 relationships-type-specific
341 requirement-assignment-conditional
342 requirement-assignment-default-alternative
343 requirement-assignment-default-alternative-false
344 requirement-assignment-default-condition
345 requirement-assignment-default-condition-throw-source
346 requirement-assignment-default-condition-throw-target
347 requirement-assignment-one-hosting-relation
348 requirement-assignment-relation-presence-index-absent
349 requirement-assignment-relation-presence-name-absent
350 requirement-assignment-source-presence-absent
351 requirement-assignment-source-presence-present
352 requirement-assignment-target-presence-absent
353 requirement-assignment-target-presence-present
354 requirement-assignment-throw-multiple-defaults
355 Scenario "Alpha"
356 scenario-worker-agent-false
357 scenario-worker-agent-true
358 scenario-worker-worker-false
359 scenario-worker-worker-true
360 technologies-ambiguous
361 technologies-ambiguous-disabled
362 technologies-conditional
363 technologies-constraint
364 technologies-constraint-disabled
365 technologies-default-multiple
366 technologies-default-true
367 technologies-expected
368 technologies-expected-disabled
369 technologies-lowercase
370 technologies-missing
371 technologies-missing-disabled
372 technologies-optimization
373 technologies-optimization-double
374 technologies-optimization-order
375 technologies-optimization-unsat
376 technologies-optimization-weight
377 technologies-pruning
378 technologies-pruning-disabled
379 technologies-rules
380 technologies-rules-v3
381 technologies-throw-required
382 technologies-unique
383 technologies-unique-disabled
384 variability-inputs-implies
385 variability-inputs-no-constraints

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: July 26, 2024