Skip to content

Commit 3ad6be3

Browse files
authored
Merge pull request #8814 from the-benchmarker/update
New release
2 parents 354e67c + 135393a commit 3ad6be3

File tree

37 files changed

+7583
-9838
lines changed

37 files changed

+7583
-9838
lines changed

.rtx.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[tools]
2-
ruby = "3.2"
3-
php = "8.3"
2+
ruby = "3.4"
3+
php = "8.4"
44
python = "3.14"
5-
deno = "latest"
5+
deno = "2.5.6"
6+
java = "25"

.tasks/ci.rake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@ namespace :ci do
3434
matrix[:include].uniq!
3535
puts matrix.to_json
3636
end
37-
end
37+
end

.tasks/collect.rake

Lines changed: 42 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -24,52 +24,51 @@ end
2424
task :collect do
2525
database = ENV.fetch('DATABASE_URL')
2626
db = PG.connect(database)
27-
Dir.glob('*/*/.results/*/**.json').each do |file|
28-
pp file
29-
info = file.split('/')
30-
language = info[0]
31-
framework = info[1]
32-
concurrency = info[3]
33-
res = db.query(
34-
'INSERT INTO languages (label) VALUES ($1) ON CONFLICT (label) DO UPDATE SET label = $1 RETURNING id', [language]
35-
)
36-
language_id = res.first['id']
27+
Dir.glob('*/*/.results/*/**.json').each do |file|
28+
info = file.split('/')
29+
language = info[0]
30+
framework = info[1]
31+
concurrency = info[3]
32+
res = db.query(
33+
'INSERT INTO languages (label) VALUES ($1) ON CONFLICT (label) DO UPDATE SET label = $1 RETURNING id', [language]
34+
)
35+
language_id = res.first['id']
3736

38-
res = db.query(
39-
'INSERT INTO frameworks (language_id, label) VALUES ($1, $2) ON CONFLICT (language_id, label) DO UPDATE SET label = $2 RETURNING id', [
40-
language_id, framework
41-
]
42-
)
43-
framework_id = res.first['id']
44-
data = YAML.load_file(file, symbolize_names: true)
37+
res = db.query(
38+
'INSERT INTO frameworks (language_id, label) VALUES ($1, $2) ON CONFLICT (language_id, label) DO UPDATE SET label = $2 RETURNING id', [
39+
language_id, framework
40+
]
41+
)
42+
framework_id = res.first['id']
43+
data = YAML.load_file(file, symbolize_names: true)
4544

46-
res = db.query(
47-
'INSERT INTO concurrencies (level) VALUES ($1) ON CONFLICT (level) DO UPDATE SET level = $1 RETURNING id', [concurrency]
48-
)
45+
res = db.query(
46+
'INSERT INTO concurrencies (level) VALUES ($1) ON CONFLICT (level) DO UPDATE SET level = $1 RETURNING id', [concurrency]
47+
)
4948

50-
concurrency_level_id = res.first['id']
51-
results = {
52-
duration_ms: data.dig(:summary, :total) * 1000,
53-
total_requests: -1,
54-
total_requests_per_s: data.dig(:summary, :requestsPerSec),
55-
total_bytes_received: data.dig(:summary, :totalData),
56-
socket_connection_errors: -1,
57-
socket_read_errors: -1,
58-
socket_write_errors: -1,
59-
http_errors: -1,
60-
request_timeouts: -1,
61-
minimum_latency: -1,
62-
average_latency: -1,
63-
standard_deviation: -1,
64-
percentile50: data.dig(:latencyPercentiles, :p50),
65-
percentile75: data.dig(:latencyPercentiles, :p75),
66-
percentile90: data.dig(:latencyPercentiles, :p90),
67-
percentile99:data.dig(:latencyPercentiles, :p95),
68-
'percentile99999': -1,
69-
}
70-
results.each do |key, value|
71-
insert(db, framework_id, key, value, concurrency_level_id)
49+
concurrency_level_id = res.first['id']
50+
results = {
51+
duration_ms: data.dig(:summary, :total) * 1000,
52+
total_requests: -1,
53+
total_requests_per_s: data.dig(:summary, :requestsPerSec),
54+
total_bytes_received: data.dig(:summary, :totalData),
55+
socket_connection_errors: -1,
56+
socket_read_errors: -1,
57+
socket_write_errors: -1,
58+
http_errors: -1,
59+
request_timeouts: -1,
60+
minimum_latency: -1,
61+
average_latency: -1,
62+
standard_deviation: -1,
63+
percentile50: data.dig(:latencyPercentiles, :p50),
64+
percentile75: data.dig(:latencyPercentiles, :p75),
65+
percentile90: data.dig(:latencyPercentiles, :p90),
66+
percentile99: data.dig(:latencyPercentiles, :p95),
67+
percentile99999: -1
68+
}
69+
results.each do |key, value|
70+
insert(db, framework_id, key, value, concurrency_level_id)
7271
end
73-
end
72+
end
7473
db.close
7574
end

