tla-trace-arch 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.org +48 -5
- data/VERSION +1 -1
- data/lib/test-runner/configuration.rb +18 -0
- data/lib/test-runner/iterate_archive_files.rb +85 -0
- data/lib/test-runner/read_archive_file.rb +68 -0
- data/lib/tla_trace_arch.rb +26 -0
- data/mustache/api-call-init.mustache +8 -5
- data/mustache/api-call-post.mustache +2 -0
- data/mustache/arch-call-script.mustache +19 -7
- data/mustache/arch-yaml-afterState.mustache +11 -0
- data/mustache/arch-yaml-api_input.mustache +11 -0
- data/mustache/arch-yaml-api_return.mustache +11 -0
- data/mustache/arch-yaml-beforeState.mustache +12 -0
- data/tla-trace-arch.gemspec +5 -2
- metadata +14 -9
- data/mustache/arch-demo-afterState.mustache +0 -7
- data/mustache/arch-demo-api_input.mustache +0 -6
- data/mustache/arch-demo-api_return.mustache +0 -6
- data/mustache/arch-demo-beforeState.mustache +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 391d89ba6d8725af0ffb27dc83c66e4b5829bdc1
|
4
|
+
data.tar.gz: e4b94cea107ae1cf970354839362263a01d54a6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86c061f880c452907783d9a9bb6ffc23689e1bc040f45884ff90eeef716ef2e5d7a89e6266372164765f01ed5a9eee81e28452dd24e24500148ada6260526731
|
7
|
+
data.tar.gz: 0972e2f0a7e1ca410e60e927a5ccf2e5eaedd1a74b6487876c5d0c4ce460c78929af48dd5c0d39e6192eaec426604dcb3dd3fafa4ca7a87f07dda3c937cbb1af
|
data/README.org
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
A set of [[https://mustache.github.io/mustache.5.html][mustache]] templates extending [[https://github.com/jarjuk/tla-trace-filter][tla-trace-filter]] -tool to create
|
4
4
|
a self extracting achieve for API traces generated, when [[http://research.microsoft.com/en-us/um/people/lamport/tla/tools.html][model
|
5
|
-
checking]] formal models created by [[https://github.com/jarjuk/tla-sbuilder][Sbuilder]] -tool.
|
5
|
+
checking]] formal models created by [[https://github.com/jarjuk/tla-sbuilder][Sbuilder]] -tool. Includes also APIs
|
6
|
+
for iterating files extracted from the archive.
|
6
7
|
|
7
8
|
** Use case
|
8
9
|
|
@@ -31,18 +32,24 @@ being developed by the developer.
|
|
31
32
|
- [X] SHA1 hash to guarantee achieve integrity
|
32
33
|
- [X] Archive creation time stamp, hostname and userid
|
33
34
|
- [ ] Name of property generating API Trace
|
34
|
-
-
|
35
|
+
- Content of Api Trace step in the archive
|
35
36
|
- [X] Before state
|
36
37
|
- [X] Name of interface operation and parameter values
|
37
38
|
- [X] Return values and return status
|
38
39
|
- [X] After state
|
40
|
+
- [X] Defaults YAML dump for =beforeState=, =ap_input=, =api_return=, =afterState=
|
39
41
|
- Archive commands
|
40
42
|
- [X] Help
|
41
43
|
- [X] List steps
|
42
44
|
- [X] Extract by step number
|
43
45
|
- [X] Extract by interface name
|
44
|
-
-
|
46
|
+
- Name of extracted file
|
47
|
+
- [X] File name pattern <step>-<inp|api|ret|out>-<interface>.<SHA1>
|
48
|
+
- Archive extract options
|
45
49
|
- [X] Define target directory for achieve extract
|
50
|
+
- API to acess the extracted files
|
51
|
+
- [X] =Sbuilder::TlaTraceArch::IterateArchiveFiles.iteratateTestCases=
|
52
|
+
- [X] =Sbuilder::TlaTraceArch::ExtractArchiveFile.parserTestCaseFile=
|
46
53
|
- Extension points
|
47
54
|
- [X] Control content of Api Trace Step elements per interface name
|
48
55
|
|
@@ -66,8 +73,15 @@ and run
|
|
66
73
|
bundle install
|
67
74
|
#+END_SRC
|
68
75
|
|
76
|
+
|
69
77
|
** Usage
|
70
78
|
|
79
|
+
For a complete example, starting with installation of sbuilder- tool
|
80
|
+
and creating a formal model, refer to [[./test-trace.org][test-trace.org]].
|
81
|
+
|
82
|
+
|
83
|
+
*** Create Archive
|
84
|
+
|
71
85
|
=tla-trace-filter= uses TLA+tools model checker log output and a YAML
|
72
86
|
file mapping model checker log output to application interfaces.
|
73
87
|
|
@@ -107,6 +121,8 @@ export SETUP=setup1; bundle exec tla-trace-filter.rb api-calls $SETUP --src-di
|
|
107
121
|
chmod +x arch.sh
|
108
122
|
#+END_SRC
|
109
123
|
|
124
|
+
*** Using the Archive
|
125
|
+
|
110
126
|
To show instructions for using the archive run
|
111
127
|
|
112
128
|
#+name: exe-arch
|
@@ -144,8 +160,35 @@ $ usage
|
|
144
160
|
|
145
161
|
#+end_example
|
146
162
|
|
147
|
-
|
148
|
-
|
163
|
+
To extract files in the archive =arch.sh= for API trace step =1= into
|
164
|
+
an existing directory =tmp= run
|
165
|
+
|
166
|
+
#+BEGIN_SRC sh :eval no
|
167
|
+
./arch.sh --dir tmp step 1
|
168
|
+
#+END_SRC
|
169
|
+
|
170
|
+
|
171
|
+
*** Iterate extracted archive files in Ruby
|
172
|
+
|
173
|
+
Files extracted from an archive can be iterated and parsed using APIs
|
174
|
+
in =tla_trace_arch= GEM.
|
175
|
+
|
176
|
+
#+BEGIN_SRC ruby :eval no
|
177
|
+
require 'tla_trace_arch'
|
178
|
+
require 'set'
|
179
|
+
|
180
|
+
# Iterate api-steps for 'interface' extracted into directory 'ARGV[0]'
|
181
|
+
Sbuilder::TlaTraceArch::ReadArchiveFile.iterateApiTraceSteps( ARGV[0], interface ) do |sha1,apiTraceStep|
|
182
|
+
# parse YAML data && output
|
183
|
+
puts "sha1 : #{sha1} = #{apiTraceStep["00-step"]["sha1"]} step=#{apiTraceStep["00-step"]["step"]} interface=#{apiTraceStep["00-step"]["interface"]}"
|
184
|
+
puts "beforeState #{apiTraceStep["01-inp"]}"
|
185
|
+
puts "api_input #{apiTraceStep["02-api"]}"
|
186
|
+
puts "api_return #{apiTraceStep["03-ret"]}"
|
187
|
+
puts "afterState #{apiTraceStep["04-out"]}"
|
188
|
+
end
|
189
|
+
|
190
|
+
#+END_SRC
|
191
|
+
|
149
192
|
|
150
193
|
** Extension point =api-call-init=
|
151
194
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
@@ -0,0 +1,18 @@
|
|
1
|
+
|
2
|
+
module Sbuilder
|
3
|
+
module TlaTraceArch
|
4
|
+
class Configuration
|
5
|
+
|
6
|
+
# @# @!attribute [type] extract_filename_parser set regexp
|
7
|
+
# parser to parse names of extracted archive files
|
8
|
+
attr_writer :extract_filename_parser
|
9
|
+
|
10
|
+
# @return [String] regexp parser to parse names of extracted
|
11
|
+
# archive files
|
12
|
+
def extract_filename_parser
|
13
|
+
self.extract_filename_parser = @extract_filename_parser || Sbuilder::TlaTraceArch::EXTRACT_FILENAME_PARSER
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
|
2
|
+
module Sbuilder
|
3
|
+
module TlaTraceArch
|
4
|
+
module IterateArchiveFiles
|
5
|
+
|
6
|
+
# # ------------------------------------------------------------------
|
7
|
+
# @!group PUblic services
|
8
|
+
|
9
|
+
# iterate apiTraceStep -files files in 'dir' and combine files
|
10
|
+
# with same SHA1 value to ApiTraceStep test hashes. These hashes
|
11
|
+
# are validated using 'validateTestCase' method.
|
12
|
+
#
|
13
|
+
# @param interface [String] if given process only files for
|
14
|
+
# 'interface'
|
15
|
+
#
|
16
|
+
#
|
17
|
+
#
|
18
|
+
# @return [Hash] of test case keyed by sha1
|
19
|
+
def iteratateSbuilderTestCases( dir, interface=nil )
|
20
|
+
testCases = {}
|
21
|
+
iterateFiles(dir) do |fileName|
|
22
|
+
# valid file name parses 'sha1' and type 'type'
|
23
|
+
testInputMatch = matchTestCase( fileName )
|
24
|
+
next if testInputMatch.nil? || !interface.nil? && testInputMatch["interface"] != interface
|
25
|
+
if ( testInputMatch ) then
|
26
|
+
testCases[testInputMatch["sha1"] ] ||= {}
|
27
|
+
testCases[ testInputMatch["sha1"] ][testInputMatch["type"]] = testInputMatch.merge({ "dir" => dir, "fileName" => fileName } )
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# report error if no data found
|
32
|
+
raise "No test input found in directory '#{dir}'" if testCases == {}
|
33
|
+
|
34
|
+
# Validata test case - raise error for invalid
|
35
|
+
testCases.each do |sha1,testCase|
|
36
|
+
validateTestCase testCase, sha1
|
37
|
+
end
|
38
|
+
|
39
|
+
testCases
|
40
|
+
end
|
41
|
+
module_function :iteratateSbuilderTestCases
|
42
|
+
public :iteratateSbuilderTestCases
|
43
|
+
|
44
|
+
|
45
|
+
# @!endgroup
|
46
|
+
|
47
|
+
# # ------------------------------------------------------------------
|
48
|
+
# @!group Helpers
|
49
|
+
|
50
|
+
# check if 'fileName' can parsed with api_step_mask
|
51
|
+
|
52
|
+
def matchTestCase fileName
|
53
|
+
regu = Sbuilder::TlaTraceArch.configuration.extract_filename_parser
|
54
|
+
regu = "(?<step>\\d{3})-(?<type>\\d+-\\w{3})-(?<interface>[^\\.]+)\\.(?<sha1>[0-9a-fA-F]{40})"
|
55
|
+
found = fileName.match( /#{regu}/ )
|
56
|
+
found = found.names.zip( found.captures).to_h unless found.nil?
|
57
|
+
found
|
58
|
+
end
|
59
|
+
module_function :matchTestCase
|
60
|
+
|
61
|
+
|
62
|
+
# yield files in
|
63
|
+
# #{Sbuilder::TestRunner.configuration.api_step_directory}
|
64
|
+
# directory
|
65
|
+
def iterateFiles( dir = Sbuilder::TestRunner.configuration.api_step_directory )
|
66
|
+
raise "No such directory #{dir}" unless Dir.exists?( dir )
|
67
|
+
Dir.foreach( dir ).
|
68
|
+
select { |e| File.file?("#{dir}/#{e}") } .
|
69
|
+
each { |f| yield f }
|
70
|
+
end
|
71
|
+
module_function :iterateFiles
|
72
|
+
|
73
|
+
# Validate that test case 'testCase' defines 4 keys (for
|
74
|
+
# beforeState, api_input, api_return and afterState)
|
75
|
+
def validateTestCase( testCase, sha1 )
|
76
|
+
raise "Missing test input for sha1=#{sha1}, found input #{testCase.keys.join(',')}" if testCase.keys.length != 4
|
77
|
+
end
|
78
|
+
module_function :validateTestCase
|
79
|
+
|
80
|
+
|
81
|
+
# @!endgroup
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
module Sbuilder
|
3
|
+
module TlaTraceArch
|
4
|
+
|
5
|
+
class ParserErrorException < Exception; end
|
6
|
+
module ReadArchiveFile
|
7
|
+
|
8
|
+
# Read (and parse) API trace step from files pointed by
|
9
|
+
# 'apiStepFiles' hash.
|
10
|
+
#
|
11
|
+
# @param apiStepFiles [Hash] hash with values pointing to a file to
|
12
|
+
# read (parse) API trace step
|
13
|
+
#
|
14
|
+
#
|
15
|
+
# @return [Hash] A hash with values in 'apiStepFiles' replaces by
|
16
|
+
# data parsed from files pointed by apiStepFiles
|
17
|
+
# 'dir' and 'fileNmae' properties. The has
|
18
|
+
# includes also a new key "00-step" with value
|
19
|
+
# hash with properties 'interface' and 'sha'
|
20
|
+
def readApiTraceStep( apiStepFiles )
|
21
|
+
apiStepFiles.inject( { "00-step" => {} } ) do |ret, (k,v)|
|
22
|
+
if ret.keys.length == 1
|
23
|
+
ret[ret.keys.first] = {
|
24
|
+
"interface" => v["interface"],
|
25
|
+
"sha1" => v["sha1"],
|
26
|
+
"step" => v["step"],
|
27
|
+
}
|
28
|
+
end
|
29
|
+
ret[k] = parseArchiveFile( File.join( v["dir"], v["fileName"] ))
|
30
|
+
ret
|
31
|
+
end
|
32
|
+
end
|
33
|
+
module_function :readApiTraceStep
|
34
|
+
public :readApiTraceStep
|
35
|
+
|
36
|
+
|
37
|
+
#
|
38
|
+
def iterateApiTraceSteps( dir, interface )
|
39
|
+
IterateArchiveFiles.iteratateSbuilderTestCases( dir, interface).each do |sha1,apiStepFiles|
|
40
|
+
apiTraceStep = readApiTraceStep( apiStepFiles )
|
41
|
+
yield sha1, apiTraceStep
|
42
|
+
end
|
43
|
+
end
|
44
|
+
module_function :iterateApiTraceSteps
|
45
|
+
public :iterateApiTraceSteps
|
46
|
+
|
47
|
+
# Load YAML data from 'filePath'. Raise exception if 'filePath'
|
48
|
+
# does not exist or YAML -load error.
|
49
|
+
def parseArchiveFile( filePath )
|
50
|
+
|
51
|
+
raise "No such file #{filePath}" unless File.exists? filePath
|
52
|
+
begin
|
53
|
+
YAML.load_file( filePath )
|
54
|
+
rescue Exception => err
|
55
|
+
msg = <<-HERE
|
56
|
+
Could not parse file #{filePath}
|
57
|
+
|
58
|
+
#{err}: when trying to parse YAML
|
59
|
+
HERE
|
60
|
+
raise ParserErrorException, msg, err.backtrace
|
61
|
+
end
|
62
|
+
end
|
63
|
+
module_function :parseArchiveFile
|
64
|
+
public :parseArchiveFile
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require_relative "test-runner/configuration.rb"
|
2
|
+
require_relative "test-runner/iterate_archive_files.rb"
|
3
|
+
require_relative "test-runner/read_archive_file.rb"
|
4
|
+
|
5
|
+
|
6
|
+
module Sbuilder
|
7
|
+
module TlaTraceArch
|
8
|
+
|
9
|
+
# Default regexp to parse extracted files
|
10
|
+
EXTRACT_FILENAME_PARSER = "xx"
|
11
|
+
|
12
|
+
def self.configuration
|
13
|
+
@configuration ||= Sbuilder::TlaTraceArch::Configuration.new
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
# Configure Sbuilder::TestRunner
|
18
|
+
def self.configure
|
19
|
+
yield configuration if block_given?
|
20
|
+
end
|
21
|
+
# module_function :configure
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -1,28 +1,31 @@
|
|
1
1
|
{{!
|
2
2
|
|
3
|
-
Override api-call-init.mustache in tla-trace-filter GEM
|
3
|
+
Override api-call-init.mustache in tla-trace-filter GEM.
|
4
|
+
|
5
|
+
Default creates yaml-dumps for step beforeState, api_input,
|
6
|
+
api_return, and afterState.
|
4
7
|
|
5
8
|
}}
|
6
9
|
{{#API_BEFORE_STATE_INIT}}
|
7
|
-
default: arch-
|
10
|
+
default: arch-yaml-beforeState
|
8
11
|
{{/API_BEFORE_STATE_INIT}}{{!
|
9
12
|
|
10
13
|
Configure templates to render API CALL
|
11
14
|
|
12
15
|
}}{{#API_CALL_INIT}}
|
13
|
-
default: arch-
|
16
|
+
default: arch-yaml-api_input
|
14
17
|
{{/API_CALL_INIT}}{{!
|
15
18
|
|
16
19
|
Configure templates to render API_RETURN
|
17
20
|
|
18
21
|
}}{{#API_RETURN_INIT}}
|
19
|
-
default: arch-
|
22
|
+
default: arch-yaml-api_return
|
20
23
|
{{/API_RETURN_INIT}}{{!
|
21
24
|
|
22
25
|
Configure templates to render state after API call
|
23
26
|
|
24
27
|
}}{{#API_AFTER_STATE_INIT}}
|
25
|
-
default: arch-
|
28
|
+
default: arch-yaml-afterState
|
26
29
|
{{/API_AFTER_STATE_INIT}}{{!
|
27
30
|
|
28
31
|
Do not output new-line
|
@@ -7,7 +7,7 @@ arch-call-script.mustache: self extracting stcript
|
|
7
7
|
#!/bin/bash
|
8
8
|
|
9
9
|
echo ""
|
10
|
-
echo "Self
|
10
|
+
echo "Self create by {{META.user}}@{{META.hostname}}"
|
11
11
|
echo ""
|
12
12
|
|
13
13
|
# functions
|
@@ -83,6 +83,9 @@ EOF
|
|
83
83
|
print msg
|
84
84
|
}
|
85
85
|
}
|
86
|
+
function isListCmd() {
|
87
|
+
return cmd == "list"
|
88
|
+
}
|
86
89
|
function escape_pattern(pat, safe) {
|
87
90
|
safe = pat
|
88
91
|
gsub(/[][^$.*?+{}\\()|]/, "\\\\&", safe)
|
@@ -91,7 +94,7 @@ EOF
|
|
91
94
|
# @return [String] name of of file where to extract
|
92
95
|
function extractFileName( dir, prefix ) {
|
93
96
|
# current_step using 3 digits
|
94
|
-
return dir "/" sprintf("%03d", current_step) "-" prefix "-" current_interface_implementation "
|
97
|
+
return dir "/" sprintf("%03d", current_step) "-" prefix "-" current_interface_implementation "." sha1Archive
|
95
98
|
}
|
96
99
|
BEGIN {
|
97
100
|
extract_file=""
|
@@ -105,6 +108,7 @@ EOF
|
|
105
108
|
# step_start= step_start ".*interface=" escape_pattern(interface,interface)
|
106
109
|
step_start= step_start ".*interface=" interface
|
107
110
|
}
|
111
|
+
dbg( "cmd==" cmd " for interface=" interface ", isListCmd=" isListCmd() )
|
108
112
|
dbg( "step_start=" step_start " for interface=" interface )
|
109
113
|
# identify rules
|
110
114
|
step_end="^__END_OF_STEP__"
|
@@ -139,25 +143,33 @@ EOF
|
|
139
143
|
# choose extract file
|
140
144
|
in_step && match( $0, beforeState_start ) {
|
141
145
|
extract_file = extractFileName( extract_dir, "01-inp" )
|
142
|
-
|
146
|
+
if ( isListCmd() ) {
|
147
|
+
print "" > extract_file
|
148
|
+
}
|
143
149
|
dbg( "in_step && beforeState_start:" $0 ", extract_file=" extract_file)
|
144
150
|
next # getline
|
145
151
|
}
|
146
152
|
in_step && match( $0, api_call_start ) {
|
147
153
|
extract_file = extractFileName( extract_dir, "02-api" )
|
148
|
-
|
154
|
+
if ( isListCmd() ) {
|
155
|
+
print "" > extract_file
|
156
|
+
}
|
149
157
|
dbg( "in_step && api_call_start:" $0 ", extract_file=" extract_file )
|
150
158
|
next # getline
|
151
159
|
}
|
152
160
|
in_step && match( $0, api_return_start ) {
|
153
161
|
extract_file = extractFileName( extract_dir, "03-ret" )
|
154
|
-
|
162
|
+
if ( isListCmd() ) {
|
163
|
+
print "" > extract_file
|
164
|
+
}
|
155
165
|
dbg( "in_step && api_return_start:" $0 ", extract_file=" extract_file )
|
156
166
|
next # getline
|
157
167
|
}
|
158
168
|
in_step && match( $0, afterState_start ) {
|
159
169
|
extract_file = extractFileName( extract_dir, "04-out" )
|
160
|
-
|
170
|
+
if ( isListCmd() ) {
|
171
|
+
print "" > extract_file
|
172
|
+
}
|
161
173
|
dbg( "in_step && afterState_start:" $0 ", extract_file=" extract_file )
|
162
174
|
next # getline
|
163
175
|
}
|
@@ -183,7 +195,7 @@ EOF
|
|
183
195
|
next # getline
|
184
196
|
}
|
185
197
|
# extract?
|
186
|
-
|
198
|
+
( ! isListCmd() && length(extract_file) > 0 ) {
|
187
199
|
print $0 >> extract_file
|
188
200
|
}
|
189
201
|
# done
|
@@ -0,0 +1,11 @@
|
|
1
|
+
{{!
|
2
|
+
arch-yaml-afterState: default template outputting YAML dump for
|
3
|
+
API trace `afterState`
|
4
|
+
}}#
|
5
|
+
# Step {{now}} call to {{interface.interface_operation}} afterState
|
6
|
+
{{#DUMP_YAML}}afterState{{/DUMP_YAML}}
|
7
|
+
{{!
|
8
|
+
Local Variables:
|
9
|
+
require-final-newline: nil
|
10
|
+
End:
|
11
|
+
}}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
{{!
|
2
|
+
arch-yaml-api_input: default template outputting YAML dump for
|
3
|
+
API trace `api_input`
|
4
|
+
}}#
|
5
|
+
# Step {{now}} call to {{interface.interface_operation}} api_input
|
6
|
+
{{#DUMP_YAML}}api_input{{/DUMP_YAML}}
|
7
|
+
{{!
|
8
|
+
Local Variables:
|
9
|
+
require-final-newline: nil
|
10
|
+
End:
|
11
|
+
}}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
{{!
|
2
|
+
arch-yaml-api_return: default template outputting YAML dump for
|
3
|
+
API trace `api_return`
|
4
|
+
}}#
|
5
|
+
# Step {{now}} call to {{interface.interface_operation}} api_return
|
6
|
+
{{#DUMP_YAML}}api_return{{/DUMP_YAML}}
|
7
|
+
{{!
|
8
|
+
Local Variables:
|
9
|
+
require-final-newline: nil
|
10
|
+
End:
|
11
|
+
}}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
{{!
|
2
|
+
arch-yaml-beforeState: default template outputting YAML dump for
|
3
|
+
API trace `beforeState`
|
4
|
+
}}#
|
5
|
+
#
|
6
|
+
# Step {{now}} call to {{interface.interface_operation}} beforeState
|
7
|
+
{{#DUMP_YAML}}beforeState{{/DUMP_YAML}}
|
8
|
+
{{!
|
9
|
+
Local Variables:
|
10
|
+
require-final-newline: nil
|
11
|
+
End:
|
12
|
+
}}
|
data/tla-trace-arch.gemspec
CHANGED
@@ -22,6 +22,9 @@ Gem::Specification.new do |s|
|
|
22
22
|
to create a self extracting achieve for API traces generated, when
|
23
23
|
model checking formal models created by [tla-Sbuilder] -tool.
|
24
24
|
|
25
|
+
Also includes Ruby classes to extract test cases from archive
|
26
|
+
extract.
|
27
|
+
|
25
28
|
Use case:
|
26
29
|
|
27
30
|
Formal models, built using [tla-sbuilder], and model checked using
|
@@ -52,13 +55,13 @@ Gem::Specification.new do |s|
|
|
52
55
|
EOF
|
53
56
|
|
54
57
|
s.authors = ["jarjuk"]
|
55
|
-
s.files = ["README.org", "VERSION", "#{s.name}.gemspec" ] | Dir.glob("mustache/**/*")
|
58
|
+
s.files = ["README.org", "VERSION", "#{s.name}.gemspec" ] | Dir.glob("mustache/**/*") | Dir.glob("lib/**/*")
|
56
59
|
s.require_paths = [ "lib" ]
|
57
60
|
# s.executables = [ "tla-trace-filter.rb" ]
|
58
61
|
s.license = 'MIT'
|
59
62
|
|
60
63
|
s.required_ruby_version = '~> 2', ">=2.3"
|
61
64
|
|
62
|
-
s.add_runtime_dependency 'tla-trace-filter', '~>0.0', ">=0.0.
|
65
|
+
s.add_runtime_dependency 'tla-trace-filter', '~>0.0', ">=0.0.6"
|
63
66
|
|
64
67
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tla-trace-arch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jarjuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tla-trace-filter
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '0.0'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.0.
|
22
|
+
version: 0.0.6
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,10 +29,11 @@ dependencies:
|
|
29
29
|
version: '0.0'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.0.
|
32
|
+
version: 0.0.6
|
33
33
|
description: "\n A set of [mustache] templates extending [tla-trace-filter] -tool\n
|
34
34
|
\ to create a self extracting achieve for API traces generated, when\n model
|
35
|
-
checking formal models created by [tla-Sbuilder] -tool.\n\n
|
35
|
+
checking formal models created by [tla-Sbuilder] -tool.\n\n Also includes Ruby
|
36
|
+
classes to extract test cases from archive\n extract.\n\n Use case:\n\n Formal
|
36
37
|
models, built using [tla-sbuilder], and model checked using\n [TLA+tools]], can
|
37
38
|
generate /API Traces/, which represent\n end-to-end scenarios executing across
|
38
39
|
system services in the\n formal model. An API Trace is composed of steps, with
|
@@ -56,6 +57,10 @@ extra_rdoc_files: []
|
|
56
57
|
files:
|
57
58
|
- README.org
|
58
59
|
- VERSION
|
60
|
+
- lib/test-runner/configuration.rb
|
61
|
+
- lib/test-runner/iterate_archive_files.rb
|
62
|
+
- lib/test-runner/read_archive_file.rb
|
63
|
+
- lib/tla_trace_arch.rb
|
59
64
|
- mustache/api-call-after-state-post.mustache
|
60
65
|
- mustache/api-call-after-state-pre.mustache
|
61
66
|
- mustache/api-call-before-state-post.mustache
|
@@ -72,10 +77,10 @@ files:
|
|
72
77
|
- mustache/api-call-step-post.mustache
|
73
78
|
- mustache/api-call-step-pre.mustache
|
74
79
|
- mustache/arch-call-script.mustache
|
75
|
-
- mustache/arch-
|
76
|
-
- mustache/arch-
|
77
|
-
- mustache/arch-
|
78
|
-
- mustache/arch-
|
80
|
+
- mustache/arch-yaml-afterState.mustache
|
81
|
+
- mustache/arch-yaml-api_input.mustache
|
82
|
+
- mustache/arch-yaml-api_return.mustache
|
83
|
+
- mustache/arch-yaml-beforeState.mustache
|
79
84
|
- tla-trace-arch.gemspec
|
80
85
|
homepage:
|
81
86
|
licenses:
|