Skip to content

Commit

Permalink
adjusts in actions and coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
jfilhoGN committed Dec 7, 2024
1 parent 2aaf812 commit 4d153ec
Show file tree
Hide file tree
Showing 11 changed files with 1,095 additions and 13 deletions.
8 changes: 3 additions & 5 deletions .github/workflows/unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,9 @@ jobs:
Pkg.precompile();
'
- name: Run tests and collect coverage
- name: Run coverage script
run: |
julia --project=. -e '
using Pkg;
using Coverage;
Pkg.test(; coverage=true);'
julia --project=. run_coverage.jl
- name: Upload coverage report to Codecov
uses: codecov/codecov-action@v3
Expand All @@ -52,3 +49,4 @@ jobs:
flags: unittests
name: Code coverage
fail_ci_if_error: true

2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Statistics = "1.11.1"
Test = "1.11.0"

[extras]
Coverage = "a2441757-f54d-5643-a1b9-beb7d3d42940"
Coverage = "a2441757-f6aa-5fb2-8edb-039e3f45d037"

[targets]
test = ["Coverage"]
379 changes: 379 additions & 0 deletions src/core.jl.73885.cov

Large diffs are not rendered by default.

379 changes: 379 additions & 0 deletions src/core.jl.75010.cov

Large diffs are not rendered by default.

