serialbench 0.1.1 → 0.1.2
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 +4 -4
- data/.github/workflows/benchmark.yml +13 -5
- data/.github/workflows/docker.yml +35 -9
- data/.github/workflows/rake.yml +15 -0
- data/Gemfile +2 -1
- data/README.adoc +267 -1129
- data/Rakefile +0 -55
- data/config/benchmarks/full.yml +29 -0
- data/config/benchmarks/short.yml +26 -0
- data/config/environments/asdf-ruby-3.2.yml +8 -0
- data/config/environments/asdf-ruby-3.3.yml +8 -0
- data/config/environments/docker-ruby-3.0.yml +9 -0
- data/config/environments/docker-ruby-3.1.yml +9 -0
- data/config/environments/docker-ruby-3.2.yml +9 -0
- data/config/environments/docker-ruby-3.3.yml +9 -0
- data/config/environments/docker-ruby-3.4.yml +9 -0
- data/docker/Dockerfile.alpine +33 -0
- data/docker/{Dockerfile.benchmark → Dockerfile.ubuntu} +4 -3
- data/docker/README.md +2 -2
- data/exe/serialbench +1 -1
- data/lib/serialbench/benchmark_runner.rb +261 -423
- data/lib/serialbench/cli/base_cli.rb +51 -0
- data/lib/serialbench/cli/benchmark_cli.rb +380 -0
- data/lib/serialbench/cli/environment_cli.rb +181 -0
- data/lib/serialbench/cli/resultset_cli.rb +215 -0
- data/lib/serialbench/cli/ruby_build_cli.rb +238 -0
- data/lib/serialbench/cli.rb +58 -601
- data/lib/serialbench/config_manager.rb +140 -0
- data/lib/serialbench/models/benchmark_config.rb +63 -0
- data/lib/serialbench/models/benchmark_result.rb +45 -0
- data/lib/serialbench/models/environment_config.rb +71 -0
- data/lib/serialbench/models/platform.rb +59 -0
- data/lib/serialbench/models/result.rb +53 -0
- data/lib/serialbench/models/result_set.rb +71 -0
- data/lib/serialbench/models/result_store.rb +108 -0
- data/lib/serialbench/models.rb +54 -0
- data/lib/serialbench/ruby_build_manager.rb +153 -0
- data/lib/serialbench/runners/asdf_runner.rb +296 -0
- data/lib/serialbench/runners/base.rb +32 -0
- data/lib/serialbench/runners/docker_runner.rb +142 -0
- data/lib/serialbench/serializers/base_serializer.rb +8 -16
- data/lib/serialbench/serializers/json/base_json_serializer.rb +4 -4
- data/lib/serialbench/serializers/json/json_serializer.rb +0 -2
- data/lib/serialbench/serializers/json/oj_serializer.rb +0 -2
- data/lib/serialbench/serializers/json/yajl_serializer.rb +0 -2
- data/lib/serialbench/serializers/toml/base_toml_serializer.rb +5 -3
- data/lib/serialbench/serializers/toml/toml_rb_serializer.rb +0 -2
- data/lib/serialbench/serializers/toml/tomlib_serializer.rb +0 -2
- data/lib/serialbench/serializers/toml/tomlrb_serializer.rb +56 -0
- data/lib/serialbench/serializers/xml/base_xml_serializer.rb +4 -9
- data/lib/serialbench/serializers/xml/libxml_serializer.rb +0 -2
- data/lib/serialbench/serializers/xml/nokogiri_serializer.rb +0 -2
- data/lib/serialbench/serializers/xml/oga_serializer.rb +0 -2
- data/lib/serialbench/serializers/xml/ox_serializer.rb +0 -2
- data/lib/serialbench/serializers/xml/rexml_serializer.rb +0 -2
- data/lib/serialbench/serializers/yaml/base_yaml_serializer.rb +5 -1
- data/lib/serialbench/serializers/yaml/syck_serializer.rb +59 -22
- data/lib/serialbench/serializers.rb +23 -6
- data/lib/serialbench/site_generator.rb +105 -0
- data/lib/serialbench/templates/assets/css/benchmark_report.css +535 -0
- data/lib/serialbench/templates/assets/css/format_based.css +526 -0
- data/lib/serialbench/templates/assets/css/themes.css +588 -0
- data/lib/serialbench/templates/assets/js/chart_helpers.js +381 -0
- data/lib/serialbench/templates/assets/js/dashboard.js +796 -0
- data/lib/serialbench/templates/assets/js/navigation.js +142 -0
- data/lib/serialbench/templates/base.liquid +49 -0
- data/lib/serialbench/templates/format_based.liquid +279 -0
- data/lib/serialbench/templates/partials/chart_section.liquid +4 -0
- data/lib/serialbench/version.rb +1 -1
- data/lib/serialbench.rb +2 -31
- data/serialbench.gemspec +4 -1
- metadata +86 -16
- data/config/ci.yml +0 -22
- data/config/full.yml +0 -30
- data/docker/run-benchmarks.sh +0 -356
- data/lib/serialbench/chart_generator.rb +0 -821
- data/lib/serialbench/result_formatter.rb +0 -182
- data/lib/serialbench/result_merger.rb +0 -1201
- data/lib/serialbench/serializers/xml/base_parser.rb +0 -69
- data/lib/serialbench/serializers/xml/libxml_parser.rb +0 -98
- data/lib/serialbench/serializers/xml/nokogiri_parser.rb +0 -111
- data/lib/serialbench/serializers/xml/oga_parser.rb +0 -85
- data/lib/serialbench/serializers/xml/ox_parser.rb +0 -64
- data/lib/serialbench/serializers/xml/rexml_parser.rb +0 -129
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bd127a1fb810ad2b4a95377dd7bf7e75297ec4b989b44844131b5ac01b0ab83
|
4
|
+
data.tar.gz: f594315660bf94c7c97d8a0b0f9d9aadf6b756f675cc8e1671535840840c26bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 607d47dee25a4815518e7246b44830cc78d08e9852c79f06803ba073a0af71946066f287ce174f130ce5553bbe3707e76d12c5318eb5db9966a97cb69de976e2
|
7
|
+
data.tar.gz: 808cc1fdd677a2b6ee5603305fa9a2da913ee2c2feae3b6ea0e648b39c99c15a01a3f89b067be9ac45b634ab330f3fb1dc2f1e02606482af2faef3118c04a484
|
@@ -77,12 +77,20 @@ jobs:
|
|
77
77
|
- name: List available serializers
|
78
78
|
run: bundle exec serialbench list
|
79
79
|
|
80
|
-
- name: Run
|
80
|
+
- name: Run benchmarks
|
81
81
|
run: |
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
82
|
+
if [ "${{ matrix.platform }}" = "macos-latest" ]; then
|
83
|
+
# macOS can handle full benchmarks
|
84
|
+
bundle exec serialbench benchmark \
|
85
|
+
--formats xml json yaml toml \
|
86
|
+
--iterations 5 \
|
87
|
+
--warmup 2
|
88
|
+
else
|
89
|
+
# Windows and Ubuntu use short configuration for memory efficiency
|
90
|
+
bundle exec serialbench benchmark \
|
91
|
+
--config config/short.yml
|
92
|
+
fi
|
93
|
+
shell: bash
|
86
94
|
|
87
95
|
- name: Run tests to verify functionality
|
88
96
|
run: bundle exec rspec --format documentation
|
@@ -85,7 +85,7 @@ jobs:
|
|
85
85
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
86
86
|
tags: |
|
87
87
|
type=ref,event=branch,suffix=-ruby-${{ matrix.ruby-version }}
|
88
|
-
type=ref,event=pr,suffix=-ruby-${{ matrix.ruby-version }}
|
88
|
+
type=ref,event=pr,prefix=pr-,suffix=-ruby-${{ matrix.ruby-version }}
|
89
89
|
type=sha,suffix=-ruby-${{ matrix.ruby-version }}
|
90
90
|
type=raw,value=latest,suffix=-ruby-${{ matrix.ruby-version }},enable={{is_default_branch}}
|
91
91
|
|
@@ -93,7 +93,7 @@ jobs:
|
|
93
93
|
uses: docker/build-push-action@v5
|
94
94
|
with:
|
95
95
|
context: .
|
96
|
-
file: docker/Dockerfile.
|
96
|
+
file: docker/Dockerfile.ubuntu
|
97
97
|
build-args: |
|
98
98
|
RUBY_VERSION=${{ matrix.ruby-version }}
|
99
99
|
push: true
|
@@ -105,19 +105,27 @@ jobs:
|
|
105
105
|
|
106
106
|
- name: Test Docker image
|
107
107
|
run: |
|
108
|
+
# Get the first tag from the metadata output
|
109
|
+
IMAGE_TAG=$(echo "${{ steps.meta.outputs.tags }}" | head -n1)
|
110
|
+
echo "Testing image: $IMAGE_TAG"
|
111
|
+
|
108
112
|
# Test that the image works correctly
|
109
|
-
docker run --rm $
|
113
|
+
docker run --rm "$IMAGE_TAG" \
|
110
114
|
bundle exec serialbench list
|
111
115
|
|
112
116
|
- name: Run basic functionality test
|
113
117
|
run: |
|
118
|
+
# Get the first tag from the metadata output
|
119
|
+
IMAGE_TAG=$(echo "${{ steps.meta.outputs.tags }}" | head -n1)
|
120
|
+
echo "Testing functionality with image: $IMAGE_TAG"
|
121
|
+
|
114
122
|
# Create a temporary results directory
|
115
123
|
mkdir -p test-results
|
116
124
|
|
117
125
|
# Run a quick benchmark test
|
118
126
|
docker run --rm \
|
119
127
|
-v $(pwd)/test-results:/app/results \
|
120
|
-
$
|
128
|
+
"$IMAGE_TAG" \
|
121
129
|
bundle exec serialbench benchmark \
|
122
130
|
--formats json \
|
123
131
|
--iterations 1 \
|
@@ -153,14 +161,28 @@ jobs:
|
|
153
161
|
username: ${{ github.actor }}
|
154
162
|
password: ${{ secrets.GITHUB_TOKEN }}
|
155
163
|
|
164
|
+
- name: Extract metadata for testing
|
165
|
+
id: meta
|
166
|
+
uses: docker/metadata-action@v5
|
167
|
+
with:
|
168
|
+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
169
|
+
tags: |
|
170
|
+
type=ref,event=branch,suffix=-ruby-${{ matrix.ruby-version }}
|
171
|
+
type=ref,event=pr,prefix=pr-,suffix=-ruby-${{ matrix.ruby-version }}
|
172
|
+
type=sha,suffix=-ruby-${{ matrix.ruby-version }}
|
173
|
+
type=raw,value=latest,suffix=-ruby-${{ matrix.ruby-version }},enable={{is_default_branch}}
|
174
|
+
|
156
175
|
- name: Pull Docker image
|
157
176
|
run: |
|
158
|
-
|
177
|
+
IMAGE_TAG=$(echo "${{ steps.meta.outputs.tags }}" | head -n1)
|
178
|
+
echo "Pulling image: $IMAGE_TAG"
|
179
|
+
docker pull "$IMAGE_TAG"
|
159
180
|
|
160
181
|
- name: Test serializer availability
|
161
182
|
run: |
|
162
|
-
echo "
|
163
|
-
|
183
|
+
IMAGE_TAG=$(echo "${{ steps.meta.outputs.tags }}" | head -n1)
|
184
|
+
echo "Testing Ruby ${{ matrix.ruby-version }} container: $IMAGE_TAG"
|
185
|
+
docker run --rm "$IMAGE_TAG" \
|
164
186
|
bundle exec ruby -e "
|
165
187
|
require 'serialbench'
|
166
188
|
puts 'Available serializers:'
|
@@ -172,17 +194,21 @@ jobs:
|
|
172
194
|
|
173
195
|
- name: Run comprehensive tests
|
174
196
|
run: |
|
175
|
-
|
197
|
+
IMAGE_TAG=$(echo "${{ steps.meta.outputs.tags }}" | head -n1)
|
198
|
+
echo "Running tests with image: $IMAGE_TAG"
|
199
|
+
docker run --rm "$IMAGE_TAG" \
|
176
200
|
bundle exec rspec --format progress
|
177
201
|
|
178
202
|
- name: Test benchmark execution
|
179
203
|
run: |
|
204
|
+
IMAGE_TAG=$(echo "${{ steps.meta.outputs.tags }}" | head -n1)
|
205
|
+
echo "Testing benchmark execution with image: $IMAGE_TAG"
|
180
206
|
mkdir -p docker-test-results
|
181
207
|
|
182
208
|
# Run a comprehensive but quick benchmark
|
183
209
|
docker run --rm \
|
184
210
|
-v $(pwd)/docker-test-results:/app/results \
|
185
|
-
$
|
211
|
+
"$IMAGE_TAG" \
|
186
212
|
bundle exec serialbench benchmark \
|
187
213
|
--formats xml json yaml toml \
|
188
214
|
--iterations 2 \
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
2
|
+
# See https://github.com/metanorma/cimas
|
3
|
+
name: rake
|
4
|
+
|
5
|
+
on:
|
6
|
+
push:
|
7
|
+
branches: [ master, main ]
|
8
|
+
tags: [ v* ]
|
9
|
+
pull_request:
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
rake:
|
13
|
+
uses: metanorma/ci/.github/workflows/generic-rake.yml@main
|
14
|
+
secrets:
|
15
|
+
pat_token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
|