tla-sbuilder 0.3.4 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +65 -70
  3. data/VERSION +1 -1
  4. data/lib/sbuilder/constants.rb +4 -4
  5. data/lib/sbuilder/controller.rb +232 -76
  6. data/lib/sbuilder/default-sbuilder.yaml +66 -22
  7. data/lib/sbuilder/facade/api_loader_facade.rb +47 -11
  8. data/lib/sbuilder/facade/facade_constants.rb +26 -0
  9. data/lib/sbuilder/facade/loader_plugin_root.rb +4 -1
  10. data/lib/sbuilder/facade/param_set_root.rb +38 -1
  11. data/lib/sbuilder/facade/snippet_loader_facade.rb +90 -8
  12. data/lib/sbuilder/factory.rb +9 -4
  13. data/lib/sbuilder/model.rb +25 -3
  14. data/lib/sbuilder/param_set.rb +8 -7
  15. data/mustache/cfg/const_def.mustache +2 -0
  16. data/mustache/{setup → config}/assumptions_activate.mustache +0 -0
  17. data/mustache/{setup → config}/domains_run.mustache +0 -0
  18. data/mustache/config/module_footer.mustache +1 -0
  19. data/mustache/config/module_header.mustache +10 -0
  20. data/mustache/{setup → config}/operator_run.mustache +0 -0
  21. data/mustache/{setup → config}/operator_tick.mustache +0 -0
  22. data/mustache/config/steps_run.mustache +43 -0
  23. data/mustache/{setup → config}/steps_run_bind_rule.mustache +5 -2
  24. data/mustache/{setup → config}/steps_run_bind_set.mustache +11 -5
  25. data/mustache/{setup → config}/steps_run_parameterBind.mustache +10 -4
  26. data/mustache/{setup → config}/steps_run_parameterExact.mustache +11 -3
  27. data/mustache/inherit/inherit_config.mustache +29 -0
  28. data/mustache/interface_processes.mustache +6 -2
  29. data/mustache/interfaces/interface_mapper.mustache +12 -0
  30. data/mustache/possibility/module_extends.mustache +1 -1
  31. data/mustache/possibility/operator_set_step_input.mustache +8 -0
  32. data/mustache/possibility/possibility_definition.mustache +4 -4
  33. data/mustache/possibility/possility_setup.mustache +4 -3
  34. data/mustache/setup/module_header.mustache +3 -1
  35. data/mustache/setup/operator_set_step_input.mustache +8 -0
  36. data/mustache/state_type_invariant-infrastructure-service.mustache +2 -2
  37. data/mustache/tla/const_def.mustache +1 -0
  38. data/mustache/tla/macro_run.mustache +10 -2
  39. data/mustache/tla/plc_run_state.mustache +2 -0
  40. data/src/pet/infrastructure_id_get.tla +6 -2
  41. data/src/pet/service_pet_post.tla +2 -2
  42. data/src/pet/service_tag_post.tla +1 -1
  43. data/tla-sbuilder.gemspec +1 -1
  44. metadata +21 -13
  45. data/mustache/setup/steps_run.mustache +0 -23
@@ -169,7 +169,7 @@ module Sbuilder
169
169
  # return 'objectName' plugin instance, or create new plugin object
170
170
  # with 'className.new'.configure( configuration )
171
171
  #
172
- # @param [String] className name of the plugin, if nil objectName
172
+ # @param [String, Class] className name of the plugin, if nil objectName
173
173
  # must be nil
174
174
  #
175
175
  # @param [Object] configuration to pass to className.new
@@ -210,7 +210,7 @@ module Sbuilder
210
210
 
211
211
  # create new 'unnamed object'
212
212
 
213
- if loaderPlugins[className].nil? then
213
+ if className.is_a?(String) && loaderPlugins[className].nil? then
214
214
  msg = <<-EOS
215
215
  Unknown parameter className #{className}"
216
216
 