32 changes: 32 additions & 0 deletions src/report.jl.73885.cov
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
- module Report
-
- using Plots
-
- """
- generate_report(results::Dict)
-
- Gera um gráfico de tempos de resposta.
- """
3 function generate_report(results::Dict, file_name::String="grafico.png")
5 times = get(results, "all_times", [])
-
5 if isempty(times)
1 println("Erro: Nenhum dado de tempo encontrado ou a chave 'all_times' não foi fornecida.")
1 return
- end
-
4 p = plot(
- 1:length(times), times,
- xlabel="Requisição", ylabel="Tempo (s)",
- title="Desempenho do Endpoint",
- legend=false
- )
-
2 savefig(p, file_name)
2 println("Gráfico salvo em: $file_name")
- end
-
-
- export generate_report
-
- end
32 changes: 32 additions & 0 deletions src/report.jl.75010.cov
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
- module Report
-
- using Plots
-
- """
- generate_report(results::Dict)
-
- Gera um gráfico de tempos de resposta.
- """
3 function generate_report(results::Dict, file_name::String="grafico.png")
5 times = get(results, "all_times", [])
-
5 if isempty(times)
1 println("Erro: Nenhum dado de tempo encontrado ou a chave 'all_times' não foi fornecida.")
1 return
- end
-
4 p = plot(
- 1:length(times), times,
- xlabel="Requisição", ylabel="Tempo (s)",
- title="Desempenho do Endpoint",
- legend=false
- )
-
2 savefig(p, file_name)
2 println("Gráfico salvo em: $file_name")
- end
-
-
- export generate_report
-
- end
69 changes: 69 additions & 0 deletions src/utils.jl.73885.cov
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
- module Utils
-
- using CSV
- using Random
- using JSON
- using DataFrames
-
- """
- save_results_to_json(results::Dict, filepath::String)
-
- Salva resultados em um arquivo JSON.
- """
1 function save_results_to_json(results::Dict, filepath::String)
1 open(filepath, "w") do file
1 write(file, JSON.json(results))
- end
- end
-
- """
- random_csv_row(file_path::String)
-
- Lê um arquivo CSV e retorna uma linha aleatória como `NamedTuple`.
-
- ### Parâmetros
- - `file_path::String`: Caminho para o arquivo CSV.
-
- ### Retorno
- - Um `NamedTuple` representando uma linha aleatória do arquivo CSV.
- """
2 function random_csv_row(file_path::String)
2 if !isfile(file_path)
1 throw(ArgumentError("O arquivo '$file_path' não foi encontrado ou não é válido."))
- end
2 data = CSV.read(file_path, DataFrame)
1 random_index = rand(1:nrow(data))
1 return data[random_index, :]
- end
-
- """
- random_json_object(file_path::String)
-
- Lê um arquivo JSON e retorna um objeto aleatório do conteúdo.
-
- ### Parâmetros
- - `file_path::String`: Caminho para o arquivo JSON.
-
- ### Retorno
- - Um objeto aleatório do arquivo JSON (como um valor de um `Dict` ou um `Array`).
-
- """
3 function random_json_object(file_path::String)
3 if !isfile(file_path)
1 throw(ArgumentError("O arquivo '$file_path' não foi encontrado ou não é válido."))
- end
2 data = JSON.parsefile(file_path)
-
2 if isa(data, Array) # Se for um array
1 return isempty(data) ? nothing : data[rand(1:length(data))]
1 elseif isa(data, Dict) # Se for um dicionário
1 keys_array = collect(keys(data))
1 return isempty(keys_array) ? nothing : data[rand(keys_array)]
- else
0 throw(ArgumentError("O arquivo JSON não é um Array ou Dict suportado."))
- end
- end
-
- export save_results_to_json, random_csv_row, random_json_object
-
- end
69 changes: 69 additions & 0 deletions src/utils.jl.75010.cov
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
- module Utils
-
- using CSV
- using Random
- using JSON
- using DataFrames
-
- """
- save_results_to_json(results::Dict, filepath::String)
-
- Salva resultados em um arquivo JSON.
- """
1 function save_results_to_json(results::Dict, filepath::String)
1 open(filepath, "w") do file
1 write(file, JSON.json(results))
- end
- end
-
- """
- random_csv_row(file_path::String)
-
- Lê um arquivo CSV e retorna uma linha aleatória como `NamedTuple`.
-
- ### Parâmetros
- - `file_path::String`: Caminho para o arquivo CSV.
-
- ### Retorno
- - Um `NamedTuple` representando uma linha aleatória do arquivo CSV.
- """
2 function random_csv_row(file_path::String)
2 if !isfile(file_path)
1 throw(ArgumentError("O arquivo '$file_path' não foi encontrado ou não é válido."))
- end
2 data = CSV.read(file_path, DataFrame)
1 random_index = rand(1:nrow(data))
1 return data[random_index, :]
- end
-
- """
- random_json_object(file_path::String)
-
- Lê um arquivo JSON e retorna um objeto aleatório do conteúdo.
-
- ### Parâmetros
- - `file_path::String`: Caminho para o arquivo JSON.
-
- ### Retorno
- - Um objeto aleatório do arquivo JSON (como um valor de um `Dict` ou um `Array`).
-
- """
3 function random_json_object(file_path::String)
3 if !isfile(file_path)
1 throw(ArgumentError("O arquivo '$file_path' não foi encontrado ou não é válido."))
- end
2 data = JSON.parsefile(file_path)
-
2 if isa(data, Array) # Se for um array
1 return isempty(data) ? nothing : data[rand(1:length(data))]
1 elseif isa(data, Dict) # Se for um dicionário
1 keys_array = collect(keys(data))
1 return isempty(keys_array) ? nothing : data[rand(keys_array)]
- else
0 throw(ArgumentError("O arquivo JSON não é um Array ou Dict suportado."))
- end
- end
-
- export save_results_to_json, random_csv_row, random_json_object
-
- end
24 changes: 17 additions & 7 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,22 @@ using Coverage
using Test
using Stressify

Coverage.@coverage begin
include("test_utils.jl")
include("test_report.jl")
include("test_core.jl")
# Inclua os arquivos de teste
include("test_utils.jl")
include("test_report.jl")
include("test_core.jl")

# Obtenha a cobertura de código
coverage_data = @coverage begin
# Execute seus testes
@testset "Stressify Tests" begin
include("test_utils.jl")
include("test_report.jl")
include("test_core.jl")
end
end

