cucumber-performance-generator 0.0.2 → 0.0.3
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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9dda1580907bf1af524c86537d88bba456c2ea21
|
4
|
+
data.tar.gz: b9314f332ed6299d6bf73357cfa7a79d3c3e62e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db44c8205309622bca53d12c960e483dc0d2a731b00be1da554abf194779027999695acb24937edaf2793b803eb524e6b85ad8fa612b373033c51760bbfee839
|
7
|
+
data.tar.gz: cfa0ecd04a78738ce4430df76b1a64866751fb82c50468ce1daaaff5ccdb9b02b98dd4ab9eae1c819b55911c6f9e6587aa35f1d5beff92a5ad0ebede66a46a79
|
@@ -60,6 +60,67 @@ def recursive_list_variable(variable, prev = '')
|
|
60
60
|
end
|
61
61
|
|
62
62
|
|
63
|
+
|
64
|
+
|
65
|
+
#####
|
66
|
+
## Function: recursive_escape_hasharray
|
67
|
+
## Inputs: variable (any Hash/Array/nil) prev (string of current path)
|
68
|
+
## Outputs: Flat hash (key = path, value = value)
|
69
|
+
## Description: This function creates a flat hash of the object so it can be
|
70
|
+
## easily used to paramterise the performance script.
|
71
|
+
## This is a recursive function.
|
72
|
+
#####
|
73
|
+
def recursive_escape_hasharray(variable, char='"')
|
74
|
+
|
75
|
+
# create the hash
|
76
|
+
|
77
|
+
data = variable
|
78
|
+
|
79
|
+
## If the variable is an array we need to use .each_with_index.
|
80
|
+
if (variable.kind_of?(Array)) then
|
81
|
+
|
82
|
+
# Loop through the items of the array
|
83
|
+
variable.each_with_index do |value, key|
|
84
|
+
|
85
|
+
# If the child is either an Array or Hash then it needs to be put
|
86
|
+
# back into this function.
|
87
|
+
if ((variable[key].kind_of?(Array)) || (variable[key].kind_of?(Hash))) then
|
88
|
+
data[key] = recursive_escape_hasharray(variable[key])
|
89
|
+
elsif (variable[key].kind_of?(String))
|
90
|
+
data[key] = value.gsub(/#{char}/, '\\' + char)
|
91
|
+
else
|
92
|
+
data[key] = value
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
# The same code as above, but instead needs to use .each
|
97
|
+
elsif (variable.kind_of?(Hash)) then
|
98
|
+
|
99
|
+
# Loop through the items of the array
|
100
|
+
variable.each do |key, value|
|
101
|
+
|
102
|
+
# If the child is either an Array or Hash then it needs to be put
|
103
|
+
# back into this function.
|
104
|
+
if ((variable[key].kind_of?(Array)) || (variable[key].kind_of?(Hash))) then
|
105
|
+
data[key] = recursive_escape_hasharray(variable[key])
|
106
|
+
elsif (variable[key].kind_of?(String))
|
107
|
+
data[key] = value.gsub(/#{char}/, '\\' + char)
|
108
|
+
else
|
109
|
+
data[key] = value
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
113
|
+
# If it is nil, then we need to return a hash still, this will be reworked in the future
|
114
|
+
end
|
115
|
+
|
116
|
+
# Return data hash
|
117
|
+
return data
|
118
|
+
end
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
|
63
124
|
#####
|
64
125
|
## Function: generate_performance_test_script
|
65
126
|
## Inputs: scenario object (this contains data about the scenario. i.e. name)
|
@@ -99,10 +160,12 @@ def generate_performance_test_script(scenario)
|
|
99
160
|
end
|
100
161
|
|
101
162
|
|
163
|
+
|
164
|
+
|
102
165
|
# Lets create the basic structure of the file
|
103
166
|
file_structure = %{
|
104
167
|
|
105
|
-
|
168
|
+
# Scenario Name: #{scenario.name}
|
106
169
|
|
107
170
|
class #{scenario_name}
|
108
171
|
|
@@ -121,20 +184,14 @@ def generate_performance_test_script(scenario)
|
|
121
184
|
@curl.follow_location = true
|
122
185
|
@curl.enable_cookies = true
|
123
186
|
|
124
|
-
#v_action end
|
125
|
-
end
|
126
187
|
|
127
|
-
def v_end()
|
128
|
-
|
129
|
-
#v_end end
|
130
|
-
end
|
131
|
-
|
132
|
-
end
|
133
188
|
|
134
189
|
}
|
135
190
|
|
191
|
+
write_line_to_performance_test_file(perf_file_name, file_structure, true)
|
192
|
+
|
136
193
|
# Lets write that to a file
|
137
|
-
File.open(perf_file_name, 'w') { |file| file.write(file_structure) }
|
194
|
+
#File.open(perf_file_name, 'w') { |file| file.write(file_structure) }
|
138
195
|
|
139
196
|
end
|
140
197
|
|
@@ -169,7 +226,10 @@ def generate_performance_test_script(scenario)
|
|
169
226
|
# the variable $function_call_data contains the data that is returned
|
170
227
|
# from each function. However this data is nested in a hash.
|
171
228
|
# We need to get a flat structure.
|
172
|
-
|
229
|
+
|
230
|
+
temp_function_call_data = recursive_escape_hasharray($function_call_data[i2])
|
231
|
+
|
232
|
+
value_list = recursive_list_variable(temp_function_call_data)
|
173
233
|
# Loop through the flat structure results to do a replace
|
174
234
|
# on the value with a variable
|
175
235
|
value_list.each do |data_key, data_value|
|
@@ -198,7 +258,9 @@ def generate_performance_test_script(scenario)
|
|
198
258
|
# the variable $function_call_data contains the data that is returned
|
199
259
|
# from each function. However this data is nested in a hash.
|
200
260
|
# We need to get a flat structure.
|
201
|
-
|
261
|
+
|
262
|
+
temp_function_call_data = recursive_escape_hasharray($function_call_data[i2])
|
263
|
+
value_list = recursive_list_variable(temp_function_call_data)
|
202
264
|
# Loop through the flat structure results to do a replace
|
203
265
|
# on the value with a variable
|
204
266
|
value_list.each do |data_key, data_value|
|
@@ -212,8 +274,10 @@ def generate_performance_test_script(scenario)
|
|
212
274
|
func_value = func_value.gsub(/\=\>"#{data_value.to_s.gsub('(', '\(').gsub(')', '\)')}\}"/is, '=>"#{' + "genData#{i2}" + data_key + '}"}')
|
213
275
|
func_value = func_value.gsub(/\["#{data_value.to_s.gsub('(', '\(').gsub(')', '\)')}"\]/is, '["#{' + "genData#{i2}" + data_key + '}"]')
|
214
276
|
|
277
|
+
func_value = func_value.gsub(/ #{data_value.to_s.gsub('(', '\(').gsub(')', '\)')},/is, " genData#{i2}" + data_key + ',')
|
278
|
+
func_value = func_value.gsub(/ #{data_value.to_s.gsub('(', '\(').gsub(')', '\)')}\)/is, " genData#{i2}" + data_key + ')')
|
279
|
+
func_value = func_value.gsub(/ #{data_value.to_s.gsub('(', '\(').gsub(')', '\)')}\]/is, " genData#{i2}" + data_key + ']')
|
215
280
|
|
216
|
-
func_value = func_value.gsub(/ #{data_value.to_s.gsub('(', '\(').gsub(')', '\)')}/is, " genData#{i2}" + data_key)
|
217
281
|
func_value = func_value.gsub(/#{data_value.to_s.gsub('(', '\(').gsub(')', '\)')},/is, "genData#{i2}" + data_key + ',')
|
218
282
|
func_value = func_value.gsub(/\=\>#{data_value.to_s.gsub('(', '\(').gsub(')', '\)')}\}/is, '=>' + "genData#{i2}" + data_key + '}')
|
219
283
|
func_value = func_value.gsub(/\[#{data_value.to_s.gsub('(', '\(').gsub(')', '\)')}\]/is, '[' + "genData#{i2}" + data_key + ']')
|
@@ -247,11 +311,11 @@ def generate_performance_test_script(scenario)
|
|
247
311
|
|
248
312
|
end
|
249
313
|
|
250
|
-
|
314
|
+
$transaction_count += 1
|
251
315
|
# We are going to put transactions in based on the step being executed
|
252
316
|
v_action_text = %{
|
253
317
|
|
254
|
-
trans_time = start_traction("#{step_name}")
|
318
|
+
trans_time#{$transaction_count} = start_traction("#{step_name}")
|
255
319
|
}
|
256
320
|
|
257
321
|
write_line_to_performance_test_file(perf_file_name, v_action_text, true)
|
@@ -407,6 +471,7 @@ def generate_performance_test_script(scenario)
|
|
407
471
|
response = http_get(@curl, data, "#{request_url}")
|
408
472
|
}
|
409
473
|
|
474
|
+
|
410
475
|
end
|
411
476
|
|
412
477
|
# write the http (get or post) call
|
@@ -436,7 +501,7 @@ def generate_performance_test_script(scenario)
|
|
436
501
|
|
437
502
|
# End the transaction
|
438
503
|
v_action_text = %{
|
439
|
-
end_traction("#{step_name}", trans_time)
|
504
|
+
end_traction("#{step_name}", trans_time#{$transaction_count})
|
440
505
|
}
|
441
506
|
|
442
507
|
write_line_to_performance_test_file(perf_file_name, v_action_text, true)
|
@@ -491,6 +556,8 @@ def decode_value(variable_item)
|
|
491
556
|
end
|
492
557
|
|
493
558
|
|
559
|
+
|
560
|
+
|
494
561
|
#####
|
495
562
|
## Function: write_line_to_performance_test_file
|
496
563
|
## Inputs: perf_file_name (String) v_action_text (String)
|
@@ -499,17 +566,15 @@ end
|
|
499
566
|
#####
|
500
567
|
def write_line_to_performance_test_file(perf_file_name, v_action_text, doublespace = false)
|
501
568
|
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
else
|
508
|
-
file_text_mod = file_text.gsub('#v_action end', ' ' + v_action_text.strip + "\n" + '#v_action temp end')
|
569
|
+
$performance_file_lines = $performance_file_lines + ' ' + v_action_text.strip + "\n"
|
570
|
+
|
571
|
+
if (doublespace == true) then
|
572
|
+
$performance_file_lines = $performance_file_lines + "\n"
|
573
|
+
|
509
574
|
end
|
510
|
-
# Add the v#_action_end text back it. Doing this with the temp stops a recursive command
|
511
|
-
file_text_mod = file_text_mod.gsub('#v_action temp end', '#v_action end')
|
512
|
-
# Write it back to the file
|
513
|
-
open(perf_file_name, 'w') { |file| file.puts(File.expand_path(file_text_mod).to_s) }
|
514
575
|
|
515
576
|
end
|
577
|
+
|
578
|
+
def write_performance_file(perf_file_name)
|
579
|
+
open(File.expand_path(perf_file_name).to_s, 'w') { |file| file.puts($performance_file_lines) }
|
580
|
+
end
|
@@ -1,16 +1,23 @@
|
|
1
1
|
|
2
2
|
Before do | scenario |
|
3
3
|
|
4
|
-
|
4
|
+
if (!ENV['GENERATE_PERFORMANCE_SCRIPT'].nil?) then
|
5
|
+
|
6
|
+
$step = 0
|
7
|
+
|
8
|
+
$function_call_name = []
|
9
|
+
$function_call_data = []
|
10
|
+
$function_call_arguments = []
|
11
|
+
$function_call_start = 0
|
5
12
|
|
6
|
-
|
7
|
-
$function_call_data = []
|
8
|
-
$function_call_arguments = []
|
9
|
-
$function_call_start = 0
|
13
|
+
$file_not_created = true
|
10
14
|
|
11
|
-
|
15
|
+
$performance_file_lines = ''
|
12
16
|
|
13
|
-
|
17
|
+
$transaction_count = 0
|
18
|
+
|
19
|
+
page.driver.clear_network_traffic
|
20
|
+
end
|
14
21
|
|
15
22
|
end
|
16
23
|
|
@@ -19,3 +26,34 @@ AfterStep do | scenario |
|
|
19
26
|
generate_performance_test_script(scenario)
|
20
27
|
end
|
21
28
|
end
|
29
|
+
|
30
|
+
|
31
|
+
After do |scenario|
|
32
|
+
|
33
|
+
if (!ENV['GENERATE_PERFORMANCE_SCRIPT'].nil?) then
|
34
|
+
|
35
|
+
if ($performance_file_lines != '') then
|
36
|
+
|
37
|
+
scenario_name = scenario.name.gsub('(','').gsub(')', '').gsub(/ /, '_').capitalize
|
38
|
+
|
39
|
+
perf_file_name = 'performanceTests/' + scenario_name.downcase + '.rb'
|
40
|
+
|
41
|
+
|
42
|
+
file_structure_end = %{
|
43
|
+
end
|
44
|
+
|
45
|
+
def v_end()
|
46
|
+
|
47
|
+
#v_end end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
}
|
53
|
+
|
54
|
+
write_line_to_performance_test_file(perf_file_name, file_structure_end, true)
|
55
|
+
write_performance_file(perf_file_name)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber-performance-generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Moore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: poltergeist
|