.tasks/db.rake

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,20 @@ end
2929
namespace :db do
3030
task :md_export do
3131
results = JSON.parse(File.read('data.json'))
32-
results['metrics'].map { |m| m['framework'] = results['frameworks'].detect {|f| f['id'] == m['framework_id'] }['label'] }
32+
results['metrics'].map { |m| m['framework'] = results['frameworks'].detect { |f| f['id'] == m['framework_id'] }['label'] }
33+
reqs = []
3334
results['metrics'].each do |metric|
34-
pp "| #{metric['framework']} | #{metric['level']} | #{metric['value']} |" if metric['label'] == 'total_requests_per_s'
35+
if metric['label'] == 'total_requests_per_s'
36+
reqs << { framework: metric['framework'], level: metric['level'], value: metric['value'] }
37+
end
3538
end
39+
pp reqs.select { |i| i[:level] == 256 }.sort_by { |i| i[:value] }
3640
end
3741
task :check_failures do
3842
results = JSON.parse(File.read('data.json'))
3943
results['frameworks'].map { _1['label'] }
4044
failing_frameworks = results['metrics'].filter_map do |row|
41-
row['framework_id'] if row['label'] == 'total_requests_per_s' && (row['value']).zero?
45+
row['framework_id'] if row['label'] == 'total_requests_per_s' && row['value'].zero?
4246
end
4347
list_of = Dir.glob('*/*/config.yaml').map { _1.split('/')[1] }
4448
$stdout.puts "Failing : #{results['frameworks'].filter_map do |row|

Rakefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def commands_for(language, framework, variant, provider = "docker")
112112
framework_config = YAML.safe_load(File.open(File.join(directory, language, framework, "config.yaml")))
113113
app_config = main_config.recursive_merge(language_config).recursive_merge(framework_config)
114114
options = { language: language, framework: framework, variant: variant, manifest: "#{MANIFESTS[:container]}.#{variant}" }
115-
commands = { build: [], collect: [], clean: [], warmup: [], unbuild: [] }
115+
commands = { build: [], collect: [], clean: [], warmup: [], unbuild: [], test: [] }
116116

117117
# Compile first, only for non containers
118118
if app_config.key?("binaries") && !(provider.start_with?("docker") || provider.start_with?("podman"))
@@ -154,6 +154,7 @@ def commands_for(language, framework, variant, provider = "docker")
154154

155155
hostname = File.join(directory, language, framework, "ip-#{variant}.txt")
156156
commands[:warmup] << File.expand_path("~/.cargo/bin/oha --wait-ongoing-requests-after-deadline --no-tui --disable-keepalive --latency-correction http://`cat #{hostname}`:3000/")
157+
commands[:test] << "ENGINE=#{variant} LANGUAGE=#{language} FRAMEWORK=#{framework} bundle exec rspec .spec"
157158
routes.split(",").each do |route|
158159
method, uri = route.split(":")
159160

clojure/pedestal/project.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
:license {:name "Eclipse Public License"
55
:url "http://www.eclipse.org/legal/epl-v10.html"}
66
:dependencies [[org.clojure/clojure "1.12.3"]
7-
[io.pedestal/pedestal.service "0.8.0"]
7+
[io.pedestal/pedestal.service "0.8.1"]
88
[io.pedestal/pedestal.jetty "0.8.1"]]
99
:min-lein-version "2.0.0"
1010
:resource-paths []

config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ service: |
3232
providers:
3333
docker:
3434
build:
35-
- cd {{{language}}}/{{{framework}}} && docker build -f {{{manifest}}} -t {{{language}}}.{{{framework}}}.{{{variant}}} . --no-cache && cd -
35+
- cd {{{language}}}/{{{framework}}} && docker build -f {{{manifest}}} -t {{{language}}}.{{{framework}}}.{{{variant}}} . && cd -
3636

3737
metadata:
3838
- docker run -td {{{language}}}.{{{framework}}}.{{{variant}}} --network host > {{{language}}}/{{{framework}}}/cid-{{{variant}}}.txt

0 commit comments

Comments
 (0)