lcov_report = joinpath(pwd(), "coverage.lcov")
println("Saving coverage report to $lcov_report")
Coverage.lcov_write(lcov_report)
# Gere o relatório de cobertura em formato LCOV
lcov_file = joinpath(pwd(), "coverage.lcov")
write(lcov_file, LCOV.writeLcov(coverage_data))
println("Cobertura gerada em $lcov_file")
57 changes: 57 additions & 0 deletions test/test_utils.jl.73885.cov
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
- using Test
- using CSV
- using Random
- using JSON
- using DataFrames
- using Stressify.Utils
-
- @testset "save_results_to_json" begin
- results = Dict("test" => 123)
- filepath = mktemp()[1]
- Utils.save_results_to_json(results, filepath)
- @test isfile(filepath)
- loaded_results = JSON.parsefile(filepath)
- @test loaded_results == results
- rm(filepath)
- end
-
1 @testset "random_csv_row" begin
4 test_data = DataFrame(col1 = [1, 2, 3], col2 = ["a", "b", "c"])
1 temp_csv = mktemp()[1]
1 CSV.write(temp_csv, test_data)
-
1 random_row = Utils.random_csv_row(temp_csv)
1 @test isa(random_row, DataFrameRow)
-
1 for col in names(test_data)
2 @test random_row[col] in test_data[!, col]
2 end
-
1 rm(temp_csv)
2 @test_throws ArgumentError Utils.random_csv_row("non_existent.csv")
- end
-
- @testset "random_json_object" begin
-
- test_json = Dict("key1" => "value1", "key2" => "value2")
- temp_json = mktemp()[1]
- open(temp_json, "w") do f
1 JSON.print(f, test_json)
- end
-
- random_obj = Utils.random_json_object(temp_json)
2 @test any(v -> v == random_obj, values(test_json))
- @test typeof(random_obj) <: Any
-
- test_json_array = ["a", "b", "c"]
- open(temp_json, "w") do f
1 JSON.print(f, test_json_array)
- end
-
- random_obj_array = Utils.random_json_object(temp_json)
- @test random_obj_array in test_json_array
-
- @test_throws ArgumentError Utils.random_json_object("non_existent.json")
-
- rm(temp_json)
- end
57 changes: 57 additions & 0 deletions test/test_utils.jl.75010.cov
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
- using Test
- using CSV
- using Random
- using JSON
- using DataFrames
- using Stressify.Utils
-
- @testset "save_results_to_json" begin
- results = Dict("test" => 123)
- filepath = mktemp()[1]
- Utils.save_results_to_json(results, filepath)
- @test isfile(filepath)
- loaded_results = JSON.parsefile(filepath)
- @test loaded_results == results
- rm(filepath)
- end
-
1 @testset "random_csv_row" begin
4 test_data = DataFrame(col1 = [1, 2, 3], col2 = ["a", "b", "c"])
1 temp_csv = mktemp()[1]
1 CSV.write(temp_csv, test_data)
-
1 random_row = Utils.random_csv_row(temp_csv)
1 @test isa(random_row, DataFrameRow)
-
1 for col in names(test_data)
2 @test random_row[col] in test_data[!, col]
2 end
-
1 rm(temp_csv)
2 @test_throws ArgumentError Utils.random_csv_row("non_existent.csv")
- end
-
- @testset "random_json_object" begin
-
- test_json = Dict("key1" => "value1", "key2" => "value2")
- temp_json = mktemp()[1]
- open(temp_json, "w") do f
1 JSON.print(f, test_json)
- end
-
- random_obj = Utils.random_json_object(temp_json)
1 @test any(v -> v == random_obj, values(test_json))
- @test typeof(random_obj) <: Any
-
- test_json_array = ["a", "b", "c"]
- open(temp_json, "w") do f
1 JSON.print(f, test_json_array)
- end
-
- random_obj_array = Utils.random_json_object(temp_json)
- @test random_obj_array in test_json_array
-
- @test_throws ArgumentError Utils.random_json_object("non_existent.json")
-
- rm(temp_json)
- end

0 comments on commit 4d153ec

Please sign in to comment.