[rfc] icedtea-web minor fix for two unittests

Adam Domurad adomurad at redhat.com
Mon Dec 17 08:59:13 PST 2012


On 12/17/2012 10:14 AM, Jiri Vanek wrote:
> This tests were wrongly adapted for lates ITW. And so they were 
> incorrectly failing. This should fix them.
>
> J.

Thanks for looking into it!

>
> diff -r 1fe2a4f7981f tests/netx/unit/net/sourceforge/jnlp/runtime/CodeBaseClassLoaderTest.java
> --- a/tests/netx/unit/net/sourceforge/jnlp/runtime/CodeBaseClassLoaderTest.java	Tue Dec 11 20:32:26 2012 +0100
> +++ b/tests/netx/unit/net/sourceforge/jnlp/runtime/CodeBaseClassLoaderTest.java	Mon Dec 17 16:09:22 2012 +0100
> @@ -68,6 +68,24 @@
>               throw new RuntimeException(ex);
>           }
>       }
> +
> +      private class DummyJNLPFile extends JNLPFile{
> +
> +            @Override
> +            public ResourcesDesc getResources() {
> +                return new ResourcesDesc(null, new Locale[0], new String[0], new String[0]);
> +            }
> +
> +            @Override
> +            public URL getCodeBase() {
> +                return CODEBASE_URL;
> +            }
> +
> +            @Override
> +            public SecurityDesc getSecurity() {
> +                return new SecurityDesc(this, SecurityDesc.SANDBOX_PERMISSIONS, null);
> +            }
> +        };

+1

