Skip to content

Commit b991832

Browse files
Merge pull request #288 from holly-cummins/fix-low-value-cube-edge-case
Fix edge case when value is lower than cubes in a column
2 parents 5128ca3 + 717c87a commit b991832

File tree

2 files changed

+25
-2
lines changed
  • graphics-generator/src
    • main/java/io/quarkus/infra/performance/graphics/charts
    • test/java/io/quarkus/infra/performance/graphics/charts

2 files changed

+25
-2
lines changed

graphics-generator/src/main/java/io/quarkus/infra/performance/graphics/charts/Cubes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public void draw(Subcanvas dataArea, Theme theme) {
9797

9898
int cubeSize = cubeGroup.getTotalCubeSize() - CUBE_PADDING;
9999

100-
Subcanvas cubeArea = new Subcanvas(dataArea, dataArea.getWidth(), cubeGroup.getNumCubesPerColumn() * cubeGroup.getTotalCubeSize(), 0, 0);
100+
Subcanvas cubeArea = new Subcanvas(dataArea, dataArea.getWidth(), Math.min(cubeGroup.getNumCubesPerColumn(), (int) (val / cubeGroup.getUnitsPerCube())) * cubeGroup.getTotalCubeSize(), 0, 0);
101101

102102
Subcanvas labelArea = new Subcanvas(dataArea, dataArea.getWidth(), dataArea.getHeight() - cubeArea.getHeight(), 0,
103103
cubeArea.getHeight());

graphics-generator/src/test/java/io/quarkus/infra/performance/graphics/charts/ChartTest.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.Random;
44
import java.util.function.Function;
5+
import java.util.function.Supplier;
56

67
import io.quarkus.infra.performance.graphics.PlotDefinition;
78
import io.quarkus.infra.performance.graphics.SingleSeriesPlotDefinition;
@@ -137,6 +138,23 @@ public void testCanDrawLargeGroupInPreferredDimensions() {
137138
@Test
138139
public void testCanDrawSoloGroupInPreferredDimensions() {
139140
BenchmarkData data = mockBenchmarkData(1);
141+
System.out.println("Data " + data);
142+
PlotDefinition plotDefinition = createPlotDefinition();
143+
144+
Chart chart = createChart(plotDefinition, data);
145+
146+
int width = chart.getPreferredHorizontalSize();
147+
int height = chart.getPreferredVerticalSize();
148+
149+
SVGGraphics2D svgGenerator = getSvgGraphics2D(width, height);
150+
Theme theme = Theme.LIGHT;
151+
chart.draw(new Subcanvas(svgGenerator), theme);
152+
}
153+
154+
// This sometimes fails for the cube chart, if the value is less than the column height
155+
@Test
156+
public void testCanDrawSoloGroupWithLowValueInPreferredDimensions() {
157+
BenchmarkData data = mockBenchmarkData(1, () -> 2.0);
140158
PlotDefinition plotDefinition = createPlotDefinition();
141159

142160
Chart chart = createChart(plotDefinition, data);
@@ -174,13 +192,18 @@ private static BenchmarkData mockBenchmarkData() {
174192
return mockBenchmarkData(4);
175193
}
176194

195+
177196
private static BenchmarkData mockBenchmarkData(int count) {
197+
return mockBenchmarkData(count, () -> (double) new Random().nextInt(400));
198+
}
199+
200+
private static BenchmarkData mockBenchmarkData(int count, Supplier<Double> value) {
178201
BenchmarkData data = mock(BenchmarkData.class);
179202
Results results = new Results();
180203
when(data.results()).thenReturn(results);
181204
when(data.group()).thenReturn(Group.ALL);
182205
for (int i = 0; i < count; i++) {
183-
addDatapoint(data, Framework.values()[i], (double) new Random().nextInt(400));
206+
addDatapoint(data, Framework.values()[i], value.get());
184207
}
185208
addConfig(data);
186209
return data;

0 commit comments

Comments
 (0)