Modify

Opened 2 months ago

Closed 2 months ago

#19017 closed defect (fixed)

MapCSSRendererTest output differs between Java 8 and Java 11

Reported by: Don-vip Owned by: team
Priority: normal Milestone: 20.03
Component: Unit tests Version:
Keywords: java11 Cc: simon04

Description

Jenkins build fails because of a difference between Java 8 and Java 11:

https://josm.openstreetmap.de/jenkins/job/JOSM/jdk=JDK11/lastCompletedBuild/testReport/

@Simon: do you have any idea how to make this test more robust?

Attachments (0)

Change History (6)

comment:1 Changed 2 months ago by Don-vip

Keywords: java11 added

comment:2 Changed 2 months ago by simon04

The differences all seem to be at the edges of the painted shapes. After investigating the test-differences.png, my first guesses are/were transparency and anti-aliasing. The diffs are mostly related to the alpha channel.

Regarding transparency, painting on a white background without alpha channel does not make a difference (might be a stupid/useless test):

  • test/functional/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java

    diff --git a/test/functional/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java b/test/functional/org/openstreetmap/josm/gui/mappaint/MapCSSRendererTest.java
    index bd91c2c42..6a506a028 100644
    a b public void testRender() throws Exception { 
    190190        RenderingHelper.StyleData sd = new RenderingHelper.StyleData();
    191191        sd.styleUrl = testConfig.getStyleSourceUrl();
    192192        RenderingHelper rh = new RenderingHelper(dataSet, testConfig.getTestArea(), scale, Collections.singleton(sd));
    193         rh.setFillBackground(false);
     193        rh.setFillBackground(true);
     194        rh.setBackgroundColor(Color.white);
    194195        rh.setDebugStream(System.out);
    195196        System.out.println("Running " + getClass() + "[" + testConfig.testDirectory + "]");
    196197        BufferedImage image = rh.render();
    public TestConfig usesFont(String string) { 
    336337        }
    337338
    338339        public BufferedImage getReference() throws IOException {
    339             return ImageIO.read(new File(getTestDirectory() + "/reference.png"));
     340            final BufferedImage rgba = ImageIO.read(new File(getTestDirectory() + "/reference.png"));
     341            BufferedImage rgb = new BufferedImage(rgba.getWidth(), rgba.getHeight(), BufferedImage.TYPE_INT_RGB);
     342            rgb.getGraphics().setColor(Color.white);
     343            rgb.getGraphics().fillRect(0, 0, rgba.getWidth(), rgba.getHeight());
     344            rgb.getGraphics().drawImage(rgba, 0, 0, null);
     345            return rgb;
    340346        }
    341347
    342348        private String getTestDirectory() {

comment:3 Changed 2 months ago by simon04

In 16224/josm:

see #19017 - MapCSSRendererTest: separate color/alpha diff

comment:4 Changed 2 months ago by Don-vip

In 16228/josm:

see #19017 - update svn:ignores

comment:5 Changed 2 months ago by Don-vip

In 16235/josm:

see #19017 - more lenient test, allow major differences

comment:6 Changed 2 months ago by Don-vip

Resolution: fixed
Status: newclosed

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain team.
as The resolution will be set.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.