>       private static final String isWSA = "isWebstartApplication";
>   
>       static void setStaticField(Field field, Object newValue) throws Exception {
> @@ -97,47 +115,73 @@
>       public void testResourceLoadSuccessCachingApplication() throws Exception {
>           setWSA();
>           //we are testing new resource not in cache
> -        testResourceLoadSuccessCaching("Main.class");
> +        testResourceLoadSuccessCaching2("Main.class");

Just a nitpick,

testResourceLoadSuccessCachingApplication calls testResourceLoadSuccessCaching2
but testResourceLoadSuccessCachingApplication2 calls testResourceLoadSuccessCaching1, the mismatch is a little confusing

>       }
>   
>       @Test
>       public void testResourceLoadSuccessCachingApplet() throws Exception {
>           setApplet();
>           //so new resource again not in cache
> -        testResourceLoadSuccessCaching("HTMLPanel.java");
> +        testResourceLoadSuccessCaching2("Main.class");
> +    }
> +
> +     @Test
> +    public void testResourceLoadSuccessCachingApplication2() throws Exception {
> +        setWSA();
> +        //we are testing new resource not in cache
> +        testResourceLoadSuccessCaching1("HTMLPanel.java");
>       }
>   
> -    public void testResourceLoadSuccessCaching(String r) throws Exception {
> -        JNLPFile dummyJnlpFile = new JNLPFile() {
> +    @Test
> +    public void testResourceLoadSuccessCachingApplet2() throws Exception {
> +        setApplet();
> +        //so new resource again not in cache
> +        testResourceLoadSuccessCaching1("HTMLPanel.java");
> +    }
>   
> -            @Override
> -            public ResourcesDesc getResources() {
> -                return new ResourcesDesc(null, new Locale[0], new String[0], new String[0]);
> -            }
> +    public void testResourceLoadSuccessCaching1(String r) throws Exception {
> +        JNLPFile dummyJnlpFile = new DummyJNLPFile();
>   
> -            @Override
> -            public URL getCodeBase() {
> -                return CODEBASE_URL;
> -            }
> -
> -            @Override
> -            public SecurityDesc getSecurity() {
> -                return new SecurityDesc(this, SecurityDesc.SANDBOX_PERMISSIONS, null);
> -            }
> -        };
>           JNLPClassLoader parent = new JNLPClassLoader(dummyJnlpFile, null);
>           CodeBaseClassLoader classLoader = new CodeBaseClassLoader(new URL[] { JAR_URL, CODEBASE_URL }, parent);
>   
>           long startTime, stopTime;
>   
>           startTime = System.nanoTime();
> -        classLoader.findResource("net/sourceforge/jnlp/about/"+r);
> +        URL u1 = classLoader.findResource("net/sourceforge/jnlp/about/"+r);
> +        Assert.assertNull(u1);
>           stopTime = System.nanoTime();
>           long timeOnFirstTry = stopTime - startTime;
>           ServerAccess.logErrorReprint("" + timeOnFirstTry);
>   
>           startTime = System.nanoTime();
> -        classLoader.findResource("net/sourceforge/jnlp/about/"+r);
> +        URL u2 = classLoader.findResource("net/sourceforge/jnlp/about/"+r);
> +        Assert.assertNull(u2);
> +        stopTime = System.nanoTime();
> +        long timeOnSecondTry = stopTime - startTime;
> +        ServerAccess.logErrorReprint("" + timeOnSecondTry);
> +
> +        assertTrue(timeOnSecondTry < (timeOnFirstTry / 10));
> +    }
> +
> +     public void testResourceLoadSuccessCaching2(String r) throws Exception {

I dislike numerically distinguished names strongly :-)
I had to do a diff to be sure of the difference here. It seems there 
should just be one function (equivalent to 
testResourceLoadSuccessCaching2), and the "net/sourceforge/jnlp/about/" 
be added to the parameter upon usage.

> +        JNLPFile dummyJnlpFile = new DummyJNLPFile();
> +
> +        JNLPClassLoader parent = new JNLPClassLoader(dummyJnlpFile, null);
> +        CodeBaseClassLoader classLoader = new CodeBaseClassLoader(new URL[] { JAR_URL, CODEBASE_URL }, parent);
> +
> +        long startTime, stopTime;
> +
> +        startTime = System.nanoTime();
> +        URL u1 = classLoader.findResource(r);
> +        Assert.assertNull(u1);
> +        stopTime = System.nanoTime();
> +        long timeOnFirstTry = stopTime - startTime;
> +        ServerAccess.logErrorReprint("" + timeOnFirstTry);
> +
> +        startTime = System.nanoTime();
> +        URL u2 = classLoader.findResource(r);
> +        Assert.assertNull(u2);
>           stopTime = System.nanoTime();
>           long timeOnSecondTry = stopTime - startTime;
>           ServerAccess.logErrorReprint("" + timeOnSecondTry);
> @@ -161,23 +205,7 @@
>       }
>   
>       public void testResourceLoadFailureCaching() throws Exception {
> -        JNLPFile dummyJnlpFile = new JNLPFile() {
> -
> -            @Override
> -            public ResourcesDesc getResources() {
> -                return new ResourcesDesc(null, new Locale[0], new String[0], new String[0]);
> -            }
> -
> -            @Override
> -            public URL getCodeBase() {
> -                return CODEBASE_URL;
> -            }
> -
> -            @Override
> -            public SecurityDesc getSecurity() {
> -                return new SecurityDesc(this, SecurityDesc.SANDBOX_PERMISSIONS, null);
> -            }
> -        };
> +        JNLPFile dummyJnlpFile = new DummyJNLPFile();
>   
>           JNLPClassLoader parent = new JNLPClassLoader(dummyJnlpFile, null);
>           CodeBaseClassLoader classLoader = new CodeBaseClassLoader(new URL[] { JAR_URL, CODEBASE_URL }, parent);
> @@ -212,24 +240,8 @@
>       }
>   
>       public void testParentClassLoaderIsAskedForClasses() throws Exception {
> -        JNLPFile dummyJnlpFile = new JNLPFile() {
> -
> -            @Override
> -            public ResourcesDesc getResources() {
> -                return new ResourcesDesc(null, new Locale[0], new String[0], new String[0]);
> -            }
> -
> -            @Override
> -            public URL getCodeBase() {
> -                return CODEBASE_URL;
> -            }
> -
> -            @Override
> -            public SecurityDesc getSecurity() {
> -                return new SecurityDesc(this, SecurityDesc.SANDBOX_PERMISSIONS, null);
> -            }
> -        };
> -
> +        JNLPFile dummyJnlpFile = new DummyJNLPFile();
> +
>           final boolean[] parentWasInvoked = new boolean[1];
>   
>           JNLPClassLoader parent = new JNLPClassLoader(dummyJnlpFile, null) {

Please also rid of the duplicated dummy in testNullFileSecurityDesc.

-Adam
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/distro-pkg-dev/attachments/20121217/9f5c62df/attachment.html 


More information about the distro-pkg-dev mailing list