@@ -220,8 +220,13 @@ module Sbuilder
220
220
  @logger.error( "#{__method__} #{msg}" )
221
221
  raise NameError.new( msg )
222
222
  end
223
- newObject = loaderPlugins[className].new( options )
224
- newObject.configure( configuration ) if configuration
223
+
224
+ klass = className.is_a?( String ) ? loaderPlugins[className] : className
225
+
226
+ # newObject = loaderPlugins[className].new( options )
227
+ newObject = klass.new( options )
228
+ # newObject.configure( configuration ) if configuration #
229
+ newObject.configure( configuration )
225
230
  return newObject
226
231
  end
227
232
  end
@@ -114,7 +114,7 @@ module Sbuilder
114
114
 
115
115
  def getDomain( domainName )
116
116
  ret = domains[domainName]
117
- raise ModelException.new "Could not locate domain set #{domainName}" unless ret
117
+ raise ModelException.new "Could not locate domain set #{domainName}, known domains #{domains.keys.join(",")}" unless ret
118
118
  return ret
119
119
  end
120
120
 
@@ -369,8 +369,25 @@ module Sbuilder
369
369
  # :interface_id => step.interfaceReference.getId,
370
370
  '_comma' => (i< steps.length-1 ? "," : ""),
371
371
  :bindRule => step.bindExact == false ? step.inputs : false,
372
- # :bindSets => step.bindExact ? step.inputs.map.with_index { |input,i| input['_comma'] = i<step.inputs.length-1 ? ',' : ''; input } : false,
373
- :bindSets => step.bindExact ? step.inputs : false,
372
+ :bindRules => step.bindExact == false ?
373
+ # for bindRules i.e. when bindSets== false:
374
+ # mustache iterates set with these elements
375
+ step.inputs.map.with_index do |input,index|
376
+ {
377
+ :process => step.getName,
378
+ :interface_name => step.interfaceReference.getName,
379
+ :interface_operation => step.interfaceReference.getId,
380
+ :interface_path => step.interfaceReference.path,
381
+ :bindRule => input,
382
+ "_comma" => (index<step.inputs.length-1 ? "," : ""),
383
+ }
384
+ end :
385
+ false,
386
+ # :bindSets => step.bindExact ? step.inputs.map.with_index { |input,i| input['_comma'] = i<step.inputs.length-1 ? ',' : ''; input } : false,
387
+ # for 'bindSets' bindRules == false mustache step is
388
+ # one entry with set for 'bindSets' elements
389
+ :bindSets => step.bindExact ? step.inputs : false,
390
+ :noBinds => step.inputs.length == 0,
374
391
  }
375
392
  },
376
393
  }
@@ -455,6 +472,11 @@ module Sbuilder
455
472
  :interface_name => iface.getName, # e.g._pet_post_
456
473
  :interface_operation => iface.getId, # e.g /pet(post)
457
474
  :implementation => getImplementationExtension( iface ),
475
+ :source => {
476
+ :sourceModule => iface.sourceModule,
477
+ :sourceLine => iface.sourceLine,
478
+ :sourceColumn => iface.sourceColumn,
479
+ },
458
480
  :completion => getCompletionExtension( iface ),
459
481
  '_comma' => ',',
460
482
  :parameter_definitions => iface.parameter_definitions( self ),
@@ -103,13 +103,14 @@ module Sbuilder
103
103
 
104
104
  # getId with invalid-caharacters as underscpce
105
105
  def getName
