8282404: DrawStringWithInfiniteXform.java failed with "RuntimeException: drawString with InfiniteXform transform takes long time"
Reviewed-by: psadhukhan, jdv
This commit is contained in:
parent
66228f77fe
commit
a53be204cb
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
@ -24,13 +24,13 @@
|
|||||||
* @test
|
* @test
|
||||||
* @bug 8023213
|
* @bug 8023213
|
||||||
* @summary Font/Text APIs should not crash/takes long time
|
* @summary Font/Text APIs should not crash/takes long time
|
||||||
* if transform includes INIFINITY
|
* if transform includes INFINITY
|
||||||
* @run main DrawStringWithInfiniteXform
|
* @run main DrawStringWithInfiniteXform
|
||||||
*/
|
*/
|
||||||
import java.awt.*;
|
import java.awt.Font;
|
||||||
import java.awt.font.*;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.geom.*;
|
import java.awt.geom.AffineTransform;
|
||||||
import java.awt.image.*;
|
import java.awt.image.BufferedImage;
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.TimerTask;
|
import java.util.TimerTask;
|
||||||
|
|
||||||
@ -41,15 +41,22 @@ public class DrawStringWithInfiniteXform {
|
|||||||
|
|
||||||
class ScheduleTask extends TimerTask {
|
class ScheduleTask extends TimerTask {
|
||||||
public void run() {
|
public void run() {
|
||||||
|
System.out.println("Task running at " + System.currentTimeMillis());
|
||||||
|
System.out.flush();
|
||||||
|
synchronized (DrawStringWithInfiniteXform.class) {
|
||||||
|
System.out.println(
|
||||||
|
"Checking done at " + System.currentTimeMillis());
|
||||||
|
System.out.flush();
|
||||||
if (!done) {
|
if (!done) {
|
||||||
throw new
|
throw new RuntimeException(
|
||||||
RuntimeException("drawString with InfiniteXform transform takes long time");
|
"drawString with InfiniteXform transform takes long time");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public DrawStringWithInfiniteXform() {
|
public DrawStringWithInfiniteXform() {
|
||||||
timer = new Timer();
|
timer = new Timer();
|
||||||
timer.schedule(new ScheduleTask(), 20000);
|
timer.schedule(new ScheduleTask(), 30000);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String [] args) {
|
public static void main(String [] args) {
|
||||||
@ -58,8 +65,12 @@ public class DrawStringWithInfiniteXform {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void start() {
|
private void start() {
|
||||||
|
System.out.println("start at " + System.currentTimeMillis());
|
||||||
|
System.out.flush();
|
||||||
float[] vals = new float[6];
|
float[] vals = new float[6];
|
||||||
for (int i=0;i<6;i++) vals[i]=Float.POSITIVE_INFINITY;
|
for (int i=0; i<6; i++) {
|
||||||
|
vals[i] = Float.POSITIVE_INFINITY;
|
||||||
|
}
|
||||||
AffineTransform nanTX = new AffineTransform(vals);
|
AffineTransform nanTX = new AffineTransform(vals);
|
||||||
|
|
||||||
BufferedImage bi = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
|
BufferedImage bi = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB);
|
||||||
@ -73,8 +84,12 @@ public class DrawStringWithInfiniteXform {
|
|||||||
g2d.setFont(xfiniteFont);
|
g2d.setFont(xfiniteFont);
|
||||||
g2d.drawString("abc", 20, 20);
|
g2d.drawString("abc", 20, 20);
|
||||||
}
|
}
|
||||||
|
System.out.println("Loop done at " + System.currentTimeMillis());
|
||||||
|
System.out.flush();
|
||||||
|
synchronized (DrawStringWithInfiniteXform.class) {
|
||||||
done = true;
|
done = true;
|
||||||
timer.cancel();
|
timer.cancel();
|
||||||
|
}
|
||||||
System.out.println("Test passed");
|
System.out.println("Test passed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user