@@ -7,8 +7,9 @@ module BuildkiteTestJSON
7
7
8
8
using Test
9
9
using Dates
10
+ using Serialization
10
11
11
- export write_testset_json_files
12
+ export serialize_testset_result_file, write_testset_json_files
12
13
13
14
# Bootleg JSON writer
14
15
@@ -205,17 +206,37 @@ function collect_results!(results::Vector{Dict{String,Any}}, testset::Test.Defau
205
206
return results
206
207
end
207
208
208
- function write_testset_json_files (dir:: String , testset:: Test.DefaultTestSet )
209
+ function serialize_testset_result_file (dir:: String , testset:: Test.DefaultTestSet )
209
210
data = Dict{String,Any}[]
210
211
collect_results! (data, testset)
212
+ name = replace (testset. description, r" [^a-zA-Z0-9]" => " _" )
213
+ res_file = joinpath (dir, " results_$(name) .dat" )
214
+ Serialization. serialize (res_file, data)
215
+ @debug " Saved $(basename (res_file)) ($(Base. format_bytes (filesize (res_file))) )"
216
+ return res_file
217
+ end
218
+
219
+ # deserilalizes the results files and writes them to collated JSON files of 5000 max results
220
+ function write_testset_json_files (dir:: String )
221
+ data = Dict{String,Any}[]
222
+ read_files = String[]
223
+ for res_dat in filter! (x -> occursin (r" ^results.*\. dat$" , x), readdir (dir))
224
+ res_file = joinpath (dir, res_dat)
225
+ append! (data, Serialization. deserialize (res_file))
226
+ @debug " Loaded $(basename (res_file)) ($(Base. format_bytes (filesize (res_file))) )"
227
+ push! (read_files, res_file)
228
+ end
211
229
files = String[]
212
230
# Buildkite is limited to 5000 results per file https://buildkite.com/docs/test-analytics/importing-json
213
231
for (i, chunk) in enumerate (Iterators. partition (data, 5000 ))
214
- name = replace (testset. description, r" [^a-zA-Z0-9]" => " _" )
215
- res_file = joinpath (dir, " results_$(name) _$(i) .json" )
232
+ res_file = joinpath (dir, " results_$(i) .json" )
216
233
open (io -> json_repr (io, chunk), res_file, " w" )
217
234
push! (files, res_file)
218
- @debug " Saved $(basename (res_file)) ($(Base. format_bytes (filesize (res_file))) )"
235
+ @info " Saved $(basename (res_file)) ($(length (chunk)) results, $(Base. format_bytes (filesize (res_file))) )"
236
+ end
237
+ for res_file in read_files
238
+ rm (res_file)
239
+ @debug " Deleted $(basename (res_file)) "
219
240
end
220
241
return files
221
242
end
0 commit comments