106
- return getId.
107
- gsub( /\//, "_" ). # / --> _
108
- gsub( /\(/, "_" ). # ( --> _
109
- gsub( /\{/, "_" ). # { --> _
110
- gsub( /\}/, "_" ). # } --> _
111
- gsub( /\./, "_" ). # . --> _
112
- gsub( /\)/, "_" ) # ) --> _
106
+ self.class.id2name(getId)
107
+ # return getId.
108
+ # gsub( /\//, "_" ). # / --> _
109
+ # gsub( /\(/, "_" ). # ( --> _
110
+ # gsub( /\{/, "_" ). # { --> _
111
+ # gsub( /\}/, "_" ). # } --> _
112
+ # gsub( /\./, "_" ). # . --> _
113
+ # gsub( /\)/, "_" ) # ) --> _
113
114
 
114
115
  end
115
116
 
@@ -8,3 +8,5 @@ CONSTANT Abort = Abort
8
8
  (* Pluscal sets 'defaultInitValue' for unitialized variables *)
9
9
  CONSTANT defaultInitValue <- Nil
10
10
 
11
+ (* Defined in extending modules *)
12
+ CONSTANT SetStepInput <- Run_SetStepInput
@@ -0,0 +1 @@
1
+ =============================================================================
@@ -0,0 +1,10 @@
1
+ Model version: {{META.model_version}}
2
+ Generator version: {{META.version}}
3
+ Generation timestemp: {{META.timestamp}}
4
+
5
+ ------------------------------ MODULE config ------------------------------
6
+ (* Common configuration module for various setup run configuration *)
7
+
8
+ EXTENDS model, TLC
9
+
10
+
@@ -0,0 +1,43 @@
1
+
2
+ (******************************************************************
3
+ Environment model running the steps
4
+
5
+ {{META.desc}}
6
+ - modelData {{META.modelData}}
7
+ - template {{META.template}}
8
+ ******************************************************************)
9
+
10
+
11
+ RunSteps == <<
12
+ {{#steps}} {{!
13
+
14
+ Start set {
15
+
16
+ }} {
17
+ {{!
18
+ Generate noBinds (!bindExact && !bindRules)
19
+ }}{{#noBinds}} [ process |-> "p_{{process}}"
20
+ , bindRule |-> WildCard
21
+ , bindSet |-> Nil
22
+ , ctx |-> Nil
23
+ ] {{/noBinds}}{{^noBinds}}{{!
24
+
25
+ Generate for bindExact
26
+
27
+ }}{{#bindSets.length}} [ process |-> "p_{{process}}"
28
+ , bindRule |-> {{>config/steps_run_bind_rule.mustache }}
29
+ , bindSet |-> {{>config/steps_run_bind_set.mustache }}
30
+ , ctx |-> Nil
31
+ ]{{/bindSets.length}}{{!
32
+
33
+ Generat for bindRules
34
+ }}{{^bindSets}}{{#bindRules}}[ process |-> "p_{{process}}"
35
+ , bindRule |-> {{>config/steps_run_bind_rule.mustache }}
36
+ , bindSet |-> {{>config/steps_run_bind_set.mustache }}
37
+ , ctx |-> Nil
38
+ ]{{_comma}}{{/bindRules}}{{/bindSets}}{{/noBinds}}
39
+ } {{_comma}} (* interface/process : {{process}} *)
40
+ {{/steps}}
41
+
42
+ >>
43
+
@@ -17,7 +17,7 @@
17
17
 
18
18
  Iterate 'bindRule' for each column
19
19
 
20
- }}{{/columns.length}}{{#columns}}{{>setup/steps_run_parameterBind.mustache}}{{/columns}}{{!
20
+ }}{{/columns.length}}{{#columns}}{{>config/steps_run_parameterBind.mustache}}{{/columns}}{{!
21
21
 
22
22
  end of some columns defined
23
23
 
@@ -48,4 +48,7 @@
48
48
  }}{{^bindRule}}WildCard{{/bindRule}}{{!
49
49
 
50
50
  No new line --> outputs on one line
51
- }}
51
+ Local Variables:
52
+ require-final-newline: nil
53
+ End:
54
+ }}
@@ -3,7 +3,8 @@
3
3
 
4
4
  - open with {
5
5
 
6
- }}{{#bindSets.length}} { {{/bindSets.length}}{{#bindSets}}{{!
6
+ }}{{#bindSets.length}} {
7
+ {{/bindSets.length}}{{#bindSets}}{{!
7
8
 
8
9
 
9
10
 
@@ -11,13 +12,14 @@
11
12
  - iterate each input as an record
12
13
 
13
14
 
14
- }} {{#columns.length}}[ {{/columns.length}}{{>setup/steps_run_parameterExact.mustache}}{{#columns.length}} ] {{/columns.length}}{{!
15
+ }} {{#columns.length}}[ {{/columns.length}}{{>config/steps_run_parameterExact.mustache}}{{#columns.length}} ] {{/columns.length}}{{!
15
16
 
16
17
  End of bind set iteration
17
18
 
18
19
  output _comma (to separate bind sets
19
20
 
20
- }}{{_comma}}{{/bindSets}}{{!
21
+ }}{{_comma}}
22
+ {{/bindSets}}{{!
21
23
 
22
24
 
23
25
  End of bind set
@@ -33,5 +35,9 @@
33
35
 
34
36
 
35
37
  }}Nil{{/bindSets}}{{!
36
- No new line --> output to one line
37
- }}
38
+ No new line --> output to one line
39
+
40
+ Local Variables:
41
+ require-final-newline: nil
42
+ End:
43
+ }}
@@ -60,7 +60,7 @@
60
60
  Here recurse columns
61
61
 
62
62
 
63
- }}{{#columns}}{{>setup/steps_run_parameterBind.mustache}}{{/columns}}{{!
63
+ }}{{#columns}}{{>config/steps_run_parameterBind.mustache}}{{/columns}}{{!
64
64
 
65
65
  end of columsn iteration
66
66
 
@@ -77,14 +77,20 @@ Start array parameter
77
77
 
78
78
  }}{{#rows}}{{!
79
79
  row with singleton elements (i.e. columns: false )
80
- }}{{^columns.length}}{{>setup/steps_run_parameterBind.mustache}} {{/columns.length}}{{!
80
+ }}{{^columns.length}}{{>config/steps_run_parameterBind.mustache}} {{/columns.length}}{{!
81
81
 
82
82
  row with hash element starts (i.e. columns.length defined )
83
83
 
84
- }}{{#columns.length}}[ {{/columns.length}}{{#columns}}{{>setup/steps_run_parameterBind.mustache}} {{/columns}} {{!
84
+ }}{{#columns.length}}[ {{/columns.length}}{{#columns}}{{>config/steps_run_parameterBind.mustache}} {{/columns}} {{!
85
85
  row with hash element ends
86
86
  }}{{#columns.length}} ]{{_comma}}{{/columns.length}} {{/rows}}{{!
87
87
 
88
88
  End of rows
89
89
 
90
- }}{{#rows.length}} } ]}{{_comma}} {{/rows.length}}
90
+ }}{{#rows.length}} } ]}{{_comma}} {{/rows.length}}{{!
91
+
92
+ No new line --> outputs on one line
93
+ Local Variables:
94
+ require-final-newline: nil
95
+ End:
96
+ }}
@@ -69,15 +69,23 @@
69
69
 
70
70
  when iterating rows check if row defines columns (i.e. columns.length given ) --> surround with [ ... ]
71
71
 
72
- }}{{#columns.length}}[ {{/columns.length}} {{>setup/steps_run_parameterExact.mustache}} {{#columns.length}} ]{{/columns.length}}{{_comma}}{{/rows}}{{#rows.length}} }{{/rows.length}}{{!
72
+ }}{{#columns.length}}[ {{/columns.length}} {{>config/steps_run_parameterExact.mustache}} {{#columns.length}} ]{{/columns.length}}{{_comma}}
73
+ {{/rows}}{{#rows.length}} }{{/rows.length}}{{!
73
74
 
74
75
  Case 5: columns
75
76
  - output [
76
77
  <recursion>
77
78
  - output ]
78
79
 
79
- }}{{#columns.length}}[ {{>setup/steps_run_parameterExact.mustache}} ] {{/columns.length}}{{!
80
+ }}{{#columns.length}}[ {{>config/steps_run_parameterExact.mustache}} ] {{/columns.length}}{{!
80
81
 
81
82
  End of columns (add comma)
82
83
 
83
- }}{{_comma}}{{/columns}}{{! no new line }}
84
+ }}{{_comma}}{{/columns}}{{!
85
+
86
+ no new line
87
+
88
+ Local Variables:
89
+ require-final-newline: nil
90
+ End:
91
+ }}
@@ -0,0 +1,29 @@
1
+ (*
2
+
3
+ Model version: {{META.model_version}}
4
+ Generator version: {{META.version}}
5
+ Generation timestemp: {{META.timestamp}}
6
+
7
+ *)
8
+
9
+ \* Configuration included from {{META.setup}}/config.cfg
10
+
11
+
12
+ \* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
13
+ \* Start here
14
+
15
+ {{!
16
+
17
+ Concatenate content of config.cfg for current setup 'META.setup'
18
+ generated under directory 'CONFIG.gen_dir'.
19
+
20
+ }}
21
+ {{#ACTIONS.cat}}
22
+ {{CONFIG.gen_dir}}/{{META.setup}}/tla/config.cfg
23
+ {{/ACTIONS.cat}}
24
+
25
+
26
+ \* End here
27
+ \* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
+
29
+ \* Possible configs on top of 'config.cfg' follow this line
@@ -19,8 +19,12 @@ fair process ({{#SPEC_NAME}}processes.{{interface_operation}}{{/SPEC_NAME}}="{{i
19
19
  (* enable next process to run parallel *)
20
20
  \* process_done( "{{interface_operation}}" );
21
21
  with ( _input \in { t \in ProcessParameterInput( {{#SPEC_NAME}}interface_types.{{interface_operation}}{{/SPEC_NAME}} ) : ProcessParameterBind( t ) } ) {
22
+ \* step_input allows extracting input from error trace - at the cost of creating extra state
23
+ if ( SetStepInput ) {
24
+ step_input := _input;
25
+ };
22
26
  \* PREFERENCES.debug-output: {{PREFERENCES.debug-output}}
23
- {{^PREFERENCES.debug-output}}\* {{/PREFERENCES.debug-output}}print <<"Default process {{#SPEC_NAME}}processes.{{interface_operation}}{{/SPEC_NAME}} for operation '{{interface_operation}}',tick=", currentTime>>;
27
+ {{^PREFERENCES.debug-output}}\* {{/PREFERENCES.debug-output}}print <<"Default process {{#SPEC_NAME}}processes.{{interface_operation}}{{/SPEC_NAME}} for operation '{{interface_operation}}',tick=", currentTime, "input=", step_input >>;
24
28
  {{^implementation}}
25
29
  {{^PREFERENCES.debug-output}}\* {{/PREFERENCES.debug-output}}print <<" - input=>", _input >>;
26
30
  (* print <<" - {{#SPEC_NAME}}interface_types.{{interface_operation}}{{/SPEC_NAME}} =>", {{#SPEC_NAME}}interface_types.{{interface_operation}}{{/SPEC_NAME}} >>; *)
@@ -38,7 +42,7 @@ fair process ({{#SPEC_NAME}}processes.{{interface_operation}}{{/SPEC_NAME}}="{{i
38
42
  }; \* with _input
39
43
  (* enable next process - after current process *)
40
44
  {{#SPEC_NAME}}processes.{{interface_operation}}{{/SPEC_NAME}}_exit:
41
- {{#completion}}{{completion}}( "{{interface_operation}}" );
45
+ {{#completion}}{{#SPEC_NAME}}{{completion}}{{/SPEC_NAME}}( "{{interface_operation}}" );
42
46
  {{/completion}}{{!
43
47
 
44
48
  above adds call to completion macro (to simulate transactions)
@@ -0,0 +1,12 @@
1
+ {{!
2
+
3
+ Reverse map interfaces
4
+
5
+
6
+
7
+ }}
8
+ # Interfaces {{META.desc}}
9
+ # - modelData {{META.modelData}}
10
+ # - template {{META.template}}
11
+ {{{dump}}}
12
+
@@ -1 +1 @@
1
- EXTENDS setup
1
+ EXTENDS config
@@ -0,0 +1,8 @@
1
+
2
+ (* Save process input to variable 'step_input' at start?
3
+ ** Setting this variable allows presenting process input
4
+ ** in error trace, however, at the cost of possibly generating
5
+ ** an extra state (in a case, where different input bindings
6
+ ** would result otherwise to identical states).
7
+ *)
8
+ Run_SetStepInput == TRUE
@@ -1,10 +1,10 @@
1
1
 
2
2
  (*
3
- Define possibility for operator {{possibility}}
3
+ Define possibility for operator '{{possibility}}'.
4
4
 
5
- We require that {{META.outputModule}} is false allways.
6
- Interpreat violation of this property that it is possible
7
- to reach a state where the property holds.
5
+ We require that '{{META.outputModule}}' is false always.
6
+ Interpret violation of this property to mean that it is
7
+ possible to reach a state where the operator holds.
8
8
 
9
9
  *)
10
10
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  *)
8
8
 
9
- \* Configuration taken from {{META.setup}}/setup.cfg
9
+ \* Configuration included from {{META.setup}}/config.cfg
10
10
 
11
11
 
12
12
  \* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@ -14,15 +14,16 @@
14
14
 
15
15
  {{!
16
16
 
17
- Concatenate content of setup.cfg for current setup 'META.setup'
17
+ Concatenate content of config.cfg for current setup 'META.setup'
18
18
  generated under directory 'CONFIG.gen_dir'.
19
19
 
20
20
  }}
21
21
  {{#ACTIONS.cat}}
22
- {{CONFIG.gen_dir}}/{{META.setup}}/tla/setup.cfg
22
+ {{CONFIG.gen_dir}}/{{META.setup}}/tla/config.cfg
23
23
  {{/ACTIONS.cat}}
24
24
 
25
25
 
26
26
  \* End here
27
27
  \* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
28
 
29
+ \* Possible configs on top of 'config.cfg' follow this line
@@ -4,6 +4,8 @@ Generation timestemp: {{META.timestamp}}
4
4
 
5
5
  ------------------------------ MODULE setup ------------------------------
6
6
 
7
- EXTENDS model, TLC
7
+ (* Module to check correctness *)
8
+
9
+ EXTENDS config
8
10
 
9
11
 
@@ -0,0 +1,8 @@
1
+
2
+ (* Save process input to variable 'step_input' at start?
3
+ ** Setting this variable allows presenting process input
4
+ ** in error trace, however, at the cost of possibly generating
5
+ ** an extra state (in a case, where different input bindings
6
+ ** would result otherwise to identical states).
7
+ *)
8
+ Run_SetStepInput == FALSE
@@ -24,13 +24,13 @@
24
24
 
25
25
  iterate response definitions
26
26
 
27
- }}{{#response_definitions}}{{!
27
+ }}{{#response_definitions.length}}{{!
28
28
 
29
29
  end of response definitions
30
30
 
31
31
  add ???
32
32
 
33
- }} \union {{#SPEC_NAME}}{{metatype}}.{{type}}{{/SPEC_NAME}}{{/response_definitions}}{{!
33
+ }} \union {{#SPEC_NAME}}interface_response_types.{{interface_operation}}{{/SPEC_NAME}}{{/response_definitions.length}} {{!
34
34
 
35
35
  end of intefaces
36
36