aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Vanek <[email protected]>2012-07-02 15:08:21 +0200
committerJiri Vanek <[email protected]>2012-07-02 15:08:21 +0200
commitd71e609b1279077474135364ed4bb223e068d0bd (patch)
tree28544c882d03f00e270b8b6f1d15130dea63e17c
parentd11831804f320ce432b904032d5cfbf00c1a198b (diff)
Refactored reproducers directry structure
-rw-r--r--ChangeLog53
-rw-r--r--Makefile.am32
-rw-r--r--tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ContentReaderListener.java8
-rw-r--r--tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ServerAccess.java1764
-rw-r--r--tests/reproducers/README (renamed from tests/jnlp_tests/README)0
-rw-r--r--tests/reproducers/custom/AppletFolderInArchiveTag/resources/AppletFolderInArchiveTag.html (renamed from tests/jnlp_tests/custom/AppletFolderInArchiveTag/resources/AppletFolderInArchiveTag.html)0
-rw-r--r--tests/reproducers/custom/AppletFolderInArchiveTag/srcs/AppletFolderInArchiveTag.java (renamed from tests/jnlp_tests/custom/AppletFolderInArchiveTag/srcs/AppletFolderInArchiveTag.java)0
-rw-r--r--tests/reproducers/custom/AppletFolderInArchiveTag/srcs/Makefile (renamed from tests/jnlp_tests/custom/AppletFolderInArchiveTag/srcs/Makefile)0
-rw-r--r--tests/reproducers/custom/AppletFolderInArchiveTag/testcases/AppletFolderInArchiveTagTests.java (renamed from tests/jnlp_tests/custom/AppletFolderInArchiveTag/testcases/AppletFolderInArchiveTagTests.java)0
-rw-r--r--tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp (renamed from tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp)0
-rw-r--r--tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp (renamed from tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp)0
-rw-r--r--tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp (renamed from tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp)0
-rw-r--r--tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp (renamed from tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp)0
-rw-r--r--tests/reproducers/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java (renamed from tests/jnlp_tests/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java)0
-rw-r--r--tests/reproducers/signed/AppletTestSigned/resources/AppletTestSigned.html (renamed from tests/jnlp_tests/signed/AppletTestSigned/resources/AppletTestSigned.html)0
-rw-r--r--tests/reproducers/signed/AppletTestSigned/resources/AppletTestSigned.jnlp (renamed from tests/jnlp_tests/signed/AppletTestSigned/resources/AppletTestSigned.jnlp)0
-rw-r--r--tests/reproducers/signed/AppletTestSigned/srcs/AppletTestSigned.java (renamed from tests/jnlp_tests/signed/AppletTestSigned/srcs/AppletTestSigned.java)0
-rw-r--r--tests/reproducers/signed/AppletTestSigned/testcases/AppletTestSignedTests.java (renamed from tests/jnlp_tests/signed/AppletTestSigned/testcases/AppletTestSignedTests.java)0
-rw-r--r--tests/reproducers/signed/CacheReproducer/resources/CacheReproducer1.jnlp (renamed from tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer1.jnlp)0
-rw-r--r--tests/reproducers/signed/CacheReproducer/resources/CacheReproducer1_1.jnlp (renamed from tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer1_1.jnlp)0
-rw-r--r--tests/reproducers/signed/CacheReproducer/resources/CacheReproducer2.jnlp (renamed from tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer2.jnlp)0
-rw-r--r--tests/reproducers/signed/CacheReproducer/resources/CacheReproducer2_1.jnlp (renamed from tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer2_1.jnlp)0
-rw-r--r--tests/reproducers/signed/CacheReproducer/srcs/CacheReproducer.java (renamed from tests/jnlp_tests/signed/CacheReproducer/srcs/CacheReproducer.java)0
-rw-r--r--tests/reproducers/signed/CacheReproducer/testcases/CacheReproducerTest.java (renamed from tests/jnlp_tests/signed/CacheReproducer/testcases/CacheReproducerTest.java)0
-rw-r--r--tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-hack.jnlp (renamed from tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-hack.jnlp)0
-rw-r--r--tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-new.jnlp (renamed from tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-new.jnlp)0
-rw-r--r--tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.html (renamed from tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.html)0
-rw-r--r--tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.jnlp (renamed from tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.jnlp)0
-rw-r--r--tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.html (renamed from tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.html)0
-rw-r--r--tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.jnlp (renamed from tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.jnlp)0
-rw-r--r--tests/reproducers/signed/InternalClassloaderWithDownloadedResource/srcs/InternalClassloaderWithDownloadedResource.java (renamed from tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/srcs/InternalClassloaderWithDownloadedResource.java)0
-rw-r--r--tests/reproducers/signed/InternalClassloaderWithDownloadedResource/testcases/InternalClassloaderWithDownloadedResourceTest.java (renamed from tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/testcases/InternalClassloaderWithDownloadedResourceTest.java)0
-rw-r--r--tests/reproducers/signed/MissingJar/resources/MissingJar.jnlp (renamed from tests/jnlp_tests/signed/MissingJar/resources/MissingJar.jnlp)0
-rw-r--r--tests/reproducers/signed/MissingJar/resources/MissingJar2.jnlp (renamed from tests/jnlp_tests/signed/MissingJar/resources/MissingJar2.jnlp)0
-rw-r--r--tests/reproducers/signed/MissingJar/resources/MissingJar3.jnlp (renamed from tests/jnlp_tests/signed/MissingJar/resources/MissingJar3.jnlp)0
-rw-r--r--tests/reproducers/signed/MissingJar/resources/MissingJar4.jnlp (renamed from tests/jnlp_tests/signed/MissingJar/resources/MissingJar4.jnlp)0
-rw-r--r--tests/reproducers/signed/MissingJar/srcs/MissingJar.java (renamed from tests/jnlp_tests/signed/MissingJar/srcs/MissingJar.java)0
-rw-r--r--tests/reproducers/signed/MissingJar/testcases/MissingJarTest.java (renamed from tests/jnlp_tests/signed/MissingJar/testcases/MissingJarTest.java)0
-rw-r--r--tests/reproducers/signed/ReadPropertiesBySignedHack/resources/ReadPropertiesBySignedHack.jnlp (renamed from tests/jnlp_tests/signed/ReadPropertiesBySignedHack/resources/ReadPropertiesBySignedHack.jnlp)0
-rw-r--r--tests/reproducers/signed/ReadPropertiesBySignedHack/srcs/ReadPropertiesBySignedHack.java (renamed from tests/jnlp_tests/signed/ReadPropertiesBySignedHack/srcs/ReadPropertiesBySignedHack.java)0
-rw-r--r--tests/reproducers/signed/ReadPropertiesBySignedHack/testcases/ReadPropertiesBySignedHackTest.java (renamed from tests/jnlp_tests/signed/ReadPropertiesBySignedHack/testcases/ReadPropertiesBySignedHackTest.java)0
-rw-r--r--tests/reproducers/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned1.jnlp (renamed from tests/jnlp_tests/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned1.jnlp)0
-rw-r--r--tests/reproducers/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned2.jnlp (renamed from tests/jnlp_tests/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned2.jnlp)0
-rw-r--r--tests/reproducers/signed/ReadPropertiesSigned/srcs/ReadPropertiesSigned.java (renamed from tests/jnlp_tests/signed/ReadPropertiesSigned/srcs/ReadPropertiesSigned.java)0
-rw-r--r--tests/reproducers/signed/ReadPropertiesSigned/testcases/ReadPropertiesSignedTest.java (renamed from tests/jnlp_tests/signed/ReadPropertiesSigned/testcases/ReadPropertiesSignedTest.java)0
-rw-r--r--tests/reproducers/signed/SignedJnlpApplication/resources/SignedJnlpApplication1.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpApplication/resources/SignedJnlpApplication1.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpApplication/resources/SignedJnlpApplication2.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpApplication/resources/SignedJnlpApplication2.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpApplication/resources/SignedJnlpApplication3.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpApplication/resources/SignedJnlpApplication3.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpApplication/srcs/SignedJnlpApplication.java (renamed from tests/jnlp_tests/signed/SignedJnlpApplication/srcs/SignedJnlpApplication.java)0
-rw-r--r--tests/reproducers/signed/SignedJnlpApplication/testcases/SignedJnlpApplicationTest.java (renamed from tests/jnlp_tests/signed/SignedJnlpApplication/testcases/SignedJnlpApplicationTest.java)0
-rw-r--r--tests/reproducers/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne1.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne1.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne2.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne2.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpCaseTestOne/srcs/JNLP-INF/aPpLiCaTioN.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpCaseTestOne/srcs/JNLP-INF/aPpLiCaTioN.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpCaseTestOne/srcs/SignedJnlpCase.java (renamed from tests/jnlp_tests/signed/SignedJnlpCaseTestOne/srcs/SignedJnlpCase.java)0
-rw-r--r--tests/reproducers/signed/SignedJnlpCaseTestOne/testcases/SignedJnlpCaseOneTest.java (renamed from tests/jnlp_tests/signed/SignedJnlpCaseTestOne/testcases/SignedJnlpCaseOneTest.java)0
-rw-r--r--tests/reproducers/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo1.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo1.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo2.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo2.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpCaseTestTwo/srcs/JNLP-INF/aPpLiCaTiOn_tEmPlAte.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/srcs/JNLP-INF/aPpLiCaTiOn_tEmPlAte.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpCaseTestTwo/srcs/SignedJnlpCase.java (renamed from tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/srcs/SignedJnlpCase.java)0
-rw-r--r--tests/reproducers/signed/SignedJnlpCaseTestTwo/testcases/SignedJnlpCaseTwoTest.java (renamed from tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/testcases/SignedJnlpCaseTwoTest.java)0
-rw-r--r--tests/reproducers/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate1.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate1.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate2.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate2.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate3.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate3.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp (renamed from tests/jnlp_tests/signed/SignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp)0
-rw-r--r--tests/reproducers/signed/SignedJnlpTemplate/srcs/SignedJnlpTemplate.java (renamed from tests/jnlp_tests/signed/SignedJnlpTemplate/srcs/SignedJnlpTemplate.java)0
-rw-r--r--tests/reproducers/signed/SignedJnlpTemplate/testcases/SignedJnlpTemplateTest.java (renamed from tests/jnlp_tests/signed/SignedJnlpTemplate/testcases/SignedJnlpTemplateTest.java)0
-rw-r--r--tests/reproducers/signed/SimpletestSigned1/resources/SimpletestSigned1.jnlp (renamed from tests/jnlp_tests/signed/SimpletestSigned1/resources/SimpletestSigned1.jnlp)0
-rw-r--r--tests/reproducers/signed/SimpletestSigned1/srcs/SimpletestSigned1.java (renamed from tests/jnlp_tests/signed/SimpletestSigned1/srcs/SimpletestSigned1.java)0
-rw-r--r--tests/reproducers/signed/Spaces can be everywhere signed/resources/NotOnly spaces can kill ěščřž too signed.jnlp (renamed from tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/NotOnly spaces can kill ěščřž too signed.jnlp)0
-rw-r--r--tests/reproducers/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere1 signed.jnlp (renamed from tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere1 signed.jnlp)0
-rw-r--r--tests/reproducers/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere2 signed.jnlp (renamed from tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere2 signed.jnlp)0
-rw-r--r--tests/reproducers/signed/Spaces can be everywhere signed/resources/SpacesCanBeEverywhere1signed.jnlp (renamed from tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/SpacesCanBeEverywhere1signed.jnlp)0
-rw-r--r--tests/reproducers/signed/Spaces can be everywhere signed/resources/spaces applet Tests signed.html (renamed from tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/spaces applet Tests signed.html)0
-rw-r--r--tests/reproducers/signed/Spaces can be everywhere signed/srcs/SpacesCanBeEverywhereSigned.java (renamed from tests/jnlp_tests/signed/Spaces can be everywhere signed/srcs/SpacesCanBeEverywhereSigned.java)0
-rw-r--r--tests/reproducers/signed/Spaces can be everywhere signed/testcases/SpacesCanBeEverywhereTestsSigned.java (renamed from tests/jnlp_tests/signed/Spaces can be everywhere signed/testcases/SpacesCanBeEverywhereTestsSigned.java)0
-rw-r--r--tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp (renamed from tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp)0
-rw-r--r--tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp (renamed from tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp)0
-rw-r--r--tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp (renamed from tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp)0
-rw-r--r--tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp (renamed from tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp)0
-rw-r--r--tests/reproducers/simple/AccessClassInPackage/srcs/AccessClassInPackage.java (renamed from tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java)0
-rw-r--r--tests/reproducers/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java (renamed from tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java)0
-rw-r--r--tests/reproducers/simple/AddShutdownHook/resources/AddShutdownHook.jnlp (renamed from tests/jnlp_tests/simple/AddShutdownHook/resources/AddShutdownHook.jnlp)0
-rw-r--r--tests/reproducers/simple/AddShutdownHook/srcs/AddShutdownHook.java (renamed from tests/jnlp_tests/simple/AddShutdownHook/srcs/AddShutdownHook.java)0
-rw-r--r--tests/reproducers/simple/AddShutdownHook/testcases/AddShutdownHookTest.java (renamed from tests/jnlp_tests/simple/AddShutdownHook/testcases/AddShutdownHookTest.java)0
-rw-r--r--tests/reproducers/simple/AllStackTraces/resources/AllStackTraces.jnlp (renamed from tests/jnlp_tests/simple/AllStackTraces/resources/AllStackTraces.jnlp)0
-rw-r--r--tests/reproducers/simple/AllStackTraces/srcs/AllStackTraces.java (renamed from tests/jnlp_tests/simple/AllStackTraces/srcs/AllStackTraces.java)0
-rw-r--r--tests/reproducers/simple/AllStackTraces/testcases/AllStackTracesTest.java (renamed from tests/jnlp_tests/simple/AllStackTraces/testcases/AllStackTracesTest.java)0
-rw-r--r--tests/reproducers/simple/AppletBaseURLTest/resources/AppletBaseURLTest.html (renamed from tests/jnlp_tests/simple/AppletBaseURLTest/resources/AppletBaseURLTest.html)0
-rw-r--r--tests/reproducers/simple/AppletBaseURLTest/resources/AppletBaseURLTest.jnlp (renamed from tests/jnlp_tests/simple/AppletBaseURLTest/resources/AppletBaseURLTest.jnlp)0
-rw-r--r--tests/reproducers/simple/AppletBaseURLTest/resources/AppletJNLPHrefBaseURLTest.html (renamed from tests/jnlp_tests/simple/AppletBaseURLTest/resources/AppletJNLPHrefBaseURLTest.html)0
-rw-r--r--tests/reproducers/simple/AppletBaseURLTest/srcs/AppletBaseURL.java (renamed from tests/jnlp_tests/simple/AppletBaseURLTest/srcs/AppletBaseURL.java)0
-rw-r--r--tests/reproducers/simple/AppletBaseURLTest/testcases/AppletBaseURLTest.java (renamed from tests/jnlp_tests/simple/AppletBaseURLTest/testcases/AppletBaseURLTest.java)0
-rw-r--r--tests/reproducers/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.html (renamed from tests/jnlp_tests/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.html)0
-rw-r--r--tests/reproducers/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.jnlp (renamed from tests/jnlp_tests/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.jnlp)0
-rw-r--r--tests/reproducers/simple/AppletReadsInvalidJar/resources/NOT_A_VALID_JAR.jar (renamed from tests/jnlp_tests/simple/AppletReadsInvalidJar/resources/NOT_A_VALID_JAR.jar)0
-rw-r--r--tests/reproducers/simple/AppletReadsInvalidJar/srcs/Valid.java (renamed from tests/jnlp_tests/simple/AppletReadsInvalidJar/srcs/Valid.java)0
-rw-r--r--tests/reproducers/simple/AppletReadsInvalidJar/testcases/AppletReadsInvalidJarTests.java (renamed from tests/jnlp_tests/simple/AppletReadsInvalidJar/testcases/AppletReadsInvalidJarTests.java)0
-rw-r--r--tests/reproducers/simple/AppletTakesLastParam/resources/appletTakesLastParam.html (renamed from tests/jnlp_tests/simple/AppletTakesLastParam/resources/appletTakesLastParam.html)0
-rw-r--r--tests/reproducers/simple/AppletTakesLastParam/resources/appletTakesLastParam.jnlp (renamed from tests/jnlp_tests/simple/AppletTakesLastParam/resources/appletTakesLastParam.jnlp)0
-rw-r--r--tests/reproducers/simple/AppletTakesLastParam/srcs/AppletTakesLastParam.java (renamed from tests/jnlp_tests/simple/AppletTakesLastParam/srcs/AppletTakesLastParam.java)0
-rw-r--r--tests/reproducers/simple/AppletTakesLastParam/testcases/AppletTakesLastParamTests.java (renamed from tests/jnlp_tests/simple/AppletTakesLastParam/testcases/AppletTakesLastParamTests.java)0
-rw-r--r--tests/reproducers/simple/AppletTest/resources/AppletTest.jnlp (renamed from tests/jnlp_tests/simple/AppletTest/resources/AppletTest.jnlp)0
-rw-r--r--tests/reproducers/simple/AppletTest/resources/appletAutoTests.html (renamed from tests/jnlp_tests/simple/AppletTest/resources/appletAutoTests.html)0
-rw-r--r--tests/reproducers/simple/AppletTest/resources/appletAutoTests2.html (renamed from tests/jnlp_tests/simple/AppletTest/resources/appletAutoTests2.html)0
-rw-r--r--tests/reproducers/simple/AppletTest/resources/appletViewTest.html (renamed from tests/jnlp_tests/simple/AppletTest/resources/appletViewTest.html)0
-rw-r--r--tests/reproducers/simple/AppletTest/srcs/AppletTest.java (renamed from tests/jnlp_tests/simple/AppletTest/srcs/AppletTest.java)0
-rw-r--r--tests/reproducers/simple/AppletTest/testcases/AppletTestTests.java (renamed from tests/jnlp_tests/simple/AppletTest/testcases/AppletTestTests.java)0
-rw-r--r--tests/reproducers/simple/CheckServices/resources/CheckPluginServices.html (renamed from tests/jnlp_tests/simple/CheckServices/resources/CheckPluginServices.html)0
-rw-r--r--tests/reproducers/simple/CheckServices/resources/CheckServices.jnlp (renamed from tests/jnlp_tests/simple/CheckServices/resources/CheckServices.jnlp)0
-rw-r--r--tests/reproducers/simple/CheckServices/srcs/CheckServices.java (renamed from tests/jnlp_tests/simple/CheckServices/srcs/CheckServices.java)0
-rw-r--r--tests/reproducers/simple/CheckServices/testcases/CheckServicesTests.java (renamed from tests/jnlp_tests/simple/CheckServices/testcases/CheckServicesTests.java)0
-rw-r--r--tests/reproducers/simple/CreateClassLoader/resources/CreateClassLoader.jnlp (renamed from tests/jnlp_tests/simple/CreateClassLoader/resources/CreateClassLoader.jnlp)0
-rw-r--r--tests/reproducers/simple/CreateClassLoader/srcs/CreateClassLoader.java (renamed from tests/jnlp_tests/simple/CreateClassLoader/srcs/CreateClassLoader.java)0
-rw-r--r--tests/reproducers/simple/CreateClassLoader/testcases/CreateClassLoaderTest.java (renamed from tests/jnlp_tests/simple/CreateClassLoader/testcases/CreateClassLoaderTest.java)0
-rw-r--r--tests/reproducers/simple/InformationTitleVendorParser/resources/InformationParser.jnlp (renamed from tests/jnlp_tests/simple/InformationTitleVendorParser/resources/InformationParser.jnlp)0
-rw-r--r--tests/reproducers/simple/InformationTitleVendorParser/resources/TitleParser.jnlp (renamed from tests/jnlp_tests/simple/InformationTitleVendorParser/resources/TitleParser.jnlp)0
-rw-r--r--tests/reproducers/simple/InformationTitleVendorParser/resources/TitleVendorParser.jnlp (renamed from tests/jnlp_tests/simple/InformationTitleVendorParser/resources/TitleVendorParser.jnlp)0
-rw-r--r--tests/reproducers/simple/InformationTitleVendorParser/resources/VendorParser.jnlp (renamed from tests/jnlp_tests/simple/InformationTitleVendorParser/resources/VendorParser.jnlp)0
-rw-r--r--tests/reproducers/simple/InformationTitleVendorParser/testcases/InformationTitleVendorParserTest.java (renamed from tests/jnlp_tests/simple/InformationTitleVendorParser/testcases/InformationTitleVendorParserTest.java)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1main2mainAppDesc.jnlp (renamed from tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1main2mainAppDesc.jnlp)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1main2mainNoAppDesc.jnlp (renamed from tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1main2mainNoAppDesc.jnlp)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1main2nothingNoAppDesc.jnlp (renamed from tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1main2nothingNoAppDesc.jnlp)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1mainHaveAppDesc.jnlp (renamed from tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1mainHaveAppDesc.jnlp)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1mainNoAppDesc.jnlp (renamed from tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1mainNoAppDesc.jnlp)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1noAppDesc.jnlp (renamed from tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1noAppDesc.jnlp)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1noAppDescAtAll.jnlp (renamed from tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1noAppDescAtAll.jnlp)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingAppDesc.jnlp (renamed from tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingAppDesc.jnlp)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingNoAppDesc.jnlp (renamed from tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingNoAppDesc.jnlp)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/srcs/META-INF/MANIFEST.MF (renamed from tests/jnlp_tests/simple/ManifestedJar1/srcs/META-INF/MANIFEST.MF)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/srcs/ManifestedJar1.java (renamed from tests/jnlp_tests/simple/ManifestedJar1/srcs/ManifestedJar1.java)0
-rw-r--r--tests/reproducers/simple/ManifestedJar1/testcases/ManifestedJar1Test.java (renamed from tests/jnlp_tests/simple/ManifestedJar1/testcases/ManifestedJar1Test.java)0
-rw-r--r--tests/reproducers/simple/ManifestedJar2/srcs/META-INF/MANIFEST.MF (renamed from tests/jnlp_tests/simple/ManifestedJar2/srcs/META-INF/MANIFEST.MF)0
-rw-r--r--tests/reproducers/simple/ManifestedJar2/srcs/ManifestedJar2.java (renamed from tests/jnlp_tests/simple/ManifestedJar2/srcs/ManifestedJar2.java)0
-rw-r--r--tests/reproducers/simple/ReadEnvironment/resources/ReadEnvironment.jnlp (renamed from tests/jnlp_tests/simple/ReadEnvironment/resources/ReadEnvironment.jnlp)0
-rw-r--r--tests/reproducers/simple/ReadEnvironment/srcs/ReadEnvironment.java (renamed from tests/jnlp_tests/simple/ReadEnvironment/srcs/ReadEnvironment.java)0
-rw-r--r--tests/reproducers/simple/ReadEnvironment/testcases/ReadEnvironmentTest.java (renamed from tests/jnlp_tests/simple/ReadEnvironment/testcases/ReadEnvironmentTest.java)0
-rw-r--r--tests/reproducers/simple/ReadProperties/resources/ReadProperties1.jnlp (renamed from tests/jnlp_tests/simple/ReadProperties/resources/ReadProperties1.jnlp)0
-rw-r--r--tests/reproducers/simple/ReadProperties/resources/ReadProperties2.jnlp (renamed from tests/jnlp_tests/simple/ReadProperties/resources/ReadProperties2.jnlp)0
-rw-r--r--tests/reproducers/simple/ReadProperties/srcs/ReadProperties.java (renamed from tests/jnlp_tests/simple/ReadProperties/srcs/ReadProperties.java)0
-rw-r--r--tests/reproducers/simple/ReadProperties/testcases/ReadPropertiesTest.java (renamed from tests/jnlp_tests/simple/ReadProperties/testcases/ReadPropertiesTest.java)0
-rw-r--r--tests/reproducers/simple/RedirectStreams/resources/RedirectStreams.jnlp (renamed from tests/jnlp_tests/simple/RedirectStreams/resources/RedirectStreams.jnlp)0
-rw-r--r--tests/reproducers/simple/RedirectStreams/srcs/RedirectStreams.java (renamed from tests/jnlp_tests/simple/RedirectStreams/srcs/RedirectStreams.java)0
-rw-r--r--tests/reproducers/simple/RedirectStreams/testcases/RedirectStreamsTest.java (renamed from tests/jnlp_tests/simple/RedirectStreams/testcases/RedirectStreamsTest.java)0
-rw-r--r--tests/reproducers/simple/ReplaceSecurityManager/resources/ReplaceSecurityManager.jnlp (renamed from tests/jnlp_tests/simple/ReplaceSecurityManager/resources/ReplaceSecurityManager.jnlp)0
-rw-r--r--tests/reproducers/simple/ReplaceSecurityManager/srcs/ReplaceSecurityManager.java (renamed from tests/jnlp_tests/simple/ReplaceSecurityManager/srcs/ReplaceSecurityManager.java)0
-rw-r--r--tests/reproducers/simple/ReplaceSecurityManager/testcases/ReplaceSecurityManagerTest.java (renamed from tests/jnlp_tests/simple/ReplaceSecurityManager/testcases/ReplaceSecurityManagerTest.java)0
-rw-r--r--tests/reproducers/simple/SetContextClassLoader/resources/SetContextClassLoader.jnlp (renamed from tests/jnlp_tests/simple/SetContextClassLoader/resources/SetContextClassLoader.jnlp)0
-rw-r--r--tests/reproducers/simple/SetContextClassLoader/srcs/SetContextClassLoader.java (renamed from tests/jnlp_tests/simple/SetContextClassLoader/srcs/SetContextClassLoader.java)0
-rw-r--r--tests/reproducers/simple/SetContextClassLoader/testcases/SetContextClassLoaderTest.java (renamed from tests/jnlp_tests/simple/SetContextClassLoader/testcases/SetContextClassLoaderTest.java)0
-rw-r--r--tests/reproducers/simple/Spaces can be everywhere/resources/NotOnly spaces can kill ěščřž too.jnlp (renamed from tests/jnlp_tests/simple/Spaces can be everywhere/resources/NotOnly spaces can kill ěščřž too.jnlp)0
-rw-r--r--tests/reproducers/simple/Spaces can be everywhere/resources/Spaces can be everywhere1.jnlp (renamed from tests/jnlp_tests/simple/Spaces can be everywhere/resources/Spaces can be everywhere1.jnlp)0
-rw-r--r--tests/reproducers/simple/Spaces can be everywhere/resources/Spaces can be everywhere2.jnlp (renamed from tests/jnlp_tests/simple/Spaces can be everywhere/resources/Spaces can be everywhere2.jnlp)0
-rw-r--r--tests/reproducers/simple/Spaces can be everywhere/resources/SpacesCanBeEverywhere1.jnlp (renamed from tests/jnlp_tests/simple/Spaces can be everywhere/resources/SpacesCanBeEverywhere1.jnlp)0
-rw-r--r--tests/reproducers/simple/Spaces can be everywhere/resources/spaces applet Tests.html (renamed from tests/jnlp_tests/simple/Spaces can be everywhere/resources/spaces applet Tests.html)0
-rw-r--r--tests/reproducers/simple/Spaces can be everywhere/srcs/SpacesCanBeEverywhere.java (renamed from tests/jnlp_tests/simple/Spaces can be everywhere/srcs/SpacesCanBeEverywhere.java)0
-rw-r--r--tests/reproducers/simple/Spaces can be everywhere/testcases/SpacesCanBeEverywhereTests.java (renamed from tests/jnlp_tests/simple/Spaces can be everywhere/testcases/SpacesCanBeEverywhereTests.java)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication1.jnlp (renamed from tests/jnlp_tests/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication1.jnlp)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication2.jnlp (renamed from tests/jnlp_tests/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication2.jnlp)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication3.jnlp (renamed from tests/jnlp_tests/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication3.jnlp)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp (renamed from tests/jnlp_tests/simple/UnsignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpApplication/srcs/UnsignedJnlpApplication.java (renamed from tests/jnlp_tests/simple/UnsignedJnlpApplication/srcs/UnsignedJnlpApplication.java)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpApplication/testcases/UnsignedJnlpApplicationTest.java (renamed from tests/jnlp_tests/simple/UnsignedJnlpApplication/testcases/UnsignedJnlpApplicationTest.java)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate1.jnlp (renamed from tests/jnlp_tests/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate1.jnlp)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate2.jnlp (renamed from tests/jnlp_tests/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate2.jnlp)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate3.jnlp (renamed from tests/jnlp_tests/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate3.jnlp)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp (renamed from tests/jnlp_tests/simple/UnsignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpTemplate/srcs/UnsignedJnlpTemplate.java (renamed from tests/jnlp_tests/simple/UnsignedJnlpTemplate/srcs/UnsignedJnlpTemplate.java)0
-rw-r--r--tests/reproducers/simple/UnsignedJnlpTemplate/testcases/UnsignedJnlpTemplateTest.java (renamed from tests/jnlp_tests/simple/UnsignedJnlpTemplate/testcases/UnsignedJnlpTemplateTest.java)0
-rw-r--r--tests/reproducers/simple/deadlocktest/resources/deadlocktest.jnlp (renamed from tests/jnlp_tests/simple/deadlocktest/resources/deadlocktest.jnlp)0
-rw-r--r--tests/reproducers/simple/deadlocktest/resources/deadlocktest_1.jnlp (renamed from tests/jnlp_tests/simple/deadlocktest/resources/deadlocktest_1.jnlp)0
-rw-r--r--tests/reproducers/simple/deadlocktest/srcs/DeadlockTest.java (renamed from tests/jnlp_tests/simple/deadlocktest/srcs/DeadlockTest.java)0
-rw-r--r--tests/reproducers/simple/deadlocktest/testcases/DeadLockTestTest.java (renamed from tests/jnlp_tests/simple/deadlocktest/testcases/DeadLockTestTest.java)0
-rw-r--r--tests/reproducers/simple/simpletest1/resources/simpletest1.jnlp (renamed from tests/jnlp_tests/simple/simpletest1/resources/simpletest1.jnlp)0
-rw-r--r--tests/reproducers/simple/simpletest1/resources/simpletestCustomSplash.jnlp (renamed from tests/jnlp_tests/simple/simpletest1/resources/simpletestCustomSplash.jnlp)0
-rw-r--r--tests/reproducers/simple/simpletest1/resources/simpletestMegaSlow.jnlp (renamed from tests/jnlp_tests/simple/simpletest1/resources/simpletestMegaSlow.jnlp)0
-rw-r--r--tests/reproducers/simple/simpletest1/resources/simpletestSlow.jnlp (renamed from tests/jnlp_tests/simple/simpletest1/resources/simpletestSlow.jnlp)0
-rw-r--r--tests/reproducers/simple/simpletest1/resources/simpletestSlowBrokenCustomSplash.jnlp (renamed from tests/jnlp_tests/simple/simpletest1/resources/simpletestSlowBrokenCustomSplash.jnlp)0
-rw-r--r--tests/reproducers/simple/simpletest1/resources/simpletestSlowSlowCustomSplash.jnlp (renamed from tests/jnlp_tests/simple/simpletest1/resources/simpletestSlowSlowCustomSplash.jnlp)0
-rw-r--r--tests/reproducers/simple/simpletest1/srcs/SimpleTest1.java (renamed from tests/jnlp_tests/simple/simpletest1/srcs/SimpleTest1.java)0
-rw-r--r--tests/reproducers/simple/simpletest1/testcases/SimpleTest1Test.java (renamed from tests/jnlp_tests/simple/simpletest1/testcases/SimpleTest1Test.java)0
-rw-r--r--tests/reproducers/simple/simpletest2/resources/simpletest2.jnlp (renamed from tests/jnlp_tests/simple/simpletest2/resources/simpletest2.jnlp)0
-rw-r--r--tests/reproducers/simple/simpletest2/srcs/SimpleTest2.java (renamed from tests/jnlp_tests/simple/simpletest2/srcs/SimpleTest2.java)0
-rw-r--r--tests/reproducers/simple/simpletest2/testcases/SimpleTest2Test.java (renamed from tests/jnlp_tests/simple/simpletest2/testcases/SimpleTest2Test.java)0
-rw-r--r--tests/test-extensions-tests/net/sourceforge/jnlp/ResourcesTest.java379
-rw-r--r--tests/test-extensions-tests/net/sourceforge/jnlp/ServerAccessTest.java233
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/ContentReader.java133
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/ContentReaderListener.java45
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/LogItem.java71
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/LoggingBottleneck.java215
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/ProcessAssasin.java159
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/ProcessResult.java69
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/ResourcesTest.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ResourcesTest.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java828
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/ServerLauncher.java120
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/TestsLogs.java85
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java140
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/TinyHttpdImpl.java174
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/annotations/Bug.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/Bug.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/annotations/KnownToFail.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/KnownToFail.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/annotations/NeedsDisplay.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/NeedsDisplay.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/annotations/TestInBrowsers.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/TestInBrowsers.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/Browser.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/Browser.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/BrowserFactory.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/BrowserFactory.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/BrowserTest.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/BrowserTest.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/BrowserTestRunner.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/BrowserTestRunner.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/Browsers.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/Browsers.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Chrome.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Chrome.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Chromium.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Chromium.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Epiphany.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Epiphany.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Firefox.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Firefox.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/LinuxBrowser.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/LinuxBrowser.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Midory.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Midory.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/MozillaFamilyLinuxBrowser.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/MozillaFamilyLinuxBrowser.java)0
-rw-r--r--tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Opera.java (renamed from tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Opera.java)0
215 files changed, 2729 insertions, 1779 deletions
diff --git a/ChangeLog b/ChangeLog
index 58b6358..d3cd34a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,56 @@
+2012-07-02 Jiri Vanek <[email protected]>
+
+ Makefile adapted to recent (three changelog items) refactoring
+ * Makefile.am: (JNLP_TESTS_ENGINE_SRCDIR) now points correctly to
+ test-extensions. (JNLP_TESTS_ENGINE_TESTS_SRCDIR) new variable for
+ test-extensions-tests. (JNLP_TESTS_SRCDIR) now points to reproducers.
+ (JNLP_TESTS_ENGINE_TESTS_DIR) new variable for built
+ JNLP_TESTS_ENGINE_TESTS_SRCDIR
+ (netx-dist-tests-tests-source-files.txt) new target for list of
+ content of JNLP_TESTS_ENGINE_TESTS_SRCDIR.
+ (stamps/netx-dist-tests-tests-compile.stamp) new target for compiling
+ netx-dist-tests-tests-source-files.txt
+ (netx-dist-tests-source-files.tx) now depends on
+ stamps/netx-dist-tests-tests-compile.stamp
+ ($(REPRODUCERS_CLASS_NAMES)) target is now working in JNLP_TESTS_ENGINE_TESTS_DIR
+ instead of JNLP_TESTS_ENGINE_DIR
+ (stamps/run-netx-dist-tests.stamp): added JNLP_TESTS_ENGINE_TESTS_DIR to classpath
+ (stamps/run-unit-test-code-coverage.stamp), (stamps/run-reproducers-test-code-coverage.stamp)
+ added JNLP_TESTS_ENGINE_TESTS_DIR to classpath and
+ JNLP_TESTS_ENGINE_TESTS_SRCDIR to sources path
+
+2012-07-02 Jiri Vanek <[email protected]>
+
+ All tests from test-extensions extracted to test-extensions-tests.
+ All inner classes in test-extensions extracted as outer classes
+ * tests/test-extensions/net/sourceforge/jnlp/ResourcesTest.java:
+ moved to test-extensions-tests
+ * tests/test-extensions-tests/net/sourceforge/jnlp/ResourcesTest.java:
+ new file, copied from test-extensions
+ * tests/test-extensions-tests/net/sourceforge/jnlp/ServerAccessTest.java:
+ all tests from original ServerAccess.java
+ * tests/test-extensions/net/sourceforge/jnlp/ContentReader.java:
+ * tests/test-extensions/net/sourceforge/jnlp/LogItem.java:
+ * tests/test-extensions/net/sourceforge/jnlp/LoggingBottleneck.java:
+ * tests/test-extensions/net/sourceforge/jnlp/ProcessAssasin.java:
+ * tests/test-extensions/net/sourceforge/jnlp/ProcessResult.java:
+ * tests/test-extensions/net/sourceforge/jnlp/ServerLauncher.java:
+ * tests/test-extensions/net/sourceforge/jnlp/TestsLogs.java:
+ * tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java:
+ * tests/test-extensions/net/sourceforge/jnlp/TinyHttpdImpl.java:
+ new files, extracted classes from ServerAccess
+ * tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java:
+ extracted tests and inner classes
+
+
+2012-07-02 Jiri Vanek <[email protected]>
+
+ hg move tests/netx/jnlp_testsengine/ tests/test-extensions
+
+2012-07-02 Jiri Vanek <[email protected]>
+
+ hg move tests/jnlp_tests/ tests/reproducers
+
2012-06-29 Jiri Vanek <[email protected]>
Fixed resource tests and Browsers.none behavior
diff --git a/Makefile.am b/Makefile.am
index aa6ddaa..3e0208d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -17,9 +17,12 @@ export NETX_UNIT_TEST_DIR=$(TESTS_DIR)/netx/unit
export JUNIT_RUNNER_DIR=$(TESTS_DIR)/junit-runner
export JUNIT_RUNNER_SRCDIR=$(TESTS_SRCDIR)/junit-runner
-export JNLP_TESTS_ENGINE_SRCDIR=$(TESTS_SRCDIR)/netx/jnlp_testsengine
-export JNLP_TESTS_SRCDIR=$(TESTS_SRCDIR)/jnlp_tests
-export JNLP_TESTS_ENGINE_DIR=$(TESTS_DIR)/netx/jnlp_testsengine
+
+export JNLP_TESTS_ENGINE_SRCDIR=$(TESTS_SRCDIR)/test-extensions
+export JNLP_TESTS_ENGINE_TESTS_SRCDIR=$(TESTS_SRCDIR)/test-extensions-tests
+export JNLP_TESTS_SRCDIR=$(TESTS_SRCDIR)/reproducers
+export JNLP_TESTS_ENGINE_DIR=$(TESTS_DIR)/jnlp_testsengine
+export JNLP_TESTS_ENGINE_TESTS_DIR=$(TESTS_DIR)/netx/jnlp_testsengine_tests
export JNLP_TESTS_SERVER_DEPLOYDIR=$(TESTS_DIR)/jnlp_test_server
export JNLP_TESTS_DIR=$(TESTS_DIR)/jnlp_tests
export PRIVATE_KEYSTORE_NAME=teststore.ks
@@ -649,8 +652,20 @@ stamps/netx-dist-tests-compile.stamp: stamps/netx.stamp \
mkdir -p stamps && \
touch $@
+netx-dist-tests-tests-source-files.txt:
+ find $(JNLP_TESTS_ENGINE_TESTS_SRCDIR) -name '*.java' | sort > $@
+
+stamps/netx-dist-tests-tests-compile.stamp: stamps/junit-jnlp-dist-dirs netx-dist-tests-tests-source-files.txt stamps/netx-dist-tests-compile.stamp
+ mkdir -p $(JNLP_TESTS_ENGINE_TESTS_DIR);
+ $(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
+ -d $(JNLP_TESTS_ENGINE_TESTS_DIR) \
+ -classpath $(JUNIT_JAR):$(NETX_DIR)/lib/classes.jar:$(JNLP_TESTS_ENGINE_DIR) \
+ @netx-dist-tests-tests-source-files.txt && \
+ mkdir -p stamps && \
+ touch $@
+
stamps/netx-dist-tests-compile-testcases.stamp: stamps/netx.stamp stamps/junit-jnlp-dist-dirs \
- netx-dist-tests-source-files.txt stamps/netx-dist-tests-compile.stamp
+ netx-dist-tests-source-files.txt stamps/netx-dist-tests-compile.stamp stamps/netx-dist-tests-tests-compile.stamp
types=($(ALL_REPRODUCERS)); \
for which in "$${types[@]}" ; do \
. $(abs_top_srcdir)/NEW_LINE_IFS ; \
@@ -658,7 +673,7 @@ stamps/netx-dist-tests-compile-testcases.stamp: stamps/netx.stamp stamps/junit-j
IFS="$$IFS_BACKUP" ; \
for dir in "$${simpleReproducers[@]}" ; do \
$(BOOT_DIR)/bin/javac $(IT_JAVACFLAGS) \
- -d $(JNLP_TESTS_ENGINE_DIR) \
+ -d $(JNLP_TESTS_ENGINE_TESTS_DIR) \
-classpath $(JUNIT_JAR):$(NETX_DIR)/lib/classes.jar:$(JNLP_TESTS_ENGINE_DIR) \
"$(JNLP_TESTS_SRCDIR)/$$which/$$dir/testcases/"* ; \
done ; \
@@ -681,7 +696,7 @@ stamps/netx-dist-tests-copy-resources.stamp: stamps/junit-jnlp-dist-dirs
$(REPRODUCERS_CLASS_NAMES): $(REPRODUCERS_CLASS_WHITELIST)
whiteListed=`cat $(REPRODUCERS_CLASS_WHITELIST)`; \
- cd $(JNLP_TESTS_ENGINE_DIR) ; \
+ cd $(JNLP_TESTS_ENGINE_TESTS_DIR) ; \
class_names= ; \
for test in `find -type f` ; do \
class_name=`echo $$test | sed -e 's|\.class$$||' -e 's|^\./||'` ; \
@@ -710,7 +725,7 @@ stamps/run-netx-dist-tests.stamp: stamps/netx-dist.stamp extra-lib/about.jar sta
$(TESTS_DIR)/$(REPORT_STYLES_DIRNAME) $(REPRODUCERS_CLASS_NAMES) stamps/process-custom-reproducers.stamp
cd $(JNLP_TESTS_ENGINE_DIR) ; \
class_names=`cat $(REPRODUCERS_CLASS_NAMES)` ; \
- CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):. \
+ CLASSPATH=$(NETX_DIR)/lib/classes.jar:$(JUNIT_JAR):$(JUNIT_RUNNER_JAR):.:$(JNLP_TESTS_ENGINE_TESTS_DIR) \
$(BOOT_DIR)/bin/java $(REPRODUCERS_DPARAMETERS) \
-Xbootclasspath:$(RUNTIME) CommandLine $$class_names
if WITH_XSLTPROC
@@ -991,6 +1006,7 @@ if WITH_EMMA
-cp $(BOOT_DIR)/jre/lib/resources.jar \
-cp $(RHINO_RUNTIME) \
-cp . \
+ -cp $(JNLP_TESTS_ENGINE_TESTS_DIR) \
-ix "-org.junit.*" \
-ix "-junit.*" \
CommandLine $$class_names ; \
@@ -1007,6 +1023,7 @@ if WITH_EMMA
-sp $(NETX_UNIT_TEST_SRCDIR) \
-sp $(JUNIT_RUNNER_SRCDIR) \
-sp $(JNLP_TESTS_ENGINE_SRCDIR) \
+ -sp $(JNLP_TESTS_ENGINE_TESTS_SRCDIR) \
-r html \
-r xml \
"$${testcases_srcs[@]}" ; \
@@ -1053,6 +1070,7 @@ if WITH_EMMA
-sp $(NETX_UNIT_TEST_SRCDIR) \
-sp $(JUNIT_RUNNER_SRCDIR) \
-sp $(JNLP_TESTS_ENGINE_SRCDIR) \
+ -sp $(JNLP_TESTS_ENGINE_TESTS_SRCDIR) \
"$${testcases_srcs[@]}" \
-r html \
-r xml ;
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ContentReaderListener.java b/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ContentReaderListener.java
deleted file mode 100644
index 9981a31..0000000
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ContentReaderListener.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package net.sourceforge.jnlp;
-
-public interface ContentReaderListener {
-
- public void charReaded(char ch);
- public void lineReaded(String s);
-
-}
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ServerAccess.java b/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ServerAccess.java
deleted file mode 100644
index af16a63..0000000
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ServerAccess.java
+++ /dev/null
@@ -1,1764 +0,0 @@
-/* ServerAccess.java
-Copyright (C) 2011 Red Hat, Inc.
-
-This file is part of IcedTea.
-
-IcedTea is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License as published by
-the Free Software Foundation, version 2.
-
-IcedTea is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with IcedTea; see the file COPYING. If not, write to
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version.
- */
-package net.sourceforge.jnlp;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.ByteArrayOutputStream;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.lang.reflect.Method;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.SocketException;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.StringTokenizer;
-import net.sourceforge.jnlp.annotations.TestInBrowsers;
-import net.sourceforge.jnlp.browsertesting.Browser;
-import net.sourceforge.jnlp.browsertesting.BrowserFactory;
-import net.sourceforge.jnlp.browsertesting.BrowserTest;
-import net.sourceforge.jnlp.browsertesting.Browsers;
-import org.junit.Assert;
-import org.junit.Test;
-
-/**
- *
- * This class provides access to virtual server and stuff around.
- * It can find unoccupied port, start server, provides its singleton instantiation, lunch parallel instantiations,
- * read location of installed (tested javaws) see javaws.build.bin java property,
- * location of server www root on file system (see test.server.dir java property),
- * stubs for lunching javaws and for locating resources and read resources.
- *
- * It can also execute processes with timeout (@see PROCESS_TIMEOUT) (used during lunching javaws)
- * Some protected apis are exported because public classes in this package are put to be tested by makefile.
- *
- * There are included test cases which show some basic usages.
- *
- *
- */
-public class ServerAccess {
-
- public static final long NANO_TIME_DELIMITER=1000000l;
- /**
- * java property which value containing path to default (makefile by) directory with deployed resources
- */
- public static final String TEST_SERVER_DIR = "test.server.dir";
- /**
- * java property which value containing path to installed (makefile by) javaws binary
- */
- public static final String JAVAWS_BUILD_BIN = "javaws.build.bin";
- /** property to set the different then default browser
- */
- public static final String USED_BROWSERS = "used.browsers";
- public static final String DEFAULT_LOCALHOST_NAME = "localhost";
- /**
- * server instance singleton
- */
- private static ServerLauncher server;
- /**
- * inner version of engine
- */
- private static final String version = "4";
- /**
- * timeout to read 'remote' resources
- * This can be changed in runtime, but will affect all following tasks
- */
- public static int READ_TIMEOUT = 1000;
- /**
- * timeout in ms to let process to finish, before assassin will kill it.
- * This can be changed in runtime, but will affect all following tasks
- */
- public static long PROCESS_TIMEOUT = 20 * 1000;//ms
- /**
- * all terminated processes are stored here. As wee need to 'wait' to termination to be finished.
- */
- private static Set<Thread> terminated = new HashSet<Thread>();
- /**
- * this flag is indicating whether output of executeProcess should be logged. By default true.
- */
- public static boolean PROCESS_LOG = true;
- public static boolean LOGS_REPRINT = false;
-
- private Browser currentBrowser;
- /**
- * This is static copy of name of id of currentBrowser for logging purposes
- */
- private static String loggedBrowser=Browsers.none.toString();
- public static final String UNSET_BROWSER="unset_browser";
-
- /**
- * map of classes, each have map of methods, each have errorlist, outLIst, and allList (allist contains also not std or err messages)
- * class.testMethod.logs
- */
- private static final Map<String, Map<String, TestsLogs>> processLogs = new HashMap<String, Map<String, TestsLogs>>(100);
- private static final File DEFAULT_LOG_FILE = new File("ServerAccess-logs.xml");
- private static final File DEFAULT_STDERR_FILE = new File("stderr.log");
- private static final File DEFAULT_STDOUT_FILE = new File("stdout.log");
- private static final File DEFAULT_STDLOGS_FILE = new File("all.log");
- private static BufferedWriter DEFAULT_STDERR_WRITER;
- private static BufferedWriter DEFAULT_STDOUT_WRITER;
- private static BufferedWriter DEFAULT_STDLOGS_WRITER;
-
- static{
- try{
- DEFAULT_STDOUT_WRITER=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(DEFAULT_STDOUT_FILE)));
- DEFAULT_STDERR_WRITER=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(DEFAULT_STDERR_FILE)));
- DEFAULT_STDLOGS_WRITER=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(DEFAULT_STDLOGS_FILE)));
- }catch(Throwable t){
- t.printStackTrace();
- }
- }
- private static final String LOGS_ELEMENT = "logs";
- private static final String CLASSLOG_ELEMENT = "classlog";
- private static final String CLASSNAME_ATTRIBUTE = "className";
- private static final String TESTLOG_ELEMENT = "testLog";
- private static final String TESTMETHOD_ATTRIBUTE = "testMethod";
- private static final String FULLID_ATTRIBUTE = "fullId";
- private static final String LOG_ELEMENT = "log";
- private static final String LOG_ID_ATTRIBUTE = "id";
- private static final String ITEM_ELEMENT = "item";
- private static final String ITEM_ID_ATTRIBUTE = "id";
- private static final String STAMP_ELEMENT = "stamp";
- private static final String TEXT_ELEMENT = "text";
- private static final String FULLTRACE_ELEMENT = "fulltrace";
-
- private static void writeXmlLog() throws FileNotFoundException, IOException {
- writeXmlLog(DEFAULT_LOG_FILE);
- }
-
- private static void writeXmlLog(File f) throws FileNotFoundException, IOException {
- Writer w = new OutputStreamWriter(new FileOutputStream(f));
- Set<Entry<String, Map<String, TestsLogs>>> classes = processLogs.entrySet();
- w.write("<" + LOGS_ELEMENT + ">");
- for (Entry<String, Map<String, TestsLogs>> classLog : classes) {
- String className = classLog.getKey();
- w.write("<" + CLASSLOG_ELEMENT + " " + CLASSNAME_ATTRIBUTE + "=\"" + className + "\">");
- Set<Entry<String, TestsLogs>> testsLogs = classLog.getValue().entrySet();
- for (Entry<String, TestsLogs> testLog : testsLogs) {
- String testName = testLog.getKey();
- String testLogs = testLog.getValue().toString();
- w.write("<" + TESTLOG_ELEMENT + " " + TESTMETHOD_ATTRIBUTE + "=\"" + testName + "\" " + FULLID_ATTRIBUTE + "=\"" + className + "." + testName + "\" >");
- w.write(testLogs);
- w.write("</" + TESTLOG_ELEMENT + ">");
- }
- w.write("</" + CLASSLOG_ELEMENT + ">");
- }
- w.write("</" + LOGS_ELEMENT + ">");
- w.flush();
- w.close();
- }
-
- private static void addToXmlLog(String message, boolean printToOut, boolean printToErr, StackTraceElement ste) {
- Map<String, TestsLogs> classLog = processLogs.get(ste.getClassName());
- if (classLog == null) {
- classLog = new HashMap<String, TestsLogs>(50);
- processLogs.put(ste.getClassName(), classLog);
- }
- String methodBrowseredName = ste.getMethodName();
- methodBrowseredName = modifyMethodWithForBrowser(methodBrowseredName,ste.getClassName());
- TestsLogs methodLog = classLog.get(methodBrowseredName);
- if (methodLog == null) {
- methodLog = new TestsLogs();
- classLog.put(methodBrowseredName, methodLog);
- }
- methodLog.add(printToErr, printToOut, message);
- }
-
- private static String modifyMethodWithForBrowser(String methodBrowseredName, String className) {
- try {
- Class clazz = Class.forName(className);
- /*
- * By using this isAssignable to ensure corect class before invocation,
- * then we lost possibility to track manualy set browsers, but it is correct,
- * as method description is set only when annotation is used
- */
- if (clazz != null && BrowserTest.class.isAssignableFrom(clazz)){
- Method testMethod = clazz.getMethod(methodBrowseredName);
- if (testMethod != null) {
- TestInBrowsers tib = testMethod.getAnnotation(TestInBrowsers.class);
- if (tib != null) {
- methodBrowseredName = methodBrowseredName + " - " + loggedBrowser;
- }
- }
- }
- } catch (Throwable ex) {
- ex.printStackTrace();
- }
- return methodBrowseredName;
- }
-
- private static class TestsLogs {
-
- public final List<LogItem> outs = new LinkedList<LogItem>();
- public final List<LogItem> errs = new LinkedList<LogItem>();
- public final List<LogItem> all = new LinkedList<LogItem>();
- private static boolean added = false;
-
- public synchronized void add(boolean err, boolean out, String text) {
- if (text == null) {
- text = "null";
- }
- LogItem li = new LogItem(text);
- if (out) {
- outs.add(li);
- }
- if (err) {
- errs.add(li);
- }
- all.add(li);
- if (!added) {
- Runtime.getRuntime().addShutdownHook(new Thread() {
-
- @Override
- public void run() {
- try {
- writeXmlLog();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- });
- added = true;
- }
- }
-
- @Override
- public String toString() {
- StringBuilder sb = listToStringBuilder(outs, "out");
- sb.append(listToStringBuilder(errs, "err"));
- sb.append(listToStringBuilder(all, "all"));
- return sb.toString();
- }
-
- private StringBuilder listToStringBuilder(List<LogItem> l, String id) {
- StringBuilder sb = new StringBuilder();
- sb.append("<" + LOG_ELEMENT + " " + LOG_ID_ATTRIBUTE + "=\"").append(id).append("\">\n");
- int i = 0;
- for (LogItem logItem : l) {
- i++;
- sb.append(logItem.toStringBuilder(i));
- }
- sb.append("</" + LOG_ELEMENT + ">\n");
- return sb;
- }
- };
-
- private static class LogItem {
-
- public final Date timeStamp = new Date();
- public final StackTraceElement[] fullTrace = Thread.currentThread().getStackTrace();
- public final String text;
-
- public LogItem(String text) {
- this.text = text;
- }
-
- public StringBuilder toStringBuilder(int id) {
- StringBuilder sb = new StringBuilder();
- sb.append(" <" + ITEM_ELEMENT + " " + ITEM_ID_ATTRIBUTE + "=\"").append(id).append("\">\n");
- sb.append(" <" + STAMP_ELEMENT + "><![CDATA[").append(timeStamp.toString()).append("]]></" + STAMP_ELEMENT + ">\n");
- sb.append(" <" + TEXT_ELEMENT + "><![CDATA[\n").append(text).append("\n]]></" + TEXT_ELEMENT + ">\n");
- sb.append(" <" + FULLTRACE_ELEMENT + "><![CDATA[\n");
- //five methods since call in log methods + getStacktrace method
- for (int i = 6; i < fullTrace.length; i++) {
- sb.append(fullTrace[i].toString()).append("\n");
- }
- sb.append("\n]]> </" + FULLTRACE_ELEMENT + ">\n");
- sb.append(" </" + ITEM_ELEMENT + ">\n");
- return sb;
- }
- }
- /**
- * main method of this class prints out random free port
- * or runs server
- * param "port" prints out the port
- * nothing or number will run server on random(or on number specified)
- * port in -Dtest.server.dir
- */
- public static void main(String[] args) throws Exception {
- if (args.length > 0 && args[0].equalsIgnoreCase("port")) {
- int i = findFreePort();
- System.out.println(i);
- System.exit(0);
- } else {
- int port = 44321;
- if (args.length > 0) {
- port=new Integer(args[0]);
- }
- getIndependentInstance(port);
- while (true) {
- Thread.sleep(1000);
- }
-
- }
- }
-
- /**
- * utility method to find random free port
- *
- * @return - found random free port
- * @throws IOException - if socket can't be opened or no free port exists
- */
- public static int findFreePort()
- throws IOException {
- ServerSocket findPortTestingSocket = new ServerSocket(0);
- int port = findPortTestingSocket.getLocalPort();
- findPortTestingSocket.close();
- return port;
- }
- public static final String HEADLES_OPTION="-headless";
-
- /**
- * we would like to have an singleton instance ASAP
- */
- public ServerAccess() {
-
- getInstance();
-
-
- }
-
- /**
- *
- * @return cached instance. If none, then creates new
- */
- public static ServerLauncher getInstance() {
- if (server == null) {
- server = getIndependentInstance();
- }
- return server;
- }
-
- /**
- *
- * @return new not cached iserver instance on random port,
- * useful for testing application loading from different url then base
- */
- public static ServerLauncher getIndependentInstance() {
- return getIndependentInstance(true);
- }
- public static ServerLauncher getIndependentInstance(boolean daemon) {
- String dir = (System.getProperty(TEST_SERVER_DIR));
- try{
- return getIndependentInstance(dir, findFreePort(),daemon);
- }catch (Exception ex){
- throw new RuntimeException(ex);
- }
- }
-
-
- /**
- *
- * @return new not cached iserver instance on random port,
- * useful for testing application loading from different url then base
- */
-
- public static ServerLauncher getIndependentInstance(int port) {
- return getIndependentInstance(port, true);
- }
- public static ServerLauncher getIndependentInstance(int port,boolean daemon) {
- String dir = (System.getProperty(TEST_SERVER_DIR));
- return getIndependentInstance(dir,port,daemon);
- }
-
- /**
- *
- * @return new not cached iserver instance on random port upon custom www root directory,
- * useful for testing application loading from different url then base
- */
-
- public static ServerLauncher getIndependentInstance(String dir, int port) {
- return getIndependentInstance(dir, port, true);
- }
- public static ServerLauncher getIndependentInstance(String dir, int port,boolean daemon) {
-
-
- if (dir == null || dir.trim().length() == 0 || !new File(dir).exists() || !new File(dir).isDirectory()) {
- throw new RuntimeException("test.server.dir property must be set to valid directory!");
- }
- try {
- ServerLauncher lServerLuncher = new ServerLauncher(port, new File(dir));
- Thread r=new Thread(lServerLuncher);
- r.setDaemon(daemon);
- r.start();
- return lServerLuncher;
- } catch (Exception ex) {
- throw new RuntimeException(ex);
- }
-
- }
-
- /**
- *
- * @return - value passed inside as javaws binary location. See JAVAWS_BUILD_BIN
- */
- public String getJavawsLocation() {
- return System.getProperty(JAVAWS_BUILD_BIN);
- }
-
- /**
- *
- * @return - bianry from where to lunch current browser
- */
- public String getBrowserLocation() {
- if (this.currentBrowser==null) return UNSET_BROWSER;
- return this.currentBrowser.getBin();
- }
-
- public List<String> getBrowserParams() {
- if (this.currentBrowser==null) return null;
- List<String> l1=this.currentBrowser.getComaptibilitySwitches();
- List<String> l2=this.currentBrowser.getDefaultSwitches();
- List<String> l= new ArrayList();
- if (l1!=null)l.addAll(l1);
- if (l2!=null)l.addAll(l2);
- return l;
-
- }
-
- public Browsers getCurrentBrowsers() {
- if (currentBrowser==null) return null;
- return currentBrowser.getID();
- }
- public Browser getCurrentBrowser() {
- return currentBrowser;
- }
-
- public void setCurrentBrowser(Browsers currentBrowser) {
- this.currentBrowser = BrowserFactory.getFactory().getBrowser(currentBrowser);
- if (this.currentBrowser == null) {
- loggedBrowser = UNSET_BROWSER;
- } else {
- loggedBrowser = this.currentBrowser.getID().toString();
- }
- }
-
- public void setCurrentBrowser(Browser currentBrowser) {
- this.currentBrowser = currentBrowser;
- if (this.currentBrowser == null) {
- loggedBrowser = UNSET_BROWSER;
- } else {
- loggedBrowser = this.currentBrowser.getID().toString();
- }
- }
-
-
-
- /**
- *
- * @return - value passed inside as javaws binary location as file. See JAVAWS_BUILD_BIN
- */
- public File getJavawsFile() {
- return new File(System.getProperty(JAVAWS_BUILD_BIN));
- }
-
- @Test
- public void testsProcessResultFiltering() throws Exception {
- ProcessResult pn = new ProcessResult(null, null, null, true, 0, null);
- Assert.assertNull(pn.notFilteredStdout);
- Assert.assertNull(pn.stdout);
- Assert.assertNull(pn.stderr);
- String fakeOut2 =
- "EMMA: processing instrumentation path ...\n"
- + "EMMA: package [net.sourceforge.filebrowser] contains classes [ArrayOfString] without full debug info\n"
- + "EMMA: instrumentation path processed in 1407 ms\n"
- + "test stage 1\n"
- + "test stage 2\n"
- + "EMMA: The intruder!\n"
- + "test stage 3\n"
- + "EMMA: [45 class(es) instrumented, 13 resource(s) copied]\n"
- + "EMMA: metadata merged into [icedtea-web/inc] {in 105 ms}\n"
- + "EMMA: processing instrumentation path ...";
- String filteredOut2 =
- "test stage 1\n"
- + "test stage 2\n"
- + "test stage 3\n";
- ProcessResult p2 = new ProcessResult(fakeOut2, fakeOut2, null, true, 0, null);
- Assert.assertEquals(p2.notFilteredStdout, fakeOut2);
- Assert.assertEquals(p2.stdout, filteredOut2);
- Assert.assertEquals(p2.stderr, fakeOut2);
- fakeOut2+="\n";
- p2 = new ProcessResult(fakeOut2, fakeOut2, null, true, 0, null);
- Assert.assertEquals(p2.notFilteredStdout, fakeOut2);
- Assert.assertEquals(p2.stdout, filteredOut2);
- Assert.assertEquals(p2.stderr, fakeOut2);
- String fakeOut =
- "test string\n"
- + "EMMA: processing instrumentation path ...\n"
- + "EMMA: package [net.sourceforge.filebrowser] contains classes [ArrayOfString] without full debug info\n"
- + "EMMA: instrumentation path processed in 1407 ms\n"
- + "test stage 1\n"
- + "test stage 2\n"
- + "test stage 3\n"
- + "EMMA: [45 class(es) instrumented, 13 resource(s) copied]\n"
- + "EMMA: metadata merged into [icedtea-web/inc] {in 105 ms}\n"
- + "EMMA: processing instrumentation path ...\n"
- + "test ends";
- String filteredOut =
- "test string\n"
- + "test stage 1\n"
- + "test stage 2\n"
- + "test stage 3\n"
- + "test ends";
- ProcessResult p = new ProcessResult(fakeOut, fakeOut, null, true, 0, null);
- Assert.assertEquals(p.notFilteredStdout, fakeOut);
- Assert.assertEquals(p.stdout, filteredOut);
- Assert.assertEquals(p.stderr, fakeOut);
- fakeOut+="\n";
- filteredOut+="\n";
- p = new ProcessResult(fakeOut, fakeOut, null, true, 0, null);
- Assert.assertEquals(p.notFilteredStdout, fakeOut);
- Assert.assertEquals(p.stdout, filteredOut);
- Assert.assertEquals(p.stderr, fakeOut);
- }
-
- @Test
- public void ensureJavaws() throws Exception {
- String javawsValue = getJavawsLocation();
- Assert.assertNotNull(javawsValue);
- Assert.assertTrue(javawsValue.trim().length() > 2);
- File javawsFile = getJavawsFile();
- Assert.assertTrue(javawsFile.exists());
- Assert.assertFalse(javawsFile.isDirectory());
- }
-
- @Test
- public void ensureServer() throws Exception {
-
- Assert.assertNotNull(server.getPort());
- Assert.assertNotNull(server.getDir());
- Assert.assertTrue(server.getPort() > 999);
- Assert.assertTrue(server.getDir().toString().trim().length() > 2);
-
- Assert.assertTrue(server.getDir().exists());
- Assert.assertTrue(server.getDir().isDirectory());
-
- File portFile = new File(server.getDir(), "server.port");
- File dirFile = new File(server.getDir(), "server.dir");
-
- saveFile(server.getDir().getAbsolutePath(), dirFile);
- saveFile(server.getPort().toString(), portFile);
- saveFile(server.getPort().toString(), portFile);
-
- Assert.assertTrue(portFile.exists());
- Assert.assertTrue(dirFile.exists());
- Assert.assertTrue(server.getDir().listFiles().length > 1);
-
- String portFileContent = getContentOfStream(new FileInputStream(portFile));
- String dirFileContent = getContentOfStream(new FileInputStream(dirFile));
-
- URL portUrl = new URL("http", "localhost", server.getPort(), "/server.port");
- URL dirUrl = new URL("http", "localhost", server.getPort(), "/server.dir");
-
- String portUrlContent = getContentOfStream(portUrl.openConnection().getInputStream());
- String dirUrlContent = getContentOfStream(dirUrl.openConnection().getInputStream());
-
- Assert.assertEquals(portUrlContent.trim(), portFileContent.trim());
- Assert.assertEquals(dirUrlContent.trim(), dirFileContent.trim());
- Assert.assertEquals(new File(dirUrlContent.trim()), server.getDir());
- Assert.assertEquals(new Integer(portUrlContent.trim()), server.getPort());
-
- URL fastUrl = new URL("http", "localhost", server.getPort(), "/simpletest1.jnlp");
- URL slowUrl = new URL("http", "localhost", server.getPort(), "/XslowXsimpletest1.jnlp");
-
- String fastUrlcontent = getContentOfStream(fastUrl.openConnection().getInputStream());
- String slowUrlContent = getContentOfStream(slowUrl.openConnection().getInputStream());
- Assert.assertEquals(fastUrlcontent, slowUrlContent);
-
- }
-
- /**
- *
- * @return port on which is running cached server. If non singleton instance is running, new is created.
- */
- public int getPort() {
- if (server == null) {
- getInstance();
- }
- //if (!server.isRunning()) throw new RuntimeException("Server mysteriously died");
- return server.getPort();
-
- }
-
- /**
- *
- * @return directory upon which is running cached server. If non singleton instance is running, new is created.
- */
- public File getDir() {
- if (server == null) {
- getInstance();
- }
- // if (!server.isRunning()) throw new RuntimeException("Server mysteriously died");
- return server.getDir();
- }
-
- /**
- *
- * @return url pointing to cached server resource. If non singleton instance is running, new is created.
- */
- public URL getUrl(String resource) throws MalformedURLException {
- if (server == null) {
- getInstance();
- }
- //if (!server.isRunning()) throw new RuntimeException("Server mysteriously died");
- return server.getUrl(resource);
- }
-
- /**
- *
- * @return url pointing to cached server . If non singleton instance is running, new is created.
- */
- public URL getUrl() throws MalformedURLException {
- return getUrl("");
-
- }
-
- /**
- *
- * @return whether cached server is alive. If non singleton instance is running, new is created.
- */
- public boolean isRunning() {
- if (server == null) {
- getInstance();
- }
- //if (!server.isRunning()) throw new RuntimeException("Server mysteriously died");
- return server.isRunning();
-
- }
-
- /**
- * Return resource from cached server
- *
- * @param resource to be located on cached server
- * @return individual bytes of resource
- * @throws IOException if connection can't be established or resource does not exist
- */
- public ByteArrayOutputStream getResourceAsBytes(String resource) throws IOException {
- return getResourceAsBytes(getUrl(resource));
- }
-
- /**
- * Return resource from cached server
- *
- * @param resource to be located on cached server
- * @return string constructed from resource
- * @throws IOException if connection can't be established or resource does not exist
- */
- public String getResourceAsString(String resource) throws IOException {
- return getResourceAsString(getUrl(resource));
- }
-
- /**
- * utility method which can read bytes of any stream
- *
- * @param input stream to be read
- * @return individual bytes of resource
- * @throws IOException if connection can't be established or resource does not exist
- */
- public static ByteArrayOutputStream getBytesFromStream(InputStream is) throws IOException {
- ByteArrayOutputStream buffer = new ByteArrayOutputStream();
- int nRead;
- byte[] data = new byte[16384];
- while ((nRead = is.read(data, 0, data.length)) != -1) {
- buffer.write(data, 0, nRead);
- }
- buffer.flush();
- return buffer;
- }
-
- /**
- * utility method which can read from any stream as one long String
- *
- * @param input stream
- * @return stream as string
- * @throws IOException if connection can't be established or resource does not exist
- */
- public static String getContentOfStream(InputStream is,String encoding) throws IOException {
- try {
- BufferedReader br = new BufferedReader(new InputStreamReader(is, encoding));
- StringBuilder sb = new StringBuilder();
- while (true) {
- String s = br.readLine();
- if (s == null) {
- break;
- }
- sb.append(s).append("\n");
-
- }
- return sb.toString();
- } finally {
- is.close();
- }
-
- }
-
- /**
- * utility method which can read from any stream as one long String
- *
- * @param input stream
- * @return stream as string
- * @throws IOException if connection can't be established or resource does not exist
- */
- public static String getContentOfStream(InputStream is) throws IOException {
- return getContentOfStream(is, "UTF-8");
-
- }
-
- /**
- * utility method which can read bytes of resource from any url
- *
- * @param resource to be located on any url
- * @return individual bytes of resource
- * @throws IOException if connection can't be established or resource does not exist
- */
- public static ByteArrayOutputStream getResourceAsBytes(URL u) throws IOException {
- HttpURLConnection connection = (HttpURLConnection) u.openConnection();
- connection = (HttpURLConnection) u.openConnection();
- connection.setRequestMethod("GET");
- connection.setDoOutput(true);
- connection.setReadTimeout(READ_TIMEOUT);
- connection.connect();
- return getBytesFromStream(connection.getInputStream());
-
- }
-
- /**
- * utility method which can read string of resource from any url
- *
- * @param resource to be located on any url
- * @return resource as string
- * @throws IOException if connection can't be established or resource does not exist
- */
- public static String getResourceAsString(URL u) throws IOException {
- HttpURLConnection connection = (HttpURLConnection) u.openConnection();
- connection = (HttpURLConnection) u.openConnection();
- connection.setRequestMethod("GET");
- connection.setDoOutput(true);
- connection.setReadTimeout(READ_TIMEOUT);
- connection.connect();
- return getContentOfStream(connection.getInputStream());
- }
-
- /**
- * helping dummy method to save String as file
- *
- * @param content
- * @param f
- * @throws IOException
- */
- public static void saveFile(String content, File f) throws IOException {
- saveFile(content, f, "utf-8");
- }
- public static void saveFile(String content, File f,String encoding) throws IOException {
- Writer output = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f),encoding));
- output.write(content);
- output.flush();
- output.close();
- }
-
- /**
- * wrapping method to executeProcess (eg: javaws -headless http://localhost:port/resource)
- * will execute default javaws (@see JAVAWS_BUILD_BIN) upon default url upon cached server (@see SERVER_NAME @see getPort(), @see getInstance())
- * with parameter -headless (no gui, no asking)
- * @param resource name of resource
- * @return result what left after running this process
- * @throws Exception
- */
- public ProcessResult executeJavawsHeadless(String resource) throws Exception {
- return executeJavawsHeadless(null, resource);
- }
- public ProcessResult executeJavawsHeadless(String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
- return executeJavawsHeadless(null, resource,stdoutl,stderrl);
- }
-
- /**
- * wrapping method to executeProcess (eg: javaws arg arg -headless http://localhost:port/resource)
- * will execute default javaws (@see JAVAWS_BUILD_BIN) upon default url upon cached server (@see SERVER_NAME @see getPort(), @see getInstance())
- * with parameter -headless (no gui, no asking)
- * @param resource name of resource
- * @param otherargs other arguments to be added to headless one
- * @return result what left after running this process
- * @throws Exception
- */
- public ProcessResult executeJavawsHeadless(List<String> otherargs, String resource) throws Exception {
- return executeJavawsHeadless(otherargs, resource,null,null);
- }
- public ProcessResult executeJavawsHeadless(List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
- if (otherargs == null) {
- otherargs = new ArrayList<String>(1);
- }
- List<String> headlesList = new ArrayList<String>(otherargs);
- headlesList.add(HEADLES_OPTION);
- return executeJavaws(headlesList, resource,stdoutl,stderrl);
- }
-
-
- /**
- * wrapping method to executeProcess (eg: javaws http://localhost:port/resource)
- * will execute default javaws (@see JAVAWS_BUILD_BIN) upon default url upon cached server (@see SERVER_NAME @see getPort(), @see getInstance())
- * @param resource name of resource
- * @return result what left after running this process
- * @throws Exception
- */
- public ProcessResult executeJavaws(String resource) throws Exception {
- return executeJavaws(null, resource);
- }
- public ProcessResult executeJavaws(String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
- return executeJavaws(null, resource,stdoutl,stderrl);
- }
- public ProcessResult executeBrowser(String resource) throws Exception {
- return executeBrowser(getBrowserParams(), resource);
- }
- public ProcessResult executeBrowser(String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
- return executeBrowser(getBrowserParams(), resource,stderrl,stdoutl);
- }
-
- /**
- * wrapping method to executeProcess (eg: javaws arg arg http://localhost:port/resource)
- * will execute default javaws (@see JAVAWS_BUILD_BIN) upon default url upon cached server (@see SERVER_NAME @see getPort(), @see getInstance()))
- * @param resource name of resource
- * @param otherargs other arguments to be added
- * @return result what left after running this process
- * @throws Exception
- */
- public ProcessResult executeJavaws(List<String> otherargs, String resource) throws Exception {
- return executeProcessUponURL(getJavawsLocation(), otherargs, getUrlUponThisInstance(resource));
- }
- public ProcessResult executeJavaws(List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
- return executeProcessUponURL(getJavawsLocation(), otherargs, getUrlUponThisInstance(resource),stdoutl,stderrl);
- }
-
- public ProcessResult executeBrowser(List<String> otherargs, String resource) throws Exception {
- return executeProcessUponURL(getBrowserLocation(), otherargs, getUrlUponThisInstance(resource));
- }
- public ProcessResult executeBrowser(List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
- return executeProcessUponURL(getBrowserLocation(), otherargs, getUrlUponThisInstance(resource),stdoutl,stderrl);
- }
-
- public ProcessResult executeBrowser(Browser b,List<String> otherargs, String resource) throws Exception {
- return executeProcessUponURL(b.getBin(), otherargs, getUrlUponThisInstance(resource));
- }
- public ProcessResult executeBrowser(Browser b,List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
- return executeProcessUponURL(b.getBin(), otherargs, getUrlUponThisInstance(resource),stdoutl,stderrl);
- }
-
- /**
- * Ctreate resource on http, on 'localhost' on port on which this instance is running
- * @param resource
- * @return
- * @throws MalformedURLException
- */
- public URL getUrlUponThisInstance(String resource) throws MalformedURLException {
- if (!resource.startsWith("/")) {
- resource = "/" + resource;
- }
- return new URL("http", server.getServerName(), getPort(), resource);
- }
-
- /**
- * wrapping method to executeProcess (eg: javaws arg arg arg url)
- * will execute default javaws (@see JAVAWS_BUILD_BIN) upon any server
- * @param u url of resource upon any server
- * @param javaws arguments
- * @return result what left after running this process
- * @throws Exception
- */
- public ProcessResult executeJavawsUponUrl(List<String> otherargs, URL u) throws Exception {
- return executeProcessUponURL(getJavawsLocation(), otherargs, u);
- }
- public ProcessResult executeJavawsUponUrl(List<String> otherargs, URL u,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
- return executeProcessUponURL(getJavawsLocation(), otherargs, u,stdoutl,stderrl);
- }
-
- /**
- * wrapping utility method to executeProcess (eg: any_binary arg arg arg url)
- *
- * will execute any process upon url upon any server
- * @param u url of resource upon any server
- * @param javaws arguments
- * @return result what left after running this process
- * @throws Exception
- */
- public static ProcessResult executeProcessUponURL(String toBeExecuted, List<String> otherargs, URL u) throws Exception {
- return executeProcessUponURL(toBeExecuted, otherargs, u,null,null);
- }
-
- public static ProcessResult executeProcessUponURL(String toBeExecuted, List<String> otherargs, URL u,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
- Assert.assertNotNull(u);
- Assert.assertNotNull(toBeExecuted);
- Assert.assertTrue(toBeExecuted.trim().length() > 1);
- if (otherargs == null) {
- otherargs = new ArrayList<String>(1);
- }
- List<String> urledArgs = new ArrayList<String>(otherargs);
- urledArgs.add(0, toBeExecuted);
- urledArgs.add(u.toString());
- return executeProcess(urledArgs, stdoutl, stderrl);
- }
-
- public static ProcessResult executeProcess(final List<String> args) throws Exception {
- return executeProcess(args, null);
- }
- public static ProcessResult executeProcess(final List<String> args,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
- return executeProcess(args, null,stdoutl,stderrl);
- }
- /**
- * utility method to lunch process, get its stdout/stderr, its return value and to kill it if running to long (@see PROCESS_TIMEOUT)
- *
- *
- * Small bacground:
- * This method creates thread inside which exec will be executed. Then creates assassin thread with given timeout to kill the previously created thread if necessary.
- * Starts assassin thread, starts process thread. Wait until process is running, then starts content readers.
- * Closes input of process.
- * Wait until process is running (no matter if it terminate itself (correctly or badly), or is terminated by its assassin.
- * Construct result from readed stdout, stderr, process return value, assassin successfully
- *
- * @param args binary with args to be executed
- * @param dir optional, directory where this process will run
- * @return what left from process - process itself, its stdout, stderr and return value and whether it was terminated by assassin.
- * @throws Exception
- */
- public static ProcessResult executeProcess(final List<String> args,File dir) throws Exception {
- return executeProcess(args, dir, null, null);
- }
-
- private static String createConnectionMessage(ThreadedProcess t) {
- return "Connecting " + t.getCommandLine();
- }
-
- /**
- * Proceed message s to logging with request to reprint to System.err
- * @param s
- */
- public static void logErrorReprint(String s) {
- log(s, false, true);
- }
-
- /**
- * Proceed message s to logging with request to reprint to System.out
- * @param s
- */
- public static void logOutputReprint(String s) {
- log(s, true, false);
- }
-
- /**
- * Proceed message s to logging withhout request to reprint
- * @param s
- */
- public static void logNoReprint(String s) {
- log(s, false, false);
- }
-
- private static void log(String message, boolean printToOut, boolean printToErr) {
- String idded;
- StackTraceElement ste = getTestMethod();
- String fullId = ste.getClassName() + "." + ste.getMethodName();
- fullId = modifyMethodWithForBrowser(ste.getMethodName(), ste.getClassName());
- if (message.contains("\n")) {
- idded = fullId + ": \n" + message + "\n" + fullId + " ---";
- } else {
- idded = fullId + ": " + message;
-
- }
- if (LOGS_REPRINT) {
- if (printToOut) {
- System.out.println(idded);
- }
- if (printToErr) {
- System.err.println(idded);
- }
- }
- try{
- if (printToOut) {
- DEFAULT_STDOUT_WRITER.write(idded);
- DEFAULT_STDOUT_WRITER.newLine();
- }
- if (printToErr) {
- DEFAULT_STDERR_WRITER.write(idded);
- DEFAULT_STDERR_WRITER.newLine();
- }
- DEFAULT_STDLOGS_WRITER.write(idded);
- DEFAULT_STDLOGS_WRITER.newLine();
- }catch (Throwable t){
- t.printStackTrace();
- }
-
- addToXmlLog(message,printToOut,printToErr,ste);
- }
-
- public static void logException(Throwable t){
- logException(t, true);
- }
- public static void logException(Throwable t, boolean print){
- try{
- StringWriter sw = new StringWriter();
- PrintWriter pw = new PrintWriter(sw);
- t.printStackTrace(pw);
- log(sw.toString(), false, print);
- pw.close();
- sw.close();
- }catch(Exception ex){
- throw new RuntimeException(ex);
- }
- }
-
- private static StackTraceElement getTestMethod() {
- return getTestMethod(Thread.currentThread().getStackTrace());
- }
-
- private static StackTraceElement getTestMethod(StackTraceElement[] stack) {
- //0 is always thread
- //1 is net.sourceforge.jnlp.ServerAccess
- StackTraceElement result = stack[1];
- String baseClass = stack[1].getClassName();
- int i = 2;
- for (; i < stack.length; i++) {
- result = stack[i];//at least moving up
- if(stack[i].getClassName().contains("$")){
- continue;
- }
- if (!baseClass.equals(stack[i].getClassName())) {
- break;
- }
- }
- //if nothing left in stack then we have been in ServerAccess already
- //so the target method is the highest form it and better to return it
- //rather then die to ArrayOutOfBounds
- if(i >= stack.length){
- return result;
- }
- //now we are out of net.sourceforge.jnlp.ServerAccess
- //method we need (the test) is highest from following class
- baseClass = stack[i].getClassName();
- for (; i < stack.length; i++) {
- if(stack[i].getClassName().contains("$")){
- continue;
- }
- if (!baseClass.equals(stack[i].getClassName())) {
- break;
- }
- result = stack[i];
- }
-
- return result;
- }
-
- public static ProcessResult executeProcess(final List<String> args, File dir, ContentReaderListener stdoutl, ContentReaderListener stderrl) throws Exception {
- ThreadedProcess t = new ThreadedProcess(args, dir);
- if (PROCESS_LOG) {
- String connectionMesaage = createConnectionMessage(t);
- log(connectionMesaage, true, true);
- }
- ProcessAssasin pa = new ProcessAssasin(t, PROCESS_TIMEOUT);
- pa.start();
- t.start();
- while (t.getP() == null && t.deadlyException == null) {
- Thread.sleep(100);
- }
- if (t.deadlyException != null) {
- pa.setCanRun(false);
- return new ProcessResult("", "", null, true, Integer.MIN_VALUE, t.deadlyException);
- }
- ContentReader crs = new ContentReader(t.getP().getInputStream(),stdoutl);
- ContentReader cre = new ContentReader(t.getP().getErrorStream(),stderrl);
-
- OutputStream out = t.getP().getOutputStream();
- if (out != null) {
- out.close();
- }
-
- new Thread(crs).start();
- new Thread(cre).start();
- while (t.isRunning()) {
- Thread.sleep(100);
- }
-
- while (!t.isDestoyed()) {
- Thread.sleep(100);
- }
- pa.setCanRun(false);
- // ServerAccess.logOutputReprint(t.getP().exitValue()); when process is killed, this throws exception
-
- ProcessResult pr=new ProcessResult(crs.getContent(), cre.getContent(), t.getP(), pa.wasTerminated(), t.getExitCode(), null);
- if (PROCESS_LOG) {
- log(pr.stdout, true, false);
- log(pr.stderr, false, true);
- }
- return pr;
- }
-
- /**
- *
- * wrapper around Runtime.getRuntime().exec(...) which ensures that process is run inside its own, by us controlled, thread.
- * Process builder caused some unexpected and weird behavior :/
- */
- private static class ThreadedProcess extends Thread {
-
- Process p = null;
- List<String> args;
- Integer exitCode;
- Boolean running;
- File dir;
- Throwable deadlyException = null;
- /*
- * before removing this "useless" variable
- * check DeadLockTestTest.testDeadLockTestTerminated2
- */
- private boolean destoyed = false;
-
- public boolean isDestoyed() {
- return destoyed;
- }
-
- public void setDestoyed(boolean destoyed) {
- this.destoyed = destoyed;
- }
-
- public Boolean isRunning() {
- return running;
- }
-
- public Integer getExitCode() {
- return exitCode;
- }
-
- public ThreadedProcess(List<String> args) {
- this.args = args;
- }
- public ThreadedProcess(List<String> args,File dir) {
- this.args = args;
- this.dir=dir;
- }
-
- public String getCommandLine() {
- String commandLine = "unknown command";
- try {
- if (args != null && args.size() > 0) {
- commandLine = "";
- for (String string : args) {
- commandLine = commandLine + " " + string;
-
- }
- }
- } catch (Exception ex) {
- ex.printStackTrace();
- } finally {
- return commandLine;
- }
- }
-
- public Process getP() {
- return p;
- }
-
- @Override
- public void run() {
- try {
- running = true;
- Runtime r = Runtime.getRuntime();
- if (dir==null){
- p = r.exec(args.toArray(new String[0]));
- }else{
- p = r.exec(args.toArray(new String[0]),new String[0], dir);
- }
- try {
- exitCode = p.waitFor();
- Thread.sleep(500); //this is giving to fast done proecesses's e/o readers time to read all. I would like to know better solution :-/
- } finally {
- destoyed = true;
- }
- } catch (Exception ex) {
- if (ex instanceof InterruptedException) {
- //add to the set of terminated threaded processes
- deadlyException = ex;
- logException(deadlyException, false);
- terminated.add(this);
- } else {
- //happens when non-existing process is launched, is causing p null!
- terminated.add(this);
- deadlyException = ex;
- logException(deadlyException, false);
- throw new RuntimeException(ex);
- }
- } finally {
- running = false;
- }
- }
- }
-
- /**
- * wrapper around tiny http server to separate lunch configurations and servers.
- * to allow terminations and stuff around.
- */
- public static class ServerLauncher implements Runnable {
-
- /**
- * default url name part.
- * This can be changed in runtime, but will affect all following tasks upon those server
- */
- private String serverName = DEFAULT_LOCALHOST_NAME;
- private boolean running;
- private final Integer port;
- private final File dir;
-
- public String getServerName() {
- return serverName;
- }
-
- public void setServerName(String serverName) {
- this.serverName = serverName;
- }
-
- public ServerLauncher(Integer port, File dir) {
- this.port = port;
- this.dir = dir;
- System.err.println("port: " + port);
- System.err.println("dir: " + dir);
- }
-
- public boolean isRunning() {
- return running;
- }
-
- public Integer getPort() {
- return port;
- }
-
- public File getDir() {
- return dir;
- }
-
- public ServerLauncher(File dir) {
- this(8181, dir);
- }
-
- public ServerLauncher(Integer port) {
-
- this(port, new File(System.getProperty("user.dir")));
- }
-
- public ServerLauncher() {
- this(8181, new File(System.getProperty("user.dir")));
-
- }
-
- public void run() {
- running = true;
- try {
- ServerSocket s = new ServerSocket(
- port);
- while (running) {
- new TinyHttpdImpl(s.accept(), dir, port);
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- running = false;
- }
-
- }
-
- public URL getUrl(String resource) throws MalformedURLException {
- return new URL("http", getServerName(), getPort(), resource);
- }
-
- public URL getUrl() throws MalformedURLException {
- return getUrl("");
- }
-
- /**
- * based on http://www.mcwalter.org/technology/java/httpd/tiny/index.html
- * Very small implementation of http return headers for our served resources
- *
- * When resource starts with XslowX prefix, then resouce (without XslowX)
- * is returned, but its delivery is delayed
- */
- private class TinyHttpdImpl extends Thread {
-
- Socket c;
- private final File dir;
- private final int port;
- private boolean canRun = true;
- private static final String XSX="/XslowX";
-
- public void setCanRun(boolean canRun) {
- this.canRun = canRun;
- }
-
- public TinyHttpdImpl(Socket s, File f, int port) {
- c = s;
- this.dir = f;
- this.port = port;
- start();
- }
-
- public int getPort() {
- return port;
- }
-
- @Override
- public void run() {
- try {
- BufferedReader i = new BufferedReader(new InputStreamReader(c.getInputStream()));
- DataOutputStream o = new DataOutputStream(c.getOutputStream());
- try {
- while (canRun) {
- String s = i.readLine();
- if (s.length() < 1) {
- break;
- }
- if (s.startsWith("GET")) {
- StringTokenizer t = new StringTokenizer(s, " ");
- t.nextToken();
- String op = t.nextToken();
- String p = op;
- if (p.startsWith(XSX))p=p.replace(XSX, "/");
- logNoReprint("Getting: "+p);
- p=URLDecoder.decode(p, "UTF-8");
- logNoReprint("Serving: "+p);
- p = (".".concat(((p.endsWith("/")) ? p.concat(
- "index.html") : p))).replace('/', File.separatorChar);
- File pp = new File(dir, p);
- int l = (int) pp.length();
- byte[] b = new byte[l];
- FileInputStream f = new FileInputStream(pp);
- f.read(b);
- String content = "";
- String ct = "Content-Type: ";
- if (p.toLowerCase().endsWith(".jnlp")) {
- content = ct + "application/x-java-jnlp-file\n";
- } else if (p.toLowerCase().endsWith(".html")) {
- content = ct + "text/html\n";
- } else if (p.toLowerCase().endsWith(".jar")) {
- content = ct + "application/x-jar\n";
- }
- o.writeBytes("HTTP/1.0 200 OK\nConten"
- + "t-Length:" + l + "\n" + content + "\n");
- if (op.startsWith(XSX)){
- byte[][] bb=ServerAccess.splitArray(b,10);
- for (int j = 0; j < bb.length; j++) {
- Thread.sleep(2000);
- byte[] bs = bb[j];
- o.write(bs, 0, bs.length);
- }
- }else{
- o.write(b, 0, l);
- }
- }
- }
- }catch (SocketException e) {
- logException(e, false);
- } catch (Exception e) {
- o.writeBytes("HTTP/1.0 404 ERROR\n\n\n");
- logException(e, false);
- }
- o.close();
- } catch (Exception e) {
- logException(e, false);
- }
- }
- }
- }
-
-
- /**
- * This function splits input array to severasl pieces
- * from byte[length] splitt to n pieces s is retrunrd byte[n][length/n], except
- * last piece which contains length%n
- *
- * @param input - array to be splitted
- * @param pieces - to how many pieces it should be broken
- * @return inidividual pices of original array, which concatet again givs original array
- */
- public static byte[][] splitArray(byte[] input, int pieces) {
- int rest = input.length;
- int rowLength = rest / pieces;
- if (rest % pieces > 0) rowLength++;
- if (pieces * rowLength >= rest + rowLength) pieces--;
- int i = 0, j = 0;
- byte[][] array = new byte[pieces][];
- array[0] = new byte[rowLength];
- for (byte b : input) {
- if (i >= rowLength) {
- i = 0;
- array[++j] = new byte[Math.min(rowLength, rest)];
- }
- array[j][i++] = b;
- rest--;
- }
- return array;
- }
-
-
- @Test
- public void splitArrayTest0() throws Exception {
- byte[] b={1,2,3,4,5,6,7,8,9,10,11,12,13,14};
- byte[][] bb=splitArray(b, 3);
- //printArrays(bb);
- byte[] b1={1,2,3,4,5};
- byte[] b2={6,7,8,9,10};
- byte[] b3={11,12,13,14};
- Assert.assertEquals(3,bb.length);
- Assert.assertArrayEquals(b1,bb[0]);
- Assert.assertArrayEquals(b2,bb[1]);
- Assert.assertArrayEquals(b3,bb[2]);
- }
-
- @Test
- public void splitArrayTest1() throws Exception {
- byte[] b={1,2,3,4,5,6,7,8,9,10,11,12,13};
- byte[][] bb=splitArray(b, 3);
- //printArrays(bb);
- byte[] b1={1,2,3,4,5};
- byte[] b2={6,7,8,9,10};
- byte[] b3={11,12,13};
- Assert.assertEquals(3,bb.length);
- Assert.assertArrayEquals(b1,bb[0]);
- Assert.assertArrayEquals(b2,bb[1]);
- Assert.assertArrayEquals(b3,bb[2]);
- }
-
- @Test
- public void splitArrayTest2() throws Exception {
- byte[] b={1,2,3,4,5,6,7,8,9,10,11,12};
- byte[][] bb=splitArray(b, 3);
- //printArrays(bb);
- byte[] b1={1,2,3,4};
- byte[] b2={5,6,7,8};
- byte[] b3={9,10,11,12};
- Assert.assertEquals(3,bb.length);
- Assert.assertArrayEquals(b1,bb[0]);
- Assert.assertArrayEquals(b2,bb[1]);
- Assert.assertArrayEquals(b3,bb[2]);
- }
-
- private void printArrays(byte[][] bb) {
- System.out.println("[][] l=" + bb.length);
- for (int i = 0; i < bb.length; i++) {
- byte[] bs = bb[i];
- System.out.println(i + ": l=" + bs.length);
- for (int j = 0; j < bs.length; j++) {
- byte c = bs[j];
- System.out.print(" " + j + ":" + c + " ");
- }
- System.out.println("");
- }
- }
-
-
- /**
- * class which timeout any ThreadedProcess. This killing of 'thread with process' replaced not working process.destroy().
- */
- private static class ProcessAssasin extends Thread {
-
- long timeout;
- private final ThreadedProcess p;
- //false == is disabled:(
- private boolean canRun = true;
- private boolean wasTerminated = false;
- /**
- * if this is true, then process is not destroyed after timeout, but just left to its own destiny.
- * Its stdout/err is no longer recorded, and it is leaking system resources until it dies by itself
- * The contorl is returned to main thread with all informations recorded untill now.
- * You will be able to listen to std out from listeners still
- */
- private boolean skipInstedOfDesroy = false;
-
- /**
- *
- * @param p
- * @param timeout - time to die in milliseconds
- */
- public ProcessAssasin(ThreadedProcess p, long timeout) {
- this.p = (p);
- this.timeout = timeout;
-
-
- }
-
- public ProcessAssasin(ThreadedProcess p, long timeout, boolean skipInstedOfDesroy) {
- this.p = (p);
- this.timeout = timeout;
- this.skipInstedOfDesroy = skipInstedOfDesroy;
-
-
- }
-
- public void setCanRun(boolean canRun) {
- this.canRun = canRun;
- if (p != null) {
- if (p.getP() != null) {
- logNoReprint("Stopping assassin for" + p.toString() + " " + p.getP().toString() + " " + p.getCommandLine() + ": ");
- } else {
- logNoReprint("Stopping assassin for" + p.toString() + " " + p.getCommandLine() + ": ");
- }
- } else {
- logNoReprint("Stopping assassin for null job: ");
- }
- }
-
- public boolean isCanRun() {
- return canRun;
- }
-
- public boolean wasTerminated() {
- return wasTerminated;
- }
-
- public void setSkipInstedOfDesroy(boolean skipInstedOfDesroy) {
- this.skipInstedOfDesroy = skipInstedOfDesroy;
- }
-
- public boolean isSkipInstedOfDesroy() {
- return skipInstedOfDesroy;
- }
-
- @Override
- public void run() {
-
- long startTime = System.nanoTime() / NANO_TIME_DELIMITER;
- while (canRun) {
- try {
-
- long time = System.nanoTime() / NANO_TIME_DELIMITER;
- //ServerAccess.logOutputReprint(time - startTime);
- //ServerAccess.logOutputReprint((time - startTime) > timeout);
- if ((time - startTime) > timeout) {
- try {
- if (p != null) {
- if (p.getP() != null) {
- logErrorReprint("Timed out " + p.toString() + " " + p.getP().toString() + " .. killing " + p.getCommandLine() + ": ");
- } else {
- logErrorReprint("Timed out " + p.toString() + " " + "null .. killing " + p.getCommandLine() + ": ");
- }
- wasTerminated = true;
- p.interrupt();
- while (!terminated.contains(p)) {
- Thread.sleep(100);
- }
- if (p.getP() != null) {
- try {
- if (!skipInstedOfDesroy) {
- p.getP().destroy();
- }
- } catch (Throwable ex) {
- if (p.deadlyException == null) {
- p.deadlyException = ex;
- }
- ex.printStackTrace();
- }
- }
- if (p.getP() != null) {
- logErrorReprint("Timed out " + p.toString() + " " + p.getP().toString() + " .. killed " + p.getCommandLine());
- } else {
- logErrorReprint("Timed out " + p.toString() + " null .. killed " + p.getCommandLine());
- }
- } else {
- logErrorReprint("Timed out null job");
- }
- break;
- } finally {
- p.setDestoyed(true);
- }
-
-
- }
- Thread.sleep(100);
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- if (p != null) {
- if (p.getP() != null) {
- logNoReprint("assassin for" + p.toString() + " " + p.getP().toString() + " .. done " + p.getCommandLine() + " termination " + wasTerminated);
- } else {
- logNoReprint("assassin for" + p.toString() + " null .. done " + p.getCommandLine() + " termination " + wasTerminated);
- }
- } else {
- logNoReprint("assassin for non existing job termination " + wasTerminated);
- }
- }
- }
-
- /**
- * artefacts what are left by finished process
- */
- public static class ProcessResult {
-
- public final String stdout;
- public final String notFilteredStdout;
- public final String stderr;
- public final Process process;
- public final Integer returnValue;
- public final boolean wasTerminated;
- /*
- * possible exception which caused Process not to be launched
- */
- public final Throwable deadlyException;
-
- public ProcessResult(String stdout, String stderr, Process process, boolean wasTerminated, Integer r, Throwable deadlyException) {
- this.notFilteredStdout = stdout;
- if (stdout == null) {
- this.stdout = null;
- } else {
- this.stdout = stdout.replaceAll("EMMA:.*\n?", "");
- }
- this.stderr = stderr;
- this.process = process;
- this.wasTerminated = wasTerminated;
- this.returnValue = r;
- this.deadlyException = deadlyException;
- }
- }
-
- /**
- * Class to read content of stdout/stderr of process, and to cooperate with its running/terminated/finished statuses.
- */
- private static class ContentReader implements Runnable {
-
- StringBuilder sb = new StringBuilder();
- private final InputStream is;
- private boolean done;
- ContentReaderListener listener;
-
- public String getContent() {
- return sb.toString();
- }
-
- public ContentReader(InputStream is) throws IOException {
- this.is = is;
- }
- public ContentReader(InputStream is,ContentReaderListener l) throws IOException {
- this.is = is;
- this.listener=l;
- }
-
- public void setListener(ContentReaderListener listener) {
- this.listener = listener;
- }
-
- public ContentReaderListener getListener() {
- return listener;
- }
-
-
- /**
- * Blocks until the copy is complete, or until the thread is interrupted
- */
- public synchronized void waitUntilDone() throws InterruptedException {
- boolean interrupted = false;
-
- // poll interrupted flag, while waiting for copy to complete
- while (!(interrupted = Thread.interrupted()) && !done) {
- wait(1000);
- }
-
- if (interrupted) {
- logNoReprint("Stream copier: throwing InterruptedException");
- //throw new InterruptedException();
- }
- }
-
- @Override
- public void run() {
- try {
- Reader br = new InputStreamReader(is, "UTF-8");
- StringBuilder line = new StringBuilder();
- while (true) {
- int s = br.read();
- if (s < 0) {
- if (line.length() > 0 && listener != null) {
- listener.lineReaded(line.toString());
- }
- break;
- }
- char ch = ((char) s);
- sb.append(ch);
- line.append(ch);
- if (ch == '\n') {
- if (listener != null) {
- listener.lineReaded(line.toString());
- }
- line = new StringBuilder();
- }
- if (listener != null) {
- listener.charReaded(ch);
- }
-
- }
- //do not want to bother output with terminations
- //mostly compaling when assassin kill the process about StreamClosed
- } catch (Exception ex) {
- // logException(ex);
- } finally {
- try {
- is.close();
- } catch (Exception ex) {
- // ex.printStackTrace();
- } finally {
- done = true;
- }
- }
-
- }
- }
-}
diff --git a/tests/jnlp_tests/README b/tests/reproducers/README
index a582318..a582318 100644
--- a/tests/jnlp_tests/README
+++ b/tests/reproducers/README
diff --git a/tests/jnlp_tests/custom/AppletFolderInArchiveTag/resources/AppletFolderInArchiveTag.html b/tests/reproducers/custom/AppletFolderInArchiveTag/resources/AppletFolderInArchiveTag.html
index 88b8d99..88b8d99 100644
--- a/tests/jnlp_tests/custom/AppletFolderInArchiveTag/resources/AppletFolderInArchiveTag.html
+++ b/tests/reproducers/custom/AppletFolderInArchiveTag/resources/AppletFolderInArchiveTag.html
diff --git a/tests/jnlp_tests/custom/AppletFolderInArchiveTag/srcs/AppletFolderInArchiveTag.java b/tests/reproducers/custom/AppletFolderInArchiveTag/srcs/AppletFolderInArchiveTag.java
index 0440500..0440500 100644
--- a/tests/jnlp_tests/custom/AppletFolderInArchiveTag/srcs/AppletFolderInArchiveTag.java
+++ b/tests/reproducers/custom/AppletFolderInArchiveTag/srcs/AppletFolderInArchiveTag.java
diff --git a/tests/jnlp_tests/custom/AppletFolderInArchiveTag/srcs/Makefile b/tests/reproducers/custom/AppletFolderInArchiveTag/srcs/Makefile
index aa7f7fe..aa7f7fe 100644
--- a/tests/jnlp_tests/custom/AppletFolderInArchiveTag/srcs/Makefile
+++ b/tests/reproducers/custom/AppletFolderInArchiveTag/srcs/Makefile
diff --git a/tests/jnlp_tests/custom/AppletFolderInArchiveTag/testcases/AppletFolderInArchiveTagTests.java b/tests/reproducers/custom/AppletFolderInArchiveTag/testcases/AppletFolderInArchiveTagTests.java
index 63e8d7c..63e8d7c 100644
--- a/tests/jnlp_tests/custom/AppletFolderInArchiveTag/testcases/AppletFolderInArchiveTagTests.java
+++ b/tests/reproducers/custom/AppletFolderInArchiveTag/testcases/AppletFolderInArchiveTagTests.java
diff --git a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp b/tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp
index d75a83b..d75a83b 100644
--- a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp
+++ b/tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedJAVAXJNLP.jnlp
diff --git a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp b/tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp
index c6b066b..c6b066b 100644
--- a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp
+++ b/tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedNETSF.jnlp
diff --git a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp b/tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp
index b7d1ff5..b7d1ff5 100644
--- a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp
+++ b/tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSELF.jnlp
diff --git a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp b/tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp
index ae4a19e..ae4a19e 100644
--- a/tests/jnlp_tests/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp
+++ b/tests/reproducers/signed/AccessClassInPackageSigned/resources/AccessClassInPackageSignedSUNSEC.jnlp
diff --git a/tests/jnlp_tests/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java b/tests/reproducers/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java
index 63c681d..63c681d 100644
--- a/tests/jnlp_tests/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java
+++ b/tests/reproducers/signed/AccessClassInPackageSigned/srcs/AccessClassInPackageSigned.java
diff --git a/tests/jnlp_tests/signed/AppletTestSigned/resources/AppletTestSigned.html b/tests/reproducers/signed/AppletTestSigned/resources/AppletTestSigned.html
index 6c6ac48..6c6ac48 100644
--- a/tests/jnlp_tests/signed/AppletTestSigned/resources/AppletTestSigned.html
+++ b/tests/reproducers/signed/AppletTestSigned/resources/AppletTestSigned.html
diff --git a/tests/jnlp_tests/signed/AppletTestSigned/resources/AppletTestSigned.jnlp b/tests/reproducers/signed/AppletTestSigned/resources/AppletTestSigned.jnlp
index 2045818..2045818 100644
--- a/tests/jnlp_tests/signed/AppletTestSigned/resources/AppletTestSigned.jnlp
+++ b/tests/reproducers/signed/AppletTestSigned/resources/AppletTestSigned.jnlp
diff --git a/tests/jnlp_tests/signed/AppletTestSigned/srcs/AppletTestSigned.java b/tests/reproducers/signed/AppletTestSigned/srcs/AppletTestSigned.java
index 1d475a5..1d475a5 100644
--- a/tests/jnlp_tests/signed/AppletTestSigned/srcs/AppletTestSigned.java
+++ b/tests/reproducers/signed/AppletTestSigned/srcs/AppletTestSigned.java
diff --git a/tests/jnlp_tests/signed/AppletTestSigned/testcases/AppletTestSignedTests.java b/tests/reproducers/signed/AppletTestSigned/testcases/AppletTestSignedTests.java
index d3d87ba..d3d87ba 100644
--- a/tests/jnlp_tests/signed/AppletTestSigned/testcases/AppletTestSignedTests.java
+++ b/tests/reproducers/signed/AppletTestSigned/testcases/AppletTestSignedTests.java
diff --git a/tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer1.jnlp b/tests/reproducers/signed/CacheReproducer/resources/CacheReproducer1.jnlp
index 87bfde4..87bfde4 100644
--- a/tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer1.jnlp
+++ b/tests/reproducers/signed/CacheReproducer/resources/CacheReproducer1.jnlp
diff --git a/tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer1_1.jnlp b/tests/reproducers/signed/CacheReproducer/resources/CacheReproducer1_1.jnlp
index dba2a65..dba2a65 100644
--- a/tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer1_1.jnlp
+++ b/tests/reproducers/signed/CacheReproducer/resources/CacheReproducer1_1.jnlp
diff --git a/tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer2.jnlp b/tests/reproducers/signed/CacheReproducer/resources/CacheReproducer2.jnlp
index a588211..a588211 100644
--- a/tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer2.jnlp
+++ b/tests/reproducers/signed/CacheReproducer/resources/CacheReproducer2.jnlp
diff --git a/tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer2_1.jnlp b/tests/reproducers/signed/CacheReproducer/resources/CacheReproducer2_1.jnlp
index 97745a7..97745a7 100644
--- a/tests/jnlp_tests/signed/CacheReproducer/resources/CacheReproducer2_1.jnlp
+++ b/tests/reproducers/signed/CacheReproducer/resources/CacheReproducer2_1.jnlp
diff --git a/tests/jnlp_tests/signed/CacheReproducer/srcs/CacheReproducer.java b/tests/reproducers/signed/CacheReproducer/srcs/CacheReproducer.java
index e0813fa..e0813fa 100644
--- a/tests/jnlp_tests/signed/CacheReproducer/srcs/CacheReproducer.java
+++ b/tests/reproducers/signed/CacheReproducer/srcs/CacheReproducer.java
diff --git a/tests/jnlp_tests/signed/CacheReproducer/testcases/CacheReproducerTest.java b/tests/reproducers/signed/CacheReproducer/testcases/CacheReproducerTest.java
index a8a2859..a8a2859 100644
--- a/tests/jnlp_tests/signed/CacheReproducer/testcases/CacheReproducerTest.java
+++ b/tests/reproducers/signed/CacheReproducer/testcases/CacheReproducerTest.java
diff --git a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-hack.jnlp b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-hack.jnlp
index 44d9025..44d9025 100644
--- a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-hack.jnlp
+++ b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-hack.jnlp
diff --git a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-new.jnlp b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-new.jnlp
index 882461c..882461c 100644
--- a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-new.jnlp
+++ b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-applet-new.jnlp
diff --git a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.html b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.html
index 7373bbd..7373bbd 100644
--- a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.html
+++ b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.html
diff --git a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.jnlp b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.jnlp
index 911cc81..911cc81 100644
--- a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.jnlp
+++ b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-hack.jnlp
diff --git a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.html b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.html
index 4d0c401..4d0c401 100644
--- a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.html
+++ b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.html
diff --git a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.jnlp b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.jnlp
index 5a3050e..5a3050e 100644
--- a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.jnlp
+++ b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/resources/InternalClassloaderWithDownloadedResource-new.jnlp
diff --git a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/srcs/InternalClassloaderWithDownloadedResource.java b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/srcs/InternalClassloaderWithDownloadedResource.java
index 96cfcdf..96cfcdf 100644
--- a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/srcs/InternalClassloaderWithDownloadedResource.java
+++ b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/srcs/InternalClassloaderWithDownloadedResource.java
diff --git a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/testcases/InternalClassloaderWithDownloadedResourceTest.java b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/testcases/InternalClassloaderWithDownloadedResourceTest.java
index 54cb203..54cb203 100644
--- a/tests/jnlp_tests/signed/InternalClassloaderWithDownloadedResource/testcases/InternalClassloaderWithDownloadedResourceTest.java
+++ b/tests/reproducers/signed/InternalClassloaderWithDownloadedResource/testcases/InternalClassloaderWithDownloadedResourceTest.java
diff --git a/tests/jnlp_tests/signed/MissingJar/resources/MissingJar.jnlp b/tests/reproducers/signed/MissingJar/resources/MissingJar.jnlp
index ed761ca..ed761ca 100644
--- a/tests/jnlp_tests/signed/MissingJar/resources/MissingJar.jnlp
+++ b/tests/reproducers/signed/MissingJar/resources/MissingJar.jnlp
diff --git a/tests/jnlp_tests/signed/MissingJar/resources/MissingJar2.jnlp b/tests/reproducers/signed/MissingJar/resources/MissingJar2.jnlp
index 4a32d78..4a32d78 100644
--- a/tests/jnlp_tests/signed/MissingJar/resources/MissingJar2.jnlp
+++ b/tests/reproducers/signed/MissingJar/resources/MissingJar2.jnlp
diff --git a/tests/jnlp_tests/signed/MissingJar/resources/MissingJar3.jnlp b/tests/reproducers/signed/MissingJar/resources/MissingJar3.jnlp
index b2b6007..b2b6007 100644
--- a/tests/jnlp_tests/signed/MissingJar/resources/MissingJar3.jnlp
+++ b/tests/reproducers/signed/MissingJar/resources/MissingJar3.jnlp
diff --git a/tests/jnlp_tests/signed/MissingJar/resources/MissingJar4.jnlp b/tests/reproducers/signed/MissingJar/resources/MissingJar4.jnlp
index 60a53c0..60a53c0 100644
--- a/tests/jnlp_tests/signed/MissingJar/resources/MissingJar4.jnlp
+++ b/tests/reproducers/signed/MissingJar/resources/MissingJar4.jnlp
diff --git a/tests/jnlp_tests/signed/MissingJar/srcs/MissingJar.java b/tests/reproducers/signed/MissingJar/srcs/MissingJar.java
index a2b2794..a2b2794 100644
--- a/tests/jnlp_tests/signed/MissingJar/srcs/MissingJar.java
+++ b/tests/reproducers/signed/MissingJar/srcs/MissingJar.java
diff --git a/tests/jnlp_tests/signed/MissingJar/testcases/MissingJarTest.java b/tests/reproducers/signed/MissingJar/testcases/MissingJarTest.java
index dc8bb77..dc8bb77 100644
--- a/tests/jnlp_tests/signed/MissingJar/testcases/MissingJarTest.java
+++ b/tests/reproducers/signed/MissingJar/testcases/MissingJarTest.java
diff --git a/tests/jnlp_tests/signed/ReadPropertiesBySignedHack/resources/ReadPropertiesBySignedHack.jnlp b/tests/reproducers/signed/ReadPropertiesBySignedHack/resources/ReadPropertiesBySignedHack.jnlp
index f4e1223..f4e1223 100644
--- a/tests/jnlp_tests/signed/ReadPropertiesBySignedHack/resources/ReadPropertiesBySignedHack.jnlp
+++ b/tests/reproducers/signed/ReadPropertiesBySignedHack/resources/ReadPropertiesBySignedHack.jnlp
diff --git a/tests/jnlp_tests/signed/ReadPropertiesBySignedHack/srcs/ReadPropertiesBySignedHack.java b/tests/reproducers/signed/ReadPropertiesBySignedHack/srcs/ReadPropertiesBySignedHack.java
index cea64af..cea64af 100644
--- a/tests/jnlp_tests/signed/ReadPropertiesBySignedHack/srcs/ReadPropertiesBySignedHack.java
+++ b/tests/reproducers/signed/ReadPropertiesBySignedHack/srcs/ReadPropertiesBySignedHack.java
diff --git a/tests/jnlp_tests/signed/ReadPropertiesBySignedHack/testcases/ReadPropertiesBySignedHackTest.java b/tests/reproducers/signed/ReadPropertiesBySignedHack/testcases/ReadPropertiesBySignedHackTest.java
index 8f9455d..8f9455d 100644
--- a/tests/jnlp_tests/signed/ReadPropertiesBySignedHack/testcases/ReadPropertiesBySignedHackTest.java
+++ b/tests/reproducers/signed/ReadPropertiesBySignedHack/testcases/ReadPropertiesBySignedHackTest.java
diff --git a/tests/jnlp_tests/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned1.jnlp b/tests/reproducers/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned1.jnlp
index a1adab8..a1adab8 100644
--- a/tests/jnlp_tests/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned1.jnlp
+++ b/tests/reproducers/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned1.jnlp
diff --git a/tests/jnlp_tests/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned2.jnlp b/tests/reproducers/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned2.jnlp
index db338df..db338df 100644
--- a/tests/jnlp_tests/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned2.jnlp
+++ b/tests/reproducers/signed/ReadPropertiesSigned/resources/ReadPropertiesSigned2.jnlp
diff --git a/tests/jnlp_tests/signed/ReadPropertiesSigned/srcs/ReadPropertiesSigned.java b/tests/reproducers/signed/ReadPropertiesSigned/srcs/ReadPropertiesSigned.java
index 60f53cb..60f53cb 100644
--- a/tests/jnlp_tests/signed/ReadPropertiesSigned/srcs/ReadPropertiesSigned.java
+++ b/tests/reproducers/signed/ReadPropertiesSigned/srcs/ReadPropertiesSigned.java
diff --git a/tests/jnlp_tests/signed/ReadPropertiesSigned/testcases/ReadPropertiesSignedTest.java b/tests/reproducers/signed/ReadPropertiesSigned/testcases/ReadPropertiesSignedTest.java
index 6b389e3..6b389e3 100644
--- a/tests/jnlp_tests/signed/ReadPropertiesSigned/testcases/ReadPropertiesSignedTest.java
+++ b/tests/reproducers/signed/ReadPropertiesSigned/testcases/ReadPropertiesSignedTest.java
diff --git a/tests/jnlp_tests/signed/SignedJnlpApplication/resources/SignedJnlpApplication1.jnlp b/tests/reproducers/signed/SignedJnlpApplication/resources/SignedJnlpApplication1.jnlp
index 5285cd9..5285cd9 100644
--- a/tests/jnlp_tests/signed/SignedJnlpApplication/resources/SignedJnlpApplication1.jnlp
+++ b/tests/reproducers/signed/SignedJnlpApplication/resources/SignedJnlpApplication1.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpApplication/resources/SignedJnlpApplication2.jnlp b/tests/reproducers/signed/SignedJnlpApplication/resources/SignedJnlpApplication2.jnlp
index a86d0c2..a86d0c2 100644
--- a/tests/jnlp_tests/signed/SignedJnlpApplication/resources/SignedJnlpApplication2.jnlp
+++ b/tests/reproducers/signed/SignedJnlpApplication/resources/SignedJnlpApplication2.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpApplication/resources/SignedJnlpApplication3.jnlp b/tests/reproducers/signed/SignedJnlpApplication/resources/SignedJnlpApplication3.jnlp
index 0c7cc1f..0c7cc1f 100644
--- a/tests/jnlp_tests/signed/SignedJnlpApplication/resources/SignedJnlpApplication3.jnlp
+++ b/tests/reproducers/signed/SignedJnlpApplication/resources/SignedJnlpApplication3.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp b/tests/reproducers/signed/SignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp
index 5285cd9..5285cd9 100644
--- a/tests/jnlp_tests/signed/SignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp
+++ b/tests/reproducers/signed/SignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpApplication/srcs/SignedJnlpApplication.java b/tests/reproducers/signed/SignedJnlpApplication/srcs/SignedJnlpApplication.java
index 1f16697..1f16697 100644
--- a/tests/jnlp_tests/signed/SignedJnlpApplication/srcs/SignedJnlpApplication.java
+++ b/tests/reproducers/signed/SignedJnlpApplication/srcs/SignedJnlpApplication.java
diff --git a/tests/jnlp_tests/signed/SignedJnlpApplication/testcases/SignedJnlpApplicationTest.java b/tests/reproducers/signed/SignedJnlpApplication/testcases/SignedJnlpApplicationTest.java
index fb4e9ff..fb4e9ff 100644
--- a/tests/jnlp_tests/signed/SignedJnlpApplication/testcases/SignedJnlpApplicationTest.java
+++ b/tests/reproducers/signed/SignedJnlpApplication/testcases/SignedJnlpApplicationTest.java
diff --git a/tests/jnlp_tests/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne1.jnlp b/tests/reproducers/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne1.jnlp
index 3a5651e..3a5651e 100644
--- a/tests/jnlp_tests/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne1.jnlp
+++ b/tests/reproducers/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne1.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne2.jnlp b/tests/reproducers/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne2.jnlp
index 18c0943..18c0943 100644
--- a/tests/jnlp_tests/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne2.jnlp
+++ b/tests/reproducers/signed/SignedJnlpCaseTestOne/resources/SignedJnlpCaseTestOne2.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpCaseTestOne/srcs/JNLP-INF/aPpLiCaTioN.jnlp b/tests/reproducers/signed/SignedJnlpCaseTestOne/srcs/JNLP-INF/aPpLiCaTioN.jnlp
index 3a5651e..3a5651e 100644
--- a/tests/jnlp_tests/signed/SignedJnlpCaseTestOne/srcs/JNLP-INF/aPpLiCaTioN.jnlp
+++ b/tests/reproducers/signed/SignedJnlpCaseTestOne/srcs/JNLP-INF/aPpLiCaTioN.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpCaseTestOne/srcs/SignedJnlpCase.java b/tests/reproducers/signed/SignedJnlpCaseTestOne/srcs/SignedJnlpCase.java
index 993fe6d..993fe6d 100644
--- a/tests/jnlp_tests/signed/SignedJnlpCaseTestOne/srcs/SignedJnlpCase.java
+++ b/tests/reproducers/signed/SignedJnlpCaseTestOne/srcs/SignedJnlpCase.java
diff --git a/tests/jnlp_tests/signed/SignedJnlpCaseTestOne/testcases/SignedJnlpCaseOneTest.java b/tests/reproducers/signed/SignedJnlpCaseTestOne/testcases/SignedJnlpCaseOneTest.java
index d410790..d410790 100644
--- a/tests/jnlp_tests/signed/SignedJnlpCaseTestOne/testcases/SignedJnlpCaseOneTest.java
+++ b/tests/reproducers/signed/SignedJnlpCaseTestOne/testcases/SignedJnlpCaseOneTest.java
diff --git a/tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo1.jnlp b/tests/reproducers/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo1.jnlp
index 23fcacb..23fcacb 100644
--- a/tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo1.jnlp
+++ b/tests/reproducers/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo1.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo2.jnlp b/tests/reproducers/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo2.jnlp
index e97a126..e97a126 100644
--- a/tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo2.jnlp
+++ b/tests/reproducers/signed/SignedJnlpCaseTestTwo/resources/SignedJnlpCaseTestTwo2.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/srcs/JNLP-INF/aPpLiCaTiOn_tEmPlAte.jnlp b/tests/reproducers/signed/SignedJnlpCaseTestTwo/srcs/JNLP-INF/aPpLiCaTiOn_tEmPlAte.jnlp
index ed34ac9..ed34ac9 100644
--- a/tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/srcs/JNLP-INF/aPpLiCaTiOn_tEmPlAte.jnlp
+++ b/tests/reproducers/signed/SignedJnlpCaseTestTwo/srcs/JNLP-INF/aPpLiCaTiOn_tEmPlAte.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/srcs/SignedJnlpCase.java b/tests/reproducers/signed/SignedJnlpCaseTestTwo/srcs/SignedJnlpCase.java
index 993fe6d..993fe6d 100644
--- a/tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/srcs/SignedJnlpCase.java
+++ b/tests/reproducers/signed/SignedJnlpCaseTestTwo/srcs/SignedJnlpCase.java
diff --git a/tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/testcases/SignedJnlpCaseTwoTest.java b/tests/reproducers/signed/SignedJnlpCaseTestTwo/testcases/SignedJnlpCaseTwoTest.java
index 2869552..2869552 100644
--- a/tests/jnlp_tests/signed/SignedJnlpCaseTestTwo/testcases/SignedJnlpCaseTwoTest.java
+++ b/tests/reproducers/signed/SignedJnlpCaseTestTwo/testcases/SignedJnlpCaseTwoTest.java
diff --git a/tests/jnlp_tests/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate1.jnlp b/tests/reproducers/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate1.jnlp
index 782c465..782c465 100644
--- a/tests/jnlp_tests/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate1.jnlp
+++ b/tests/reproducers/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate1.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate2.jnlp b/tests/reproducers/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate2.jnlp
index d43f834..d43f834 100644
--- a/tests/jnlp_tests/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate2.jnlp
+++ b/tests/reproducers/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate2.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate3.jnlp b/tests/reproducers/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate3.jnlp
index c47a74d..c47a74d 100644
--- a/tests/jnlp_tests/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate3.jnlp
+++ b/tests/reproducers/signed/SignedJnlpTemplate/resources/SignedJnlpTemplate3.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp b/tests/reproducers/signed/SignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp
index 8936031..8936031 100644
--- a/tests/jnlp_tests/signed/SignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp
+++ b/tests/reproducers/signed/SignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp
diff --git a/tests/jnlp_tests/signed/SignedJnlpTemplate/srcs/SignedJnlpTemplate.java b/tests/reproducers/signed/SignedJnlpTemplate/srcs/SignedJnlpTemplate.java
index 9a94182..9a94182 100644
--- a/tests/jnlp_tests/signed/SignedJnlpTemplate/srcs/SignedJnlpTemplate.java
+++ b/tests/reproducers/signed/SignedJnlpTemplate/srcs/SignedJnlpTemplate.java
diff --git a/tests/jnlp_tests/signed/SignedJnlpTemplate/testcases/SignedJnlpTemplateTest.java b/tests/reproducers/signed/SignedJnlpTemplate/testcases/SignedJnlpTemplateTest.java
index 5f2dd78..5f2dd78 100644
--- a/tests/jnlp_tests/signed/SignedJnlpTemplate/testcases/SignedJnlpTemplateTest.java
+++ b/tests/reproducers/signed/SignedJnlpTemplate/testcases/SignedJnlpTemplateTest.java
diff --git a/tests/jnlp_tests/signed/SimpletestSigned1/resources/SimpletestSigned1.jnlp b/tests/reproducers/signed/SimpletestSigned1/resources/SimpletestSigned1.jnlp
index 177dcaa..177dcaa 100644
--- a/tests/jnlp_tests/signed/SimpletestSigned1/resources/SimpletestSigned1.jnlp
+++ b/tests/reproducers/signed/SimpletestSigned1/resources/SimpletestSigned1.jnlp
diff --git a/tests/jnlp_tests/signed/SimpletestSigned1/srcs/SimpletestSigned1.java b/tests/reproducers/signed/SimpletestSigned1/srcs/SimpletestSigned1.java
index b0a30a9..b0a30a9 100644
--- a/tests/jnlp_tests/signed/SimpletestSigned1/srcs/SimpletestSigned1.java
+++ b/tests/reproducers/signed/SimpletestSigned1/srcs/SimpletestSigned1.java
diff --git a/tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/NotOnly spaces can kill ěščřž too signed.jnlp b/tests/reproducers/signed/Spaces can be everywhere signed/resources/NotOnly spaces can kill ěščřž too signed.jnlp
index ba5cbc3..ba5cbc3 100644
--- a/tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/NotOnly spaces can kill ěščřž too signed.jnlp
+++ b/tests/reproducers/signed/Spaces can be everywhere signed/resources/NotOnly spaces can kill ěščřž too signed.jnlp
diff --git a/tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere1 signed.jnlp b/tests/reproducers/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere1 signed.jnlp
index e73043c..e73043c 100644
--- a/tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere1 signed.jnlp
+++ b/tests/reproducers/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere1 signed.jnlp
diff --git a/tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere2 signed.jnlp b/tests/reproducers/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere2 signed.jnlp
index 872fb8c..872fb8c 100644
--- a/tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere2 signed.jnlp
+++ b/tests/reproducers/signed/Spaces can be everywhere signed/resources/Spaces can be everywhere2 signed.jnlp
diff --git a/tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/SpacesCanBeEverywhere1signed.jnlp b/tests/reproducers/signed/Spaces can be everywhere signed/resources/SpacesCanBeEverywhere1signed.jnlp
index 801a62b..801a62b 100644
--- a/tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/SpacesCanBeEverywhere1signed.jnlp
+++ b/tests/reproducers/signed/Spaces can be everywhere signed/resources/SpacesCanBeEverywhere1signed.jnlp
diff --git a/tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/spaces applet Tests signed.html b/tests/reproducers/signed/Spaces can be everywhere signed/resources/spaces applet Tests signed.html
index 32e60b4..32e60b4 100644
--- a/tests/jnlp_tests/signed/Spaces can be everywhere signed/resources/spaces applet Tests signed.html
+++ b/tests/reproducers/signed/Spaces can be everywhere signed/resources/spaces applet Tests signed.html
diff --git a/tests/jnlp_tests/signed/Spaces can be everywhere signed/srcs/SpacesCanBeEverywhereSigned.java b/tests/reproducers/signed/Spaces can be everywhere signed/srcs/SpacesCanBeEverywhereSigned.java
index 25d28cf..25d28cf 100644
--- a/tests/jnlp_tests/signed/Spaces can be everywhere signed/srcs/SpacesCanBeEverywhereSigned.java
+++ b/tests/reproducers/signed/Spaces can be everywhere signed/srcs/SpacesCanBeEverywhereSigned.java
diff --git a/tests/jnlp_tests/signed/Spaces can be everywhere signed/testcases/SpacesCanBeEverywhereTestsSigned.java b/tests/reproducers/signed/Spaces can be everywhere signed/testcases/SpacesCanBeEverywhereTestsSigned.java
index f33b203..f33b203 100644
--- a/tests/jnlp_tests/signed/Spaces can be everywhere signed/testcases/SpacesCanBeEverywhereTestsSigned.java
+++ b/tests/reproducers/signed/Spaces can be everywhere signed/testcases/SpacesCanBeEverywhereTestsSigned.java
diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp b/tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp
index cea0a6c..cea0a6c 100644
--- a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp
+++ b/tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageJAVAXJNLP.jnlp
diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp b/tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp
index f8413e6..f8413e6 100644
--- a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp
+++ b/tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageNETSF.jnlp
diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp b/tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp
index 4af8c04..4af8c04 100644
--- a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp
+++ b/tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageSELF.jnlp
diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp b/tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp
index 8f3c06a..8f3c06a 100644
--- a/tests/jnlp_tests/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp
+++ b/tests/reproducers/simple/AccessClassInPackage/resources/AccessClassInPackageSUNSEC.jnlp
diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java b/tests/reproducers/simple/AccessClassInPackage/srcs/AccessClassInPackage.java
index 7164006..7164006 100644
--- a/tests/jnlp_tests/simple/AccessClassInPackage/srcs/AccessClassInPackage.java
+++ b/tests/reproducers/simple/AccessClassInPackage/srcs/AccessClassInPackage.java
diff --git a/tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java b/tests/reproducers/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java
index e9952ff..e9952ff 100644
--- a/tests/jnlp_tests/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java
+++ b/tests/reproducers/simple/AccessClassInPackage/testcases/AccessClassInPackageTest.java
diff --git a/tests/jnlp_tests/simple/AddShutdownHook/resources/AddShutdownHook.jnlp b/tests/reproducers/simple/AddShutdownHook/resources/AddShutdownHook.jnlp
index 42272ff..42272ff 100644
--- a/tests/jnlp_tests/simple/AddShutdownHook/resources/AddShutdownHook.jnlp
+++ b/tests/reproducers/simple/AddShutdownHook/resources/AddShutdownHook.jnlp
diff --git a/tests/jnlp_tests/simple/AddShutdownHook/srcs/AddShutdownHook.java b/tests/reproducers/simple/AddShutdownHook/srcs/AddShutdownHook.java
index 2b731eb..2b731eb 100644
--- a/tests/jnlp_tests/simple/AddShutdownHook/srcs/AddShutdownHook.java
+++ b/tests/reproducers/simple/AddShutdownHook/srcs/AddShutdownHook.java
diff --git a/tests/jnlp_tests/simple/AddShutdownHook/testcases/AddShutdownHookTest.java b/tests/reproducers/simple/AddShutdownHook/testcases/AddShutdownHookTest.java
index 165276a..165276a 100644
--- a/tests/jnlp_tests/simple/AddShutdownHook/testcases/AddShutdownHookTest.java
+++ b/tests/reproducers/simple/AddShutdownHook/testcases/AddShutdownHookTest.java
diff --git a/tests/jnlp_tests/simple/AllStackTraces/resources/AllStackTraces.jnlp b/tests/reproducers/simple/AllStackTraces/resources/AllStackTraces.jnlp
index be6b3f3..be6b3f3 100644
--- a/tests/jnlp_tests/simple/AllStackTraces/resources/AllStackTraces.jnlp
+++ b/tests/reproducers/simple/AllStackTraces/resources/AllStackTraces.jnlp
diff --git a/tests/jnlp_tests/simple/AllStackTraces/srcs/AllStackTraces.java b/tests/reproducers/simple/AllStackTraces/srcs/AllStackTraces.java
index f871b9c..f871b9c 100644
--- a/tests/jnlp_tests/simple/AllStackTraces/srcs/AllStackTraces.java
+++ b/tests/reproducers/simple/AllStackTraces/srcs/AllStackTraces.java
diff --git a/tests/jnlp_tests/simple/AllStackTraces/testcases/AllStackTracesTest.java b/tests/reproducers/simple/AllStackTraces/testcases/AllStackTracesTest.java
index 0372f4c..0372f4c 100644
--- a/tests/jnlp_tests/simple/AllStackTraces/testcases/AllStackTracesTest.java
+++ b/tests/reproducers/simple/AllStackTraces/testcases/AllStackTracesTest.java
diff --git a/tests/jnlp_tests/simple/AppletBaseURLTest/resources/AppletBaseURLTest.html b/tests/reproducers/simple/AppletBaseURLTest/resources/AppletBaseURLTest.html
index 9cc0fe1..9cc0fe1 100644
--- a/tests/jnlp_tests/simple/AppletBaseURLTest/resources/AppletBaseURLTest.html
+++ b/tests/reproducers/simple/AppletBaseURLTest/resources/AppletBaseURLTest.html
diff --git a/tests/jnlp_tests/simple/AppletBaseURLTest/resources/AppletBaseURLTest.jnlp b/tests/reproducers/simple/AppletBaseURLTest/resources/AppletBaseURLTest.jnlp
index 4902f25..4902f25 100644
--- a/tests/jnlp_tests/simple/AppletBaseURLTest/resources/AppletBaseURLTest.jnlp
+++ b/tests/reproducers/simple/AppletBaseURLTest/resources/AppletBaseURLTest.jnlp
diff --git a/tests/jnlp_tests/simple/AppletBaseURLTest/resources/AppletJNLPHrefBaseURLTest.html b/tests/reproducers/simple/AppletBaseURLTest/resources/AppletJNLPHrefBaseURLTest.html
index 752a767..752a767 100644
--- a/tests/jnlp_tests/simple/AppletBaseURLTest/resources/AppletJNLPHrefBaseURLTest.html
+++ b/tests/reproducers/simple/AppletBaseURLTest/resources/AppletJNLPHrefBaseURLTest.html
diff --git a/tests/jnlp_tests/simple/AppletBaseURLTest/srcs/AppletBaseURL.java b/tests/reproducers/simple/AppletBaseURLTest/srcs/AppletBaseURL.java
index 8234e3c..8234e3c 100644
--- a/tests/jnlp_tests/simple/AppletBaseURLTest/srcs/AppletBaseURL.java
+++ b/tests/reproducers/simple/AppletBaseURLTest/srcs/AppletBaseURL.java
diff --git a/tests/jnlp_tests/simple/AppletBaseURLTest/testcases/AppletBaseURLTest.java b/tests/reproducers/simple/AppletBaseURLTest/testcases/AppletBaseURLTest.java
index ec14cfa..ec14cfa 100644
--- a/tests/jnlp_tests/simple/AppletBaseURLTest/testcases/AppletBaseURLTest.java
+++ b/tests/reproducers/simple/AppletBaseURLTest/testcases/AppletBaseURLTest.java
diff --git a/tests/jnlp_tests/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.html b/tests/reproducers/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.html
index aed49b8..aed49b8 100644
--- a/tests/jnlp_tests/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.html
+++ b/tests/reproducers/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.html
diff --git a/tests/jnlp_tests/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.jnlp b/tests/reproducers/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.jnlp
index 6a2325d..6a2325d 100644
--- a/tests/jnlp_tests/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.jnlp
+++ b/tests/reproducers/simple/AppletReadsInvalidJar/resources/AppletReadsInvalidJar.jnlp
diff --git a/tests/jnlp_tests/simple/AppletReadsInvalidJar/resources/NOT_A_VALID_JAR.jar b/tests/reproducers/simple/AppletReadsInvalidJar/resources/NOT_A_VALID_JAR.jar
index e69de29..e69de29 100644
--- a/tests/jnlp_tests/simple/AppletReadsInvalidJar/resources/NOT_A_VALID_JAR.jar
+++ b/tests/reproducers/simple/AppletReadsInvalidJar/resources/NOT_A_VALID_JAR.jar
diff --git a/tests/jnlp_tests/simple/AppletReadsInvalidJar/srcs/Valid.java b/tests/reproducers/simple/AppletReadsInvalidJar/srcs/Valid.java
index 9b0bcd6..9b0bcd6 100644
--- a/tests/jnlp_tests/simple/AppletReadsInvalidJar/srcs/Valid.java
+++ b/tests/reproducers/simple/AppletReadsInvalidJar/srcs/Valid.java
diff --git a/tests/jnlp_tests/simple/AppletReadsInvalidJar/testcases/AppletReadsInvalidJarTests.java b/tests/reproducers/simple/AppletReadsInvalidJar/testcases/AppletReadsInvalidJarTests.java
index 11b0bb0..11b0bb0 100644
--- a/tests/jnlp_tests/simple/AppletReadsInvalidJar/testcases/AppletReadsInvalidJarTests.java
+++ b/tests/reproducers/simple/AppletReadsInvalidJar/testcases/AppletReadsInvalidJarTests.java
diff --git a/tests/jnlp_tests/simple/AppletTakesLastParam/resources/appletTakesLastParam.html b/tests/reproducers/simple/AppletTakesLastParam/resources/appletTakesLastParam.html
index fcd9454..fcd9454 100644
--- a/tests/jnlp_tests/simple/AppletTakesLastParam/resources/appletTakesLastParam.html
+++ b/tests/reproducers/simple/AppletTakesLastParam/resources/appletTakesLastParam.html
diff --git a/tests/jnlp_tests/simple/AppletTakesLastParam/resources/appletTakesLastParam.jnlp b/tests/reproducers/simple/AppletTakesLastParam/resources/appletTakesLastParam.jnlp
index 76ea69f..76ea69f 100644
--- a/tests/jnlp_tests/simple/AppletTakesLastParam/resources/appletTakesLastParam.jnlp
+++ b/tests/reproducers/simple/AppletTakesLastParam/resources/appletTakesLastParam.jnlp
diff --git a/tests/jnlp_tests/simple/AppletTakesLastParam/srcs/AppletTakesLastParam.java b/tests/reproducers/simple/AppletTakesLastParam/srcs/AppletTakesLastParam.java
index 9d2b44d..9d2b44d 100644
--- a/tests/jnlp_tests/simple/AppletTakesLastParam/srcs/AppletTakesLastParam.java
+++ b/tests/reproducers/simple/AppletTakesLastParam/srcs/AppletTakesLastParam.java
diff --git a/tests/jnlp_tests/simple/AppletTakesLastParam/testcases/AppletTakesLastParamTests.java b/tests/reproducers/simple/AppletTakesLastParam/testcases/AppletTakesLastParamTests.java
index 206f6de..206f6de 100644
--- a/tests/jnlp_tests/simple/AppletTakesLastParam/testcases/AppletTakesLastParamTests.java
+++ b/tests/reproducers/simple/AppletTakesLastParam/testcases/AppletTakesLastParamTests.java
diff --git a/tests/jnlp_tests/simple/AppletTest/resources/AppletTest.jnlp b/tests/reproducers/simple/AppletTest/resources/AppletTest.jnlp
index 1b27e8f..1b27e8f 100644
--- a/tests/jnlp_tests/simple/AppletTest/resources/AppletTest.jnlp
+++ b/tests/reproducers/simple/AppletTest/resources/AppletTest.jnlp
diff --git a/tests/jnlp_tests/simple/AppletTest/resources/appletAutoTests.html b/tests/reproducers/simple/AppletTest/resources/appletAutoTests.html
index a2613d9..a2613d9 100644
--- a/tests/jnlp_tests/simple/AppletTest/resources/appletAutoTests.html
+++ b/tests/reproducers/simple/AppletTest/resources/appletAutoTests.html
diff --git a/tests/jnlp_tests/simple/AppletTest/resources/appletAutoTests2.html b/tests/reproducers/simple/AppletTest/resources/appletAutoTests2.html
index a5c370c..a5c370c 100644
--- a/tests/jnlp_tests/simple/AppletTest/resources/appletAutoTests2.html
+++ b/tests/reproducers/simple/AppletTest/resources/appletAutoTests2.html
diff --git a/tests/jnlp_tests/simple/AppletTest/resources/appletViewTest.html b/tests/reproducers/simple/AppletTest/resources/appletViewTest.html
index 0b489c8..0b489c8 100644
--- a/tests/jnlp_tests/simple/AppletTest/resources/appletViewTest.html
+++ b/tests/reproducers/simple/AppletTest/resources/appletViewTest.html
diff --git a/tests/jnlp_tests/simple/AppletTest/srcs/AppletTest.java b/tests/reproducers/simple/AppletTest/srcs/AppletTest.java
index bac629a..bac629a 100644
--- a/tests/jnlp_tests/simple/AppletTest/srcs/AppletTest.java
+++ b/tests/reproducers/simple/AppletTest/srcs/AppletTest.java
diff --git a/tests/jnlp_tests/simple/AppletTest/testcases/AppletTestTests.java b/tests/reproducers/simple/AppletTest/testcases/AppletTestTests.java
index 9fd662d..9fd662d 100644
--- a/tests/jnlp_tests/simple/AppletTest/testcases/AppletTestTests.java
+++ b/tests/reproducers/simple/AppletTest/testcases/AppletTestTests.java
diff --git a/tests/jnlp_tests/simple/CheckServices/resources/CheckPluginServices.html b/tests/reproducers/simple/CheckServices/resources/CheckPluginServices.html
index 0cdb0b7..0cdb0b7 100644
--- a/tests/jnlp_tests/simple/CheckServices/resources/CheckPluginServices.html
+++ b/tests/reproducers/simple/CheckServices/resources/CheckPluginServices.html
diff --git a/tests/jnlp_tests/simple/CheckServices/resources/CheckServices.jnlp b/tests/reproducers/simple/CheckServices/resources/CheckServices.jnlp
index 22419b5..22419b5 100644
--- a/tests/jnlp_tests/simple/CheckServices/resources/CheckServices.jnlp
+++ b/tests/reproducers/simple/CheckServices/resources/CheckServices.jnlp
diff --git a/tests/jnlp_tests/simple/CheckServices/srcs/CheckServices.java b/tests/reproducers/simple/CheckServices/srcs/CheckServices.java
index df5205a..df5205a 100644
--- a/tests/jnlp_tests/simple/CheckServices/srcs/CheckServices.java
+++ b/tests/reproducers/simple/CheckServices/srcs/CheckServices.java
diff --git a/tests/jnlp_tests/simple/CheckServices/testcases/CheckServicesTests.java b/tests/reproducers/simple/CheckServices/testcases/CheckServicesTests.java
index a36e394..a36e394 100644
--- a/tests/jnlp_tests/simple/CheckServices/testcases/CheckServicesTests.java
+++ b/tests/reproducers/simple/CheckServices/testcases/CheckServicesTests.java
diff --git a/tests/jnlp_tests/simple/CreateClassLoader/resources/CreateClassLoader.jnlp b/tests/reproducers/simple/CreateClassLoader/resources/CreateClassLoader.jnlp
index 6804bcd..6804bcd 100644
--- a/tests/jnlp_tests/simple/CreateClassLoader/resources/CreateClassLoader.jnlp
+++ b/tests/reproducers/simple/CreateClassLoader/resources/CreateClassLoader.jnlp
diff --git a/tests/jnlp_tests/simple/CreateClassLoader/srcs/CreateClassLoader.java b/tests/reproducers/simple/CreateClassLoader/srcs/CreateClassLoader.java
index e33299e..e33299e 100644
--- a/tests/jnlp_tests/simple/CreateClassLoader/srcs/CreateClassLoader.java
+++ b/tests/reproducers/simple/CreateClassLoader/srcs/CreateClassLoader.java
diff --git a/tests/jnlp_tests/simple/CreateClassLoader/testcases/CreateClassLoaderTest.java b/tests/reproducers/simple/CreateClassLoader/testcases/CreateClassLoaderTest.java
index 46b7300..46b7300 100644
--- a/tests/jnlp_tests/simple/CreateClassLoader/testcases/CreateClassLoaderTest.java
+++ b/tests/reproducers/simple/CreateClassLoader/testcases/CreateClassLoaderTest.java
diff --git a/tests/jnlp_tests/simple/InformationTitleVendorParser/resources/InformationParser.jnlp b/tests/reproducers/simple/InformationTitleVendorParser/resources/InformationParser.jnlp
index aabd685..aabd685 100644
--- a/tests/jnlp_tests/simple/InformationTitleVendorParser/resources/InformationParser.jnlp
+++ b/tests/reproducers/simple/InformationTitleVendorParser/resources/InformationParser.jnlp
diff --git a/tests/jnlp_tests/simple/InformationTitleVendorParser/resources/TitleParser.jnlp b/tests/reproducers/simple/InformationTitleVendorParser/resources/TitleParser.jnlp
index fad50cc..fad50cc 100644
--- a/tests/jnlp_tests/simple/InformationTitleVendorParser/resources/TitleParser.jnlp
+++ b/tests/reproducers/simple/InformationTitleVendorParser/resources/TitleParser.jnlp
diff --git a/tests/jnlp_tests/simple/InformationTitleVendorParser/resources/TitleVendorParser.jnlp b/tests/reproducers/simple/InformationTitleVendorParser/resources/TitleVendorParser.jnlp
index f3159b9..f3159b9 100644
--- a/tests/jnlp_tests/simple/InformationTitleVendorParser/resources/TitleVendorParser.jnlp
+++ b/tests/reproducers/simple/InformationTitleVendorParser/resources/TitleVendorParser.jnlp
diff --git a/tests/jnlp_tests/simple/InformationTitleVendorParser/resources/VendorParser.jnlp b/tests/reproducers/simple/InformationTitleVendorParser/resources/VendorParser.jnlp
index 5a76e1e..5a76e1e 100644
--- a/tests/jnlp_tests/simple/InformationTitleVendorParser/resources/VendorParser.jnlp
+++ b/tests/reproducers/simple/InformationTitleVendorParser/resources/VendorParser.jnlp
diff --git a/tests/jnlp_tests/simple/InformationTitleVendorParser/testcases/InformationTitleVendorParserTest.java b/tests/reproducers/simple/InformationTitleVendorParser/testcases/InformationTitleVendorParserTest.java
index b760441..b760441 100644
--- a/tests/jnlp_tests/simple/InformationTitleVendorParser/testcases/InformationTitleVendorParserTest.java
+++ b/tests/reproducers/simple/InformationTitleVendorParser/testcases/InformationTitleVendorParserTest.java
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1main2mainAppDesc.jnlp b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1main2mainAppDesc.jnlp
index 32e4fbb..32e4fbb 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1main2mainAppDesc.jnlp
+++ b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1main2mainAppDesc.jnlp
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1main2mainNoAppDesc.jnlp b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1main2mainNoAppDesc.jnlp
index 0e91484..0e91484 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1main2mainNoAppDesc.jnlp
+++ b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1main2mainNoAppDesc.jnlp
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1main2nothingNoAppDesc.jnlp b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1main2nothingNoAppDesc.jnlp
index ee8a3bf..ee8a3bf 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1main2nothingNoAppDesc.jnlp
+++ b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1main2nothingNoAppDesc.jnlp
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1mainHaveAppDesc.jnlp b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1mainHaveAppDesc.jnlp
index 5faf1e0..5faf1e0 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1mainHaveAppDesc.jnlp
+++ b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1mainHaveAppDesc.jnlp
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1mainNoAppDesc.jnlp b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1mainNoAppDesc.jnlp
index 1aaed4a..1aaed4a 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1mainNoAppDesc.jnlp
+++ b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1mainNoAppDesc.jnlp
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1noAppDesc.jnlp b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1noAppDesc.jnlp
index 4a6c7a9..4a6c7a9 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1noAppDesc.jnlp
+++ b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1noAppDesc.jnlp
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1noAppDescAtAll.jnlp b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1noAppDescAtAll.jnlp
index 54ed21a..54ed21a 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1noAppDescAtAll.jnlp
+++ b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1noAppDescAtAll.jnlp
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingAppDesc.jnlp b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingAppDesc.jnlp
index 2d60dcd..2d60dcd 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingAppDesc.jnlp
+++ b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingAppDesc.jnlp
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingNoAppDesc.jnlp b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingNoAppDesc.jnlp
index 476d34b..476d34b 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingNoAppDesc.jnlp
+++ b/tests/reproducers/simple/ManifestedJar1/resources/ManifestedJar-1nothing2nothingNoAppDesc.jnlp
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/srcs/META-INF/MANIFEST.MF b/tests/reproducers/simple/ManifestedJar1/srcs/META-INF/MANIFEST.MF
index badcd09..badcd09 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/srcs/META-INF/MANIFEST.MF
+++ b/tests/reproducers/simple/ManifestedJar1/srcs/META-INF/MANIFEST.MF
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/srcs/ManifestedJar1.java b/tests/reproducers/simple/ManifestedJar1/srcs/ManifestedJar1.java
index a7cfb9b..a7cfb9b 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/srcs/ManifestedJar1.java
+++ b/tests/reproducers/simple/ManifestedJar1/srcs/ManifestedJar1.java
diff --git a/tests/jnlp_tests/simple/ManifestedJar1/testcases/ManifestedJar1Test.java b/tests/reproducers/simple/ManifestedJar1/testcases/ManifestedJar1Test.java
index 47baa6f..47baa6f 100644
--- a/tests/jnlp_tests/simple/ManifestedJar1/testcases/ManifestedJar1Test.java
+++ b/tests/reproducers/simple/ManifestedJar1/testcases/ManifestedJar1Test.java
diff --git a/tests/jnlp_tests/simple/ManifestedJar2/srcs/META-INF/MANIFEST.MF b/tests/reproducers/simple/ManifestedJar2/srcs/META-INF/MANIFEST.MF
index d11e8a5..d11e8a5 100644
--- a/tests/jnlp_tests/simple/ManifestedJar2/srcs/META-INF/MANIFEST.MF
+++ b/tests/reproducers/simple/ManifestedJar2/srcs/META-INF/MANIFEST.MF
diff --git a/tests/jnlp_tests/simple/ManifestedJar2/srcs/ManifestedJar2.java b/tests/reproducers/simple/ManifestedJar2/srcs/ManifestedJar2.java
index 3682209..3682209 100644
--- a/tests/jnlp_tests/simple/ManifestedJar2/srcs/ManifestedJar2.java
+++ b/tests/reproducers/simple/ManifestedJar2/srcs/ManifestedJar2.java
diff --git a/tests/jnlp_tests/simple/ReadEnvironment/resources/ReadEnvironment.jnlp b/tests/reproducers/simple/ReadEnvironment/resources/ReadEnvironment.jnlp
index dd3bce4..dd3bce4 100644
--- a/tests/jnlp_tests/simple/ReadEnvironment/resources/ReadEnvironment.jnlp
+++ b/tests/reproducers/simple/ReadEnvironment/resources/ReadEnvironment.jnlp
diff --git a/tests/jnlp_tests/simple/ReadEnvironment/srcs/ReadEnvironment.java b/tests/reproducers/simple/ReadEnvironment/srcs/ReadEnvironment.java
index a426803..a426803 100644
--- a/tests/jnlp_tests/simple/ReadEnvironment/srcs/ReadEnvironment.java
+++ b/tests/reproducers/simple/ReadEnvironment/srcs/ReadEnvironment.java
diff --git a/tests/jnlp_tests/simple/ReadEnvironment/testcases/ReadEnvironmentTest.java b/tests/reproducers/simple/ReadEnvironment/testcases/ReadEnvironmentTest.java
index 5d82da4..5d82da4 100644
--- a/tests/jnlp_tests/simple/ReadEnvironment/testcases/ReadEnvironmentTest.java
+++ b/tests/reproducers/simple/ReadEnvironment/testcases/ReadEnvironmentTest.java
diff --git a/tests/jnlp_tests/simple/ReadProperties/resources/ReadProperties1.jnlp b/tests/reproducers/simple/ReadProperties/resources/ReadProperties1.jnlp
index 54873c2..54873c2 100644
--- a/tests/jnlp_tests/simple/ReadProperties/resources/ReadProperties1.jnlp
+++ b/tests/reproducers/simple/ReadProperties/resources/ReadProperties1.jnlp
diff --git a/tests/jnlp_tests/simple/ReadProperties/resources/ReadProperties2.jnlp b/tests/reproducers/simple/ReadProperties/resources/ReadProperties2.jnlp
index f4e5418..f4e5418 100644
--- a/tests/jnlp_tests/simple/ReadProperties/resources/ReadProperties2.jnlp
+++ b/tests/reproducers/simple/ReadProperties/resources/ReadProperties2.jnlp
diff --git a/tests/jnlp_tests/simple/ReadProperties/srcs/ReadProperties.java b/tests/reproducers/simple/ReadProperties/srcs/ReadProperties.java
index f031369..f031369 100644
--- a/tests/jnlp_tests/simple/ReadProperties/srcs/ReadProperties.java
+++ b/tests/reproducers/simple/ReadProperties/srcs/ReadProperties.java
diff --git a/tests/jnlp_tests/simple/ReadProperties/testcases/ReadPropertiesTest.java b/tests/reproducers/simple/ReadProperties/testcases/ReadPropertiesTest.java
index dfe9590..dfe9590 100644
--- a/tests/jnlp_tests/simple/ReadProperties/testcases/ReadPropertiesTest.java
+++ b/tests/reproducers/simple/ReadProperties/testcases/ReadPropertiesTest.java
diff --git a/tests/jnlp_tests/simple/RedirectStreams/resources/RedirectStreams.jnlp b/tests/reproducers/simple/RedirectStreams/resources/RedirectStreams.jnlp
index ca26613..ca26613 100644
--- a/tests/jnlp_tests/simple/RedirectStreams/resources/RedirectStreams.jnlp
+++ b/tests/reproducers/simple/RedirectStreams/resources/RedirectStreams.jnlp
diff --git a/tests/jnlp_tests/simple/RedirectStreams/srcs/RedirectStreams.java b/tests/reproducers/simple/RedirectStreams/srcs/RedirectStreams.java
index 2130168..2130168 100644
--- a/tests/jnlp_tests/simple/RedirectStreams/srcs/RedirectStreams.java
+++ b/tests/reproducers/simple/RedirectStreams/srcs/RedirectStreams.java
diff --git a/tests/jnlp_tests/simple/RedirectStreams/testcases/RedirectStreamsTest.java b/tests/reproducers/simple/RedirectStreams/testcases/RedirectStreamsTest.java
index 1d745c7..1d745c7 100644
--- a/tests/jnlp_tests/simple/RedirectStreams/testcases/RedirectStreamsTest.java
+++ b/tests/reproducers/simple/RedirectStreams/testcases/RedirectStreamsTest.java
diff --git a/tests/jnlp_tests/simple/ReplaceSecurityManager/resources/ReplaceSecurityManager.jnlp b/tests/reproducers/simple/ReplaceSecurityManager/resources/ReplaceSecurityManager.jnlp
index 4f153bf..4f153bf 100644
--- a/tests/jnlp_tests/simple/ReplaceSecurityManager/resources/ReplaceSecurityManager.jnlp
+++ b/tests/reproducers/simple/ReplaceSecurityManager/resources/ReplaceSecurityManager.jnlp
diff --git a/tests/jnlp_tests/simple/ReplaceSecurityManager/srcs/ReplaceSecurityManager.java b/tests/reproducers/simple/ReplaceSecurityManager/srcs/ReplaceSecurityManager.java
index e00cd5a..e00cd5a 100644
--- a/tests/jnlp_tests/simple/ReplaceSecurityManager/srcs/ReplaceSecurityManager.java
+++ b/tests/reproducers/simple/ReplaceSecurityManager/srcs/ReplaceSecurityManager.java
diff --git a/tests/jnlp_tests/simple/ReplaceSecurityManager/testcases/ReplaceSecurityManagerTest.java b/tests/reproducers/simple/ReplaceSecurityManager/testcases/ReplaceSecurityManagerTest.java
index 73bbd9d..73bbd9d 100644
--- a/tests/jnlp_tests/simple/ReplaceSecurityManager/testcases/ReplaceSecurityManagerTest.java
+++ b/tests/reproducers/simple/ReplaceSecurityManager/testcases/ReplaceSecurityManagerTest.java
diff --git a/tests/jnlp_tests/simple/SetContextClassLoader/resources/SetContextClassLoader.jnlp b/tests/reproducers/simple/SetContextClassLoader/resources/SetContextClassLoader.jnlp
index 996bb88..996bb88 100644
--- a/tests/jnlp_tests/simple/SetContextClassLoader/resources/SetContextClassLoader.jnlp
+++ b/tests/reproducers/simple/SetContextClassLoader/resources/SetContextClassLoader.jnlp
diff --git a/tests/jnlp_tests/simple/SetContextClassLoader/srcs/SetContextClassLoader.java b/tests/reproducers/simple/SetContextClassLoader/srcs/SetContextClassLoader.java
index 5c5b215..5c5b215 100644
--- a/tests/jnlp_tests/simple/SetContextClassLoader/srcs/SetContextClassLoader.java
+++ b/tests/reproducers/simple/SetContextClassLoader/srcs/SetContextClassLoader.java
diff --git a/tests/jnlp_tests/simple/SetContextClassLoader/testcases/SetContextClassLoaderTest.java b/tests/reproducers/simple/SetContextClassLoader/testcases/SetContextClassLoaderTest.java
index f45aedb..f45aedb 100644
--- a/tests/jnlp_tests/simple/SetContextClassLoader/testcases/SetContextClassLoaderTest.java
+++ b/tests/reproducers/simple/SetContextClassLoader/testcases/SetContextClassLoaderTest.java
diff --git a/tests/jnlp_tests/simple/Spaces can be everywhere/resources/NotOnly spaces can kill ěščřž too.jnlp b/tests/reproducers/simple/Spaces can be everywhere/resources/NotOnly spaces can kill ěščřž too.jnlp
index 9856676..9856676 100644
--- a/tests/jnlp_tests/simple/Spaces can be everywhere/resources/NotOnly spaces can kill ěščřž too.jnlp
+++ b/tests/reproducers/simple/Spaces can be everywhere/resources/NotOnly spaces can kill ěščřž too.jnlp
diff --git a/tests/jnlp_tests/simple/Spaces can be everywhere/resources/Spaces can be everywhere1.jnlp b/tests/reproducers/simple/Spaces can be everywhere/resources/Spaces can be everywhere1.jnlp
index 245b01d..245b01d 100644
--- a/tests/jnlp_tests/simple/Spaces can be everywhere/resources/Spaces can be everywhere1.jnlp
+++ b/tests/reproducers/simple/Spaces can be everywhere/resources/Spaces can be everywhere1.jnlp
diff --git a/tests/jnlp_tests/simple/Spaces can be everywhere/resources/Spaces can be everywhere2.jnlp b/tests/reproducers/simple/Spaces can be everywhere/resources/Spaces can be everywhere2.jnlp
index 274add7..274add7 100644
--- a/tests/jnlp_tests/simple/Spaces can be everywhere/resources/Spaces can be everywhere2.jnlp
+++ b/tests/reproducers/simple/Spaces can be everywhere/resources/Spaces can be everywhere2.jnlp
diff --git a/tests/jnlp_tests/simple/Spaces can be everywhere/resources/SpacesCanBeEverywhere1.jnlp b/tests/reproducers/simple/Spaces can be everywhere/resources/SpacesCanBeEverywhere1.jnlp
index 22b77b0..22b77b0 100644
--- a/tests/jnlp_tests/simple/Spaces can be everywhere/resources/SpacesCanBeEverywhere1.jnlp
+++ b/tests/reproducers/simple/Spaces can be everywhere/resources/SpacesCanBeEverywhere1.jnlp
diff --git a/tests/jnlp_tests/simple/Spaces can be everywhere/resources/spaces applet Tests.html b/tests/reproducers/simple/Spaces can be everywhere/resources/spaces applet Tests.html
index 74b7554..74b7554 100644
--- a/tests/jnlp_tests/simple/Spaces can be everywhere/resources/spaces applet Tests.html
+++ b/tests/reproducers/simple/Spaces can be everywhere/resources/spaces applet Tests.html
diff --git a/tests/jnlp_tests/simple/Spaces can be everywhere/srcs/SpacesCanBeEverywhere.java b/tests/reproducers/simple/Spaces can be everywhere/srcs/SpacesCanBeEverywhere.java
index e65544b..e65544b 100644
--- a/tests/jnlp_tests/simple/Spaces can be everywhere/srcs/SpacesCanBeEverywhere.java
+++ b/tests/reproducers/simple/Spaces can be everywhere/srcs/SpacesCanBeEverywhere.java
diff --git a/tests/jnlp_tests/simple/Spaces can be everywhere/testcases/SpacesCanBeEverywhereTests.java b/tests/reproducers/simple/Spaces can be everywhere/testcases/SpacesCanBeEverywhereTests.java
index cb2a98f..cb2a98f 100644
--- a/tests/jnlp_tests/simple/Spaces can be everywhere/testcases/SpacesCanBeEverywhereTests.java
+++ b/tests/reproducers/simple/Spaces can be everywhere/testcases/SpacesCanBeEverywhereTests.java
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication1.jnlp b/tests/reproducers/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication1.jnlp
index 979058d..979058d 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication1.jnlp
+++ b/tests/reproducers/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication1.jnlp
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication2.jnlp b/tests/reproducers/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication2.jnlp
index 84f7539..84f7539 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication2.jnlp
+++ b/tests/reproducers/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication2.jnlp
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication3.jnlp b/tests/reproducers/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication3.jnlp
index d5e6584..d5e6584 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication3.jnlp
+++ b/tests/reproducers/simple/UnsignedJnlpApplication/resources/UnsignedJnlpApplication3.jnlp
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp b/tests/reproducers/simple/UnsignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp
index e4a3722..e4a3722 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp
+++ b/tests/reproducers/simple/UnsignedJnlpApplication/srcs/JNLP-INF/APPLICATION.jnlp
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpApplication/srcs/UnsignedJnlpApplication.java b/tests/reproducers/simple/UnsignedJnlpApplication/srcs/UnsignedJnlpApplication.java
index f4afa4f..f4afa4f 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpApplication/srcs/UnsignedJnlpApplication.java
+++ b/tests/reproducers/simple/UnsignedJnlpApplication/srcs/UnsignedJnlpApplication.java
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpApplication/testcases/UnsignedJnlpApplicationTest.java b/tests/reproducers/simple/UnsignedJnlpApplication/testcases/UnsignedJnlpApplicationTest.java
index e48509d..e48509d 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpApplication/testcases/UnsignedJnlpApplicationTest.java
+++ b/tests/reproducers/simple/UnsignedJnlpApplication/testcases/UnsignedJnlpApplicationTest.java
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate1.jnlp b/tests/reproducers/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate1.jnlp
index 077c5dc..077c5dc 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate1.jnlp
+++ b/tests/reproducers/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate1.jnlp
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate2.jnlp b/tests/reproducers/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate2.jnlp
index f665a93..f665a93 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate2.jnlp
+++ b/tests/reproducers/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate2.jnlp
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate3.jnlp b/tests/reproducers/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate3.jnlp
index abbd085..abbd085 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate3.jnlp
+++ b/tests/reproducers/simple/UnsignedJnlpTemplate/resources/UnsignedJnlpTemplate3.jnlp
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp b/tests/reproducers/simple/UnsignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp
index 5a9dce0..5a9dce0 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp
+++ b/tests/reproducers/simple/UnsignedJnlpTemplate/srcs/JNLP-INF/APPLICATION_TEMPLATE.jnlp
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/srcs/UnsignedJnlpTemplate.java b/tests/reproducers/simple/UnsignedJnlpTemplate/srcs/UnsignedJnlpTemplate.java
index 3883c22..3883c22 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/srcs/UnsignedJnlpTemplate.java
+++ b/tests/reproducers/simple/UnsignedJnlpTemplate/srcs/UnsignedJnlpTemplate.java
diff --git a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/testcases/UnsignedJnlpTemplateTest.java b/tests/reproducers/simple/UnsignedJnlpTemplate/testcases/UnsignedJnlpTemplateTest.java
index b2aec62..b2aec62 100644
--- a/tests/jnlp_tests/simple/UnsignedJnlpTemplate/testcases/UnsignedJnlpTemplateTest.java
+++ b/tests/reproducers/simple/UnsignedJnlpTemplate/testcases/UnsignedJnlpTemplateTest.java
diff --git a/tests/jnlp_tests/simple/deadlocktest/resources/deadlocktest.jnlp b/tests/reproducers/simple/deadlocktest/resources/deadlocktest.jnlp
index f45c475..f45c475 100644
--- a/tests/jnlp_tests/simple/deadlocktest/resources/deadlocktest.jnlp
+++ b/tests/reproducers/simple/deadlocktest/resources/deadlocktest.jnlp
diff --git a/tests/jnlp_tests/simple/deadlocktest/resources/deadlocktest_1.jnlp b/tests/reproducers/simple/deadlocktest/resources/deadlocktest_1.jnlp
index bf7e82c..bf7e82c 100644
--- a/tests/jnlp_tests/simple/deadlocktest/resources/deadlocktest_1.jnlp
+++ b/tests/reproducers/simple/deadlocktest/resources/deadlocktest_1.jnlp
diff --git a/tests/jnlp_tests/simple/deadlocktest/srcs/DeadlockTest.java b/tests/reproducers/simple/deadlocktest/srcs/DeadlockTest.java
index 4d348b0..4d348b0 100644
--- a/tests/jnlp_tests/simple/deadlocktest/srcs/DeadlockTest.java
+++ b/tests/reproducers/simple/deadlocktest/srcs/DeadlockTest.java
diff --git a/tests/jnlp_tests/simple/deadlocktest/testcases/DeadLockTestTest.java b/tests/reproducers/simple/deadlocktest/testcases/DeadLockTestTest.java
index b2e0a48..b2e0a48 100644
--- a/tests/jnlp_tests/simple/deadlocktest/testcases/DeadLockTestTest.java
+++ b/tests/reproducers/simple/deadlocktest/testcases/DeadLockTestTest.java
diff --git a/tests/jnlp_tests/simple/simpletest1/resources/simpletest1.jnlp b/tests/reproducers/simple/simpletest1/resources/simpletest1.jnlp
index d7d0b85..d7d0b85 100644
--- a/tests/jnlp_tests/simple/simpletest1/resources/simpletest1.jnlp
+++ b/tests/reproducers/simple/simpletest1/resources/simpletest1.jnlp
diff --git a/tests/jnlp_tests/simple/simpletest1/resources/simpletestCustomSplash.jnlp b/tests/reproducers/simple/simpletest1/resources/simpletestCustomSplash.jnlp
index 66eb519..66eb519 100644
--- a/tests/jnlp_tests/simple/simpletest1/resources/simpletestCustomSplash.jnlp
+++ b/tests/reproducers/simple/simpletest1/resources/simpletestCustomSplash.jnlp
diff --git a/tests/jnlp_tests/simple/simpletest1/resources/simpletestMegaSlow.jnlp b/tests/reproducers/simple/simpletest1/resources/simpletestMegaSlow.jnlp
index 7e319d3..7e319d3 100644
--- a/tests/jnlp_tests/simple/simpletest1/resources/simpletestMegaSlow.jnlp
+++ b/tests/reproducers/simple/simpletest1/resources/simpletestMegaSlow.jnlp
diff --git a/tests/jnlp_tests/simple/simpletest1/resources/simpletestSlow.jnlp b/tests/reproducers/simple/simpletest1/resources/simpletestSlow.jnlp
index 905cf7c..905cf7c 100644
--- a/tests/jnlp_tests/simple/simpletest1/resources/simpletestSlow.jnlp
+++ b/tests/reproducers/simple/simpletest1/resources/simpletestSlow.jnlp
diff --git a/tests/jnlp_tests/simple/simpletest1/resources/simpletestSlowBrokenCustomSplash.jnlp b/tests/reproducers/simple/simpletest1/resources/simpletestSlowBrokenCustomSplash.jnlp
index 0b09c5b..0b09c5b 100644
--- a/tests/jnlp_tests/simple/simpletest1/resources/simpletestSlowBrokenCustomSplash.jnlp
+++ b/tests/reproducers/simple/simpletest1/resources/simpletestSlowBrokenCustomSplash.jnlp
diff --git a/tests/jnlp_tests/simple/simpletest1/resources/simpletestSlowSlowCustomSplash.jnlp b/tests/reproducers/simple/simpletest1/resources/simpletestSlowSlowCustomSplash.jnlp
index 99ad0b0..99ad0b0 100644
--- a/tests/jnlp_tests/simple/simpletest1/resources/simpletestSlowSlowCustomSplash.jnlp
+++ b/tests/reproducers/simple/simpletest1/resources/simpletestSlowSlowCustomSplash.jnlp
diff --git a/tests/jnlp_tests/simple/simpletest1/srcs/SimpleTest1.java b/tests/reproducers/simple/simpletest1/srcs/SimpleTest1.java
index 0957480..0957480 100644
--- a/tests/jnlp_tests/simple/simpletest1/srcs/SimpleTest1.java
+++ b/tests/reproducers/simple/simpletest1/srcs/SimpleTest1.java
diff --git a/tests/jnlp_tests/simple/simpletest1/testcases/SimpleTest1Test.java b/tests/reproducers/simple/simpletest1/testcases/SimpleTest1Test.java
index abc1592..abc1592 100644
--- a/tests/jnlp_tests/simple/simpletest1/testcases/SimpleTest1Test.java
+++ b/tests/reproducers/simple/simpletest1/testcases/SimpleTest1Test.java
diff --git a/tests/jnlp_tests/simple/simpletest2/resources/simpletest2.jnlp b/tests/reproducers/simple/simpletest2/resources/simpletest2.jnlp
index cc6e11a..cc6e11a 100644
--- a/tests/jnlp_tests/simple/simpletest2/resources/simpletest2.jnlp
+++ b/tests/reproducers/simple/simpletest2/resources/simpletest2.jnlp
diff --git a/tests/jnlp_tests/simple/simpletest2/srcs/SimpleTest2.java b/tests/reproducers/simple/simpletest2/srcs/SimpleTest2.java
index 9160c62..9160c62 100644
--- a/tests/jnlp_tests/simple/simpletest2/srcs/SimpleTest2.java
+++ b/tests/reproducers/simple/simpletest2/srcs/SimpleTest2.java
diff --git a/tests/jnlp_tests/simple/simpletest2/testcases/SimpleTest2Test.java b/tests/reproducers/simple/simpletest2/testcases/SimpleTest2Test.java
index 9a77da4..9a77da4 100644
--- a/tests/jnlp_tests/simple/simpletest2/testcases/SimpleTest2Test.java
+++ b/tests/reproducers/simple/simpletest2/testcases/SimpleTest2Test.java
diff --git a/tests/test-extensions-tests/net/sourceforge/jnlp/ResourcesTest.java b/tests/test-extensions-tests/net/sourceforge/jnlp/ResourcesTest.java
new file mode 100644
index 0000000..0116152
--- /dev/null
+++ b/tests/test-extensions-tests/net/sourceforge/jnlp/ResourcesTest.java
@@ -0,0 +1,379 @@
+/* ResourcesTest.java
+Copyright (C) 2011 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+package net.sourceforge.jnlp;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.List;
+import net.sourceforge.jnlp.browsertesting.Browser;
+import net.sourceforge.jnlp.browsertesting.BrowserFactory;
+import net.sourceforge.jnlp.browsertesting.BrowserTest;
+import net.sourceforge.jnlp.browsertesting.Browsers;
+import net.sourceforge.jnlp.annotations.NeedsDisplay;
+import net.sourceforge.jnlp.annotations.TestInBrowsers;
+import net.sourceforge.jnlp.browsertesting.browsers.LinuxBrowser;
+import net.sourceforge.jnlp.annotations.TestInBrowsers;
+import org.junit.Assert;
+
+import org.junit.Test;
+
+public class ResourcesTest extends BrowserTest{
+
+
+ @Test
+ @NeedsDisplay
+ public void testNonExisitngBrowserWillNotDeadlock() throws Exception {
+ server.setCurrentBrowser(Browsers.none);
+ ServerAccess.ProcessResult pr = server.executeBrowser("simpletest1.jnlp");
+ Assert.assertNull(pr.process);
+ Assert.assertEquals(pr.stderr, "");
+ Assert.assertEquals(pr.stdout, "");
+ Assert.assertTrue(pr.wasTerminated);
+ Assert.assertTrue(pr.returnValue < 0);
+ junit.framework.Assert.assertNotNull(pr.deadlyException);
+ }
+
+ @Test
+ public void testUnexistingProcessWillFailRecognizedly() throws Exception {
+ server.setCurrentBrowser(Browsers.none);
+ List<String> al=Arrays.asList(new String[] {"definietly_not_Existing_process"});
+ ServerAccess.ProcessResult pr = server.executeProcess(al);
+ Assert.assertNull(pr.process);
+ Assert.assertEquals(pr.stderr, "");
+ Assert.assertEquals(pr.stdout, "");
+ Assert.assertTrue(pr.wasTerminated);
+ Assert.assertTrue(pr.returnValue < 0);
+ junit.framework.Assert.assertNotNull(pr.deadlyException);
+ }
+
+ @Test
+ @TestInBrowsers(testIn=Browsers.none)
+ public void testNonExisitngBrowserWillNotCauseMess() throws Exception {
+ ServerAccess.ProcessResult pr = server.executeBrowser("simpletest1.jnlp");
+ Assert.assertNull(pr.process);
+ Assert.assertEquals(pr.stderr, "");
+ Assert.assertEquals(pr.stdout, "");
+ Assert.assertTrue(pr.wasTerminated);
+ Assert.assertTrue(pr.returnValue < 0);
+ junit.framework.Assert.assertNotNull(pr.deadlyException);
+ }
+
+ @Test
+ public void testBrowsers2() throws Exception {
+ List<Browser> a = BrowserFactory.getFactory().getAllBrowsers();
+ Assert.assertNotNull("returned browsers array must not be null", a);
+ Assert.assertTrue("at least one browser must be configured", a.size() > 0);
+ for (Browser b : a) {
+ testBrowser(b);
+ }
+
+ }
+
+ @Test
+ @TestInBrowsers(testIn = Browsers.all)
+ public void testBrowser3() throws Exception {
+ testBrowser(server.getCurrentBrowser());
+
+
+ }
+
+ @Test
+ public void testBrowsers1() throws Exception {
+ BrowserFactory bf = new BrowserFactory(null);
+ int expected = 0;
+ Assert.assertTrue("Created from null there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ bf = new BrowserFactory("");
+ expected = 0;
+ Assert.assertTrue("Created from empty there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ String s = "dsgrdg";
+ bf = new BrowserFactory(s);
+ expected = 0;
+ Assert.assertTrue("Created from nonsense " + s + " there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = "sgrg/jkik";
+ bf = new BrowserFactory(s);
+ expected = 0;
+ Assert.assertTrue("Created from nonsense " + s + " there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = Browsers.firefox + "/jkik";
+ bf = new BrowserFactory(s);
+ expected = 0;
+ Assert.assertTrue("Created from nonsense " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = "sgrg/jkik:sege";
+ bf = new BrowserFactory(s);
+ expected = 0;
+ Assert.assertTrue("Created from two nonsenses " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = Browsers.firefox.toExec() + ":" + Browsers.firefox;
+ bf = new BrowserFactory(s);
+ expected = 2;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = Browsers.firefox.toExec();
+ bf = new BrowserFactory(s);
+ expected = 1;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = "something/somewhere/" + Browsers.firefox.toExec();
+ bf = new BrowserFactory(s);
+ expected = 1;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = "something/somewhere/" + Browsers.firefox.toExec() + ":" + "something/somewhere/" + Browsers.opera.toExec();
+ bf = new BrowserFactory(s);
+ expected = 2;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = "something/somewhere/" + Browsers.firefox.toExec() + ":" + "something/somewhere/" + Browsers.opera.toExec() + ":" + Browsers.chromiumBrowser;
+ bf = new BrowserFactory(s);
+ expected = 3;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = Browsers.firefox.toExec() + ":" + "vfdgf" + ":" + Browsers.googleChrome.toExec();
+ bf = new BrowserFactory(s);
+ expected = 2;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = Browsers.firefox.toExec() + ":" + Browsers.chromiumBrowser + ":" + Browsers.googleChrome.toExec() + ":" + Browsers.opera;
+ bf = new BrowserFactory(s);
+ expected = 4;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+ testFullFactory(bf);
+
+ s = "fgfd/" + Browsers.firefox.toExec() + ":" + "/fgfd/" + Browsers.chromiumBrowser + ":" + "fgfd/dfsdf/" + Browsers.googleChrome.toExec() + ":" + "/g/fgfd/" + Browsers.opera;
+ bf = new BrowserFactory(s);
+ expected = 4;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+ testFullFactory(bf);
+
+ s = Browsers.firefox.toExec() + ":" + ":" + Browsers.googleChrome.toExec() + ":" + Browsers.opera;
+ bf = new BrowserFactory(s);
+ expected = 3;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = Browsers.firefox.toExec() + ":" + ":" + ":" + Browsers.opera;
+ bf = new BrowserFactory(s);
+ expected = 2;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = ":" + ":" + Browsers.googleChrome.toExec() + ":";
+ bf = new BrowserFactory(s);
+ expected = 1;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+ s = ":" + Browsers.firefox.toExec() + ":bfgbfg/fddf/" + Browsers.googleChrome.toExec() + ":";
+ bf = new BrowserFactory(s);
+ expected = 2;
+ Assert.assertTrue("Created from " + s + "there must be " + expected + " browsers in factory. Is" + bf.getAllBrowsers().size(), bf.getAllBrowsers().size() == expected);
+
+
+
+
+ }
+
+ @Test
+ public void testResourcesExists() throws Exception {
+ File[] simpleContent = server.getDir().listFiles(new FileFilter() {
+
+ public boolean accept(File file) {
+ if (!file.isDirectory()) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ });
+ Assert.assertNotNull(simpleContent);
+ Assert.assertTrue(simpleContent.length > 5);
+
+ for (int i = 0; i < simpleContent.length; i++) {
+ File file = simpleContent[i];
+ ServerAccess.logOutputReprint(file.getName());
+ //server port have in fact no usage in converting filename to uri-like-filename.
+ //But if there is null, instead if some number, then nullpointer exception is thrown (Integer->int).
+ //So I'm using "real" currently used port, instead of some random value.
+ URI u = new URI((String) null, (String) null, (String) null, server.getPort(), file.getName(), (String) null, null);
+ ServerAccess.logOutputReprint(" ("+u.toString()+")");
+ String fname = u.toString();
+ if (file.getName().toLowerCase().endsWith(".jnlp")) {
+ String c = server.getResourceAsString("/" + fname);
+ Assert.assertTrue(c.contains("<"));
+ Assert.assertTrue(c.contains(">"));
+ Assert.assertTrue(c.contains("jnlp"));
+ Assert.assertTrue(c.contains("resources"));
+ Assert.assertTrue(c.replaceAll("\\s*", "").contains("</jnlp>"));
+
+ } else {
+ byte[] c = server.getResourceAsBytes("/" + fname).toByteArray();
+ Assert.assertEquals(c.length, file.length());
+ }
+
+ }
+
+ }
+
+ @Test
+ @NeedsDisplay
+ @TestInBrowsers(testIn = Browsers.one)
+ public void testListeners() throws Exception {
+ final StringBuilder o1 = new StringBuilder();
+ final StringBuilder e1 = new StringBuilder();
+ final StringBuilder o2 = new StringBuilder();
+ final StringBuilder e2 = new StringBuilder();
+ final ContentReaderListener lo = new ContentReaderListener() {
+
+ @Override
+ public void charReaded(char ch) {
+ //ServerAccess.logOutputReprint("OO recieved char: "+ch);
+ o1.append(ch);
+ }
+
+ @Override
+ public void lineReaded(String s) {
+ //ServerAccess.logOutputReprint("OO recieved line: "+s);
+ o2.append(s).append("\n");
+ }
+ };
+ ContentReaderListener le = new ContentReaderListener() {
+
+ @Override
+ public void charReaded(char ch) {
+ //ServerAccess.logOutputReprint("EE recieved char: "+ch);
+ e1.append(ch);
+ }
+
+ @Override
+ public void lineReaded(String s) {
+ //ServerAccess.logOutputReprint("EE recieved line: "+s);
+ e2.append(s).append("\n");
+ }
+ };
+ ServerAccess.ProcessResult pr=server.executeBrowser("simpletest1.jnlp",le,lo);
+ server.setCurrentBrowser(BrowserFactory.getFactory().getFirst().getID());
+ Assert.assertNotNull(server.getCurrentBrowsers());
+ Assert.assertNotNull(server.getCurrentBrowser());
+// ServerAccess.logOutputReprint("total o");
+// ServerAccess.logOutputReprint(pr.stdout);
+// ServerAccess.logOutputReprint("total e");
+// ServerAccess.logOutputReprint(pr.stderr);
+ Assert.assertEquals(pr.stdout, o1.toString());
+ Assert.assertEquals(pr.stderr, e1.toString());
+ //the last \n is mandatory as las tline is flushed also when proces dies
+ Assert.assertEquals(pr.stdout.replace("\n", ""), o2.toString().replace("\n", ""));
+ Assert.assertEquals(pr.stderr.replace("\n", ""), e2.toString().replace("\n", ""));
+
+ }
+
+ private void testFullFactory(BrowserFactory bf) {
+ Assert.assertEquals(bf.getBrowser(Browsers.chromiumBrowser).getID(), Browsers.chromiumBrowser);
+ Assert.assertEquals(bf.getBrowser(Browsers.googleChrome).getID(), Browsers.googleChrome);
+ Assert.assertEquals(bf.getBrowser(Browsers.firefox).getID(), Browsers.firefox);
+ Assert.assertEquals(bf.getBrowser(Browsers.opera).getID(), Browsers.opera);
+ }
+
+ private void testBrowser(Browser browser) throws IOException {
+ File f1 = null;
+ if (browser.getDefaultPluginExpectedLocation() != null) {
+ f1 = new File(browser.getDefaultPluginExpectedLocation());
+ }
+ File f2 = null;
+ if (browser.getUserDefaultPluginExpectedLocation() != null) {
+ f2 = new File(browser.getUserDefaultPluginExpectedLocation());
+ }
+ if (f1 != null) {
+ Assert.assertTrue("browser's plugins location should exist " + f1.toString() + " for " + browser.getID().toString(), f1.exists());
+ }
+ if (f2 != null) {
+ Assert.assertTrue("browser's users-plugins location should exist " + f2.toString() + " for " + browser.getID().toString(), f2.exists());
+ }
+
+ File[] ff1 = new File[0];
+ if (f1 != null) {
+ ff1 = f1.listFiles();
+ }
+
+ File[] ff2 = new File[0];
+ if (f2 != null) {
+ ff2 = f2.listFiles();
+ }
+
+ Assert.assertTrue("at least one of browser's plugins directory should contains at least one file didn't. For " + browser.getID().toString(), ff1.length + ff2.length > 0);
+
+ ff1 = new File[0];
+ if (f1 != null) {
+ ff1 = f1.listFiles(new FileFilter() {
+
+ @Override
+ public boolean accept(File pathname) {
+ return (pathname.getName().equals(LinuxBrowser.DEFAULT_PLUGIN_NAME));
+ }
+ });
+ }
+
+ ff2 = new File[0];
+ if (f2 != null) {
+ ff2 = f2.listFiles(new FileFilter() {
+
+ @Override
+ public boolean accept(File pathname) {
+ return (pathname.getName().equals(LinuxBrowser.DEFAULT_PLUGIN_NAME));
+ }
+ });
+ }
+
+ Assert.assertTrue("browser's plugins directories should contains exactly one " + LinuxBrowser.DEFAULT_PLUGIN_NAME + ", but didnt for " + browser.getID().toString(),
+ ff1.length + ff2.length == 1);
+ String currentPath = server.getJavawsFile().getParentFile().getParentFile().getAbsolutePath();
+
+ File[] ff;
+ if (ff1.length == 1) {
+ ff = ff1;
+ } else {
+ ff = ff2;
+ }
+ String s = ServerAccess.getContentOfStream(new FileInputStream(ff[0]), "ASCII");
+ Assert.assertTrue("browser's plugins shoud points to" + currentPath + ", but didnt",
+ s.contains(s));
+ }
+}
diff --git a/tests/test-extensions-tests/net/sourceforge/jnlp/ServerAccessTest.java b/tests/test-extensions-tests/net/sourceforge/jnlp/ServerAccessTest.java
new file mode 100644
index 0000000..25415be
--- /dev/null
+++ b/tests/test-extensions-tests/net/sourceforge/jnlp/ServerAccessTest.java
@@ -0,0 +1,233 @@
+/* ServerAccessTest.java
+Copyright (C) 2011 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+package net.sourceforge.jnlp;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.net.URL;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ *
+ * This class provides access to virtual server and stuff around.
+ * It can find unoccupied port, start server, provides its singleton instantiation, lunch parallel instantiations,
+ * read location of installed (tested javaws) see javaws.build.bin java property,
+ * location of server www root on file system (see test.server.dir java property),
+ * stubs for lunching javaws and for locating resources and read resources.
+ *
+ * It can also execute processes with timeout (@see PROCESS_TIMEOUT) (used during lunching javaws)
+ * Some protected apis are exported because public classes in this package are put to be tested by makefile.
+ *
+ * There are included test cases which show some basic usages.
+ *
+ *
+ */
+public class ServerAccessTest {
+
+ ServerAccess serverAccess = new ServerAccess();
+
+ @Test
+ public void testsProcessResultFiltering() throws Exception {
+ ProcessResult pn = new ProcessResult(null, null, null, true, 0, null);
+ Assert.assertNull(pn.notFilteredStdout);
+ Assert.assertNull(pn.stdout);
+ Assert.assertNull(pn.stderr);
+ String fakeOut2 =
+ "EMMA: processing instrumentation path ...\n"
+ + "EMMA: package [net.sourceforge.filebrowser] contains classes [ArrayOfString] without full debug info\n"
+ + "EMMA: instrumentation path processed in 1407 ms\n"
+ + "test stage 1\n"
+ + "test stage 2\n"
+ + "EMMA: The intruder!\n"
+ + "test stage 3\n"
+ + "EMMA: [45 class(es) instrumented, 13 resource(s) copied]\n"
+ + "EMMA: metadata merged into [icedtea-web/inc] {in 105 ms}\n"
+ + "EMMA: processing instrumentation path ...";
+ String filteredOut2 =
+ "test stage 1\n"
+ + "test stage 2\n"
+ + "test stage 3\n";
+ ProcessResult p2 = new ProcessResult(fakeOut2, fakeOut2, null, true, 0, null);
+ Assert.assertEquals(p2.notFilteredStdout, fakeOut2);
+ Assert.assertEquals(p2.stdout, filteredOut2);
+ Assert.assertEquals(p2.stderr, fakeOut2);
+ fakeOut2 += "\n";
+ p2 = new ProcessResult(fakeOut2, fakeOut2, null, true, 0, null);
+ Assert.assertEquals(p2.notFilteredStdout, fakeOut2);
+ Assert.assertEquals(p2.stdout, filteredOut2);
+ Assert.assertEquals(p2.stderr, fakeOut2);
+ String fakeOut =
+ "test string\n"
+ + "EMMA: processing instrumentation path ...\n"
+ + "EMMA: package [net.sourceforge.filebrowser] contains classes [ArrayOfString] without full debug info\n"
+ + "EMMA: instrumentation path processed in 1407 ms\n"
+ + "test stage 1\n"
+ + "test stage 2\n"
+ + "test stage 3\n"
+ + "EMMA: [45 class(es) instrumented, 13 resource(s) copied]\n"
+ + "EMMA: metadata merged into [icedtea-web/inc] {in 105 ms}\n"
+ + "EMMA: processing instrumentation path ...\n"
+ + "test ends";
+ String filteredOut =
+ "test string\n"
+ + "test stage 1\n"
+ + "test stage 2\n"
+ + "test stage 3\n"
+ + "test ends";
+ ProcessResult p = new ProcessResult(fakeOut, fakeOut, null, true, 0, null);
+ Assert.assertEquals(p.notFilteredStdout, fakeOut);
+ Assert.assertEquals(p.stdout, filteredOut);
+ Assert.assertEquals(p.stderr, fakeOut);
+ fakeOut += "\n";
+ filteredOut += "\n";
+ p = new ProcessResult(fakeOut, fakeOut, null, true, 0, null);
+ Assert.assertEquals(p.notFilteredStdout, fakeOut);
+ Assert.assertEquals(p.stdout, filteredOut);
+ Assert.assertEquals(p.stderr, fakeOut);
+ }
+
+ @Test
+ public void ensureJavaws() throws Exception {
+ String javawsValue = serverAccess.getJavawsLocation();
+ Assert.assertNotNull(javawsValue);
+ Assert.assertTrue(javawsValue.trim().length() > 2);
+ File javawsFile = serverAccess.getJavawsFile();
+ Assert.assertTrue(javawsFile.exists());
+ Assert.assertFalse(javawsFile.isDirectory());
+ }
+
+ @Test
+ public void ensureServer() throws Exception {
+ ServerLauncher server = ServerAccess.getInstance();
+ Assert.assertNotNull(server.getPort());
+ Assert.assertNotNull(server.getDir());
+ Assert.assertTrue(server.getPort() > 999);
+ Assert.assertTrue(server.getDir().toString().trim().length() > 2);
+
+ Assert.assertTrue(server.getDir().exists());
+ Assert.assertTrue(server.getDir().isDirectory());
+
+ File portFile = new File(server.getDir(), "server.port");
+ File dirFile = new File(server.getDir(), "server.dir");
+
+ ServerAccess.saveFile(server.getDir().getAbsolutePath(), dirFile);
+ ServerAccess.saveFile(server.getPort().toString(), portFile);
+ ServerAccess.saveFile(server.getPort().toString(), portFile);
+
+ Assert.assertTrue(portFile.exists());
+ Assert.assertTrue(dirFile.exists());
+ Assert.assertTrue(server.getDir().listFiles().length > 1);
+
+ String portFileContent = ServerAccess.getContentOfStream(new FileInputStream(portFile));
+ String dirFileContent = ServerAccess.getContentOfStream(new FileInputStream(dirFile));
+
+ URL portUrl = new URL("http", "localhost", server.getPort(), "/server.port");
+ URL dirUrl = new URL("http", "localhost", server.getPort(), "/server.dir");
+
+ String portUrlContent = ServerAccess.getContentOfStream(portUrl.openConnection().getInputStream());
+ String dirUrlContent = ServerAccess.getContentOfStream(dirUrl.openConnection().getInputStream());
+
+ Assert.assertEquals(portUrlContent.trim(), portFileContent.trim());
+ Assert.assertEquals(dirUrlContent.trim(), dirFileContent.trim());
+ Assert.assertEquals(new File(dirUrlContent.trim()), server.getDir());
+ Assert.assertEquals(new Integer(portUrlContent.trim()), server.getPort());
+
+ URL fastUrl = new URL("http", "localhost", server.getPort(), "/simpletest1.jnlp");
+ URL slowUrl = new URL("http", "localhost", server.getPort(), "/XslowXsimpletest1.jnlp");
+
+ String fastUrlcontent = ServerAccess.getContentOfStream(fastUrl.openConnection().getInputStream());
+ String slowUrlContent = ServerAccess.getContentOfStream(slowUrl.openConnection().getInputStream());
+ Assert.assertEquals(fastUrlcontent, slowUrlContent);
+
+ }
+
+ @Test
+ public void splitArrayTest0() throws Exception {
+ byte[] b = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
+ byte[][] bb = TinyHttpdImpl.splitArray(b, 3);
+ //printArrays(bb);
+ byte[] b1 = {1, 2, 3, 4, 5};
+ byte[] b2 = {6, 7, 8, 9, 10};
+ byte[] b3 = {11, 12, 13, 14};
+ Assert.assertEquals(3, bb.length);
+ Assert.assertArrayEquals(b1, bb[0]);
+ Assert.assertArrayEquals(b2, bb[1]);
+ Assert.assertArrayEquals(b3, bb[2]);
+ }
+
+ @Test
+ public void splitArrayTest1() throws Exception {
+ byte[] b = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
+ byte[][] bb = TinyHttpdImpl.splitArray(b, 3);
+ //printArrays(bb);
+ byte[] b1 = {1, 2, 3, 4, 5};
+ byte[] b2 = {6, 7, 8, 9, 10};
+ byte[] b3 = {11, 12, 13};
+ Assert.assertEquals(3, bb.length);
+ Assert.assertArrayEquals(b1, bb[0]);
+ Assert.assertArrayEquals(b2, bb[1]);
+ Assert.assertArrayEquals(b3, bb[2]);
+ }
+
+ @Test
+ public void splitArrayTest2() throws Exception {
+ byte[] b = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
+ byte[][] bb = TinyHttpdImpl.splitArray(b, 3);
+ //printArrays(bb);
+ byte[] b1 = {1, 2, 3, 4};
+ byte[] b2 = {5, 6, 7, 8};
+ byte[] b3 = {9, 10, 11, 12};
+ Assert.assertEquals(3, bb.length);
+ Assert.assertArrayEquals(b1, bb[0]);
+ Assert.assertArrayEquals(b2, bb[1]);
+ Assert.assertArrayEquals(b3, bb[2]);
+ }
+
+ private void printArrays(byte[][] bb) {
+ System.out.println("[][] l=" + bb.length);
+ for (int i = 0; i < bb.length; i++) {
+ byte[] bs = bb[i];
+ System.out.println(i + ": l=" + bs.length);
+ for (int j = 0; j < bs.length; j++) {
+ byte c = bs[j];
+ System.out.print(" " + j + ":" + c + " ");
+ }
+ System.out.println("");
+ }
+ }
+}
diff --git a/tests/test-extensions/net/sourceforge/jnlp/ContentReader.java b/tests/test-extensions/net/sourceforge/jnlp/ContentReader.java
new file mode 100644
index 0000000..464b778
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/ContentReader.java
@@ -0,0 +1,133 @@
+/* ContentReader.java
+Copyright (C) 2011,2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+package net.sourceforge.jnlp;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+/**
+ * Class to read content of stdout/stderr of process, and to cooperate with its running/terminated/finished statuses.
+ */
+class ContentReader implements Runnable {
+
+ StringBuilder sb = new StringBuilder();
+ private final InputStream is;
+ private boolean done;
+ ContentReaderListener listener;
+
+ public String getContent() {
+ return sb.toString();
+ }
+
+ public ContentReader(InputStream is) throws IOException {
+ this.is = is;
+ }
+
+ public ContentReader(InputStream is, ContentReaderListener l) throws IOException {
+ this.is = is;
+ this.listener = l;
+ }
+
+ public void setListener(ContentReaderListener listener) {
+ this.listener = listener;
+ }
+
+ public ContentReaderListener getListener() {
+ return listener;
+ }
+
+ /**
+ * Blocks until the copy is complete, or until the thread is interrupted
+ */
+ public synchronized void waitUntilDone() throws InterruptedException {
+ boolean interrupted = false;
+ // poll interrupted flag, while waiting for copy to complete
+ while (!(interrupted = Thread.interrupted()) && !done) {
+ wait(1000);
+ }
+ if (interrupted) {
+ ServerAccess.logNoReprint("Stream copier: throwing InterruptedException");
+ //throw new InterruptedException();
+ }
+ }
+
+ @Override
+ public void run() {
+ try {
+ Reader br = new InputStreamReader(is, "UTF-8");
+ StringBuilder line = new StringBuilder();
+ while (true) {
+ int s = br.read();
+ if (s < 0) {
+ if (line.length() > 0 && listener != null) {
+ listener.lineReaded(line.toString());
+ }
+ break;
+ }
+ char ch = (char) s;
+ sb.append(ch);
+ line.append(ch);
+ if (ch == '\n') {
+ if (listener != null) {
+ listener.lineReaded(line.toString());
+ }
+ line = new StringBuilder();
+ }
+ if (listener != null) {
+ listener.charReaded(ch);
+ }
+ }
+ //do not want to bother output with terminations
+ //mostly compaling when assassin kill the process about StreamClosed
+ //do not want to bother output with terminations
+ //mostly compaling when assassin kill the process about StreamClosed
+ } catch (Exception ex) {
+ // logException(ex);
+ } finally {
+ try {
+ is.close();
+ } catch (Exception ex) {
+ // ex.printStackTrace();
+ } finally {
+ done = true;
+ }
+ }
+ }
+}
diff --git a/tests/test-extensions/net/sourceforge/jnlp/ContentReaderListener.java b/tests/test-extensions/net/sourceforge/jnlp/ContentReaderListener.java
new file mode 100644
index 0000000..4427d84
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/ContentReaderListener.java
@@ -0,0 +1,45 @@
+/* ContentReaderListener.java
+Copyright (C) 2011,2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+package net.sourceforge.jnlp;
+
+public interface ContentReaderListener {
+
+ public void charReaded(char ch);
+ public void lineReaded(String s);
+
+}
diff --git a/tests/test-extensions/net/sourceforge/jnlp/LogItem.java b/tests/test-extensions/net/sourceforge/jnlp/LogItem.java
new file mode 100644
index 0000000..dd99c04
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/LogItem.java
@@ -0,0 +1,71 @@
+/* LogItem.java
+Copyright (C) 2011,2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+package net.sourceforge.jnlp;
+
+import java.util.Date;
+
+class LogItem {
+
+ public final Date timeStamp = new Date();
+ public final StackTraceElement[] fullTrace = Thread.currentThread().getStackTrace();
+ public final String text;
+ private static final String ITEM_ELEMENT = "item";
+ private static final String ITEM_ID_ATTRIBUTE = "id";
+ private static final String STAMP_ELEMENT = "stamp";
+ private static final String TEXT_ELEMENT = "text";
+ private static final String FULLTRACE_ELEMENT = "fulltrace";
+
+ public LogItem(String text) {
+ this.text = text;
+ }
+
+ public StringBuilder toStringBuilder(int id) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(" <" + ITEM_ELEMENT + " " + ITEM_ID_ATTRIBUTE + "=\"").append(id).append("\">\n");
+ sb.append(" <" + STAMP_ELEMENT + "><![CDATA[").append(timeStamp.toString()).append("]]></" + STAMP_ELEMENT + ">\n");
+ sb.append(" <" + TEXT_ELEMENT + "><![CDATA[\n").append(text).append("\n]]></" + TEXT_ELEMENT + ">\n");
+ sb.append(" <" + FULLTRACE_ELEMENT + "><![CDATA[\n");
+ //five methods since call in log methods + getStacktrace method
+ for (int i = 6; i < fullTrace.length; i++) {
+ sb.append(fullTrace[i].toString()).append("\n");
+ }
+ sb.append("\n]]> </" + FULLTRACE_ELEMENT + ">\n");
+ sb.append(" </" + ITEM_ELEMENT + ">\n");
+ return sb;
+ }
+}
diff --git a/tests/test-extensions/net/sourceforge/jnlp/LoggingBottleneck.java b/tests/test-extensions/net/sourceforge/jnlp/LoggingBottleneck.java
new file mode 100644
index 0000000..3f4de4b
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/LoggingBottleneck.java
@@ -0,0 +1,215 @@
+/* LoggingBottleneck.java
+Copyright (C) 2011,2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+package net.sourceforge.jnlp;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import net.sourceforge.jnlp.annotations.TestInBrowsers;
+import net.sourceforge.jnlp.browsertesting.BrowserTest;
+import net.sourceforge.jnlp.browsertesting.Browsers;
+
+public class LoggingBottleneck {
+
+ /**
+ * default singleton
+ */
+ private static LoggingBottleneck loggingBottleneck;
+ private static final File DEFAULT_LOG_FILE = new File("ServerAccess-logs.xml");
+ private static final File DEFAULT_STDERR_FILE = new File("stderr.log");
+ private static final File DEFAULT_STDOUT_FILE = new File("stdout.log");
+ private static final File DEFAULT_STDLOGS_FILE = new File("all.log");
+ private static final String LOGS_ELEMENT = "logs";
+ private static final String CLASSLOG_ELEMENT = "classlog";
+ private static final String CLASSNAME_ATTRIBUTE = "className";
+ private static final String TESTLOG_ELEMENT = "testLog";
+ private static final String TESTMETHOD_ATTRIBUTE = "testMethod";
+ private static final String FULLID_ATTRIBUTE = "fullId";
+ private BufferedWriter DEFAULT_STDERR_WRITER;
+ private BufferedWriter DEFAULT_STDOUT_WRITER;
+ private BufferedWriter DEFAULT_STDLOGS_WRITER;
+ /**
+ * This is static copy of name of id of currentBrowser for logging purposes
+ */
+ private String loggedBrowser = Browsers.none.toString();
+ /**
+ * map of classes, each have map of methods, each have errorlist, outLIst, and allList (allist contains also not std or err messages)
+ * class.testMethod.logs
+ */
+ final Map<String, Map<String, TestsLogs>> processLogs = new HashMap<String, Map<String, TestsLogs>>(100);
+ private boolean added = false;
+
+ public static LoggingBottleneck getDefaultLoggingBottleneck() {
+ if (loggingBottleneck == null) {
+ loggingBottleneck = new LoggingBottleneck();
+ }
+ return loggingBottleneck;
+
+ }
+
+ private LoggingBottleneck() {
+ try {
+ DEFAULT_STDOUT_WRITER = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(DEFAULT_STDOUT_FILE)));
+ DEFAULT_STDERR_WRITER = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(DEFAULT_STDERR_FILE)));
+ DEFAULT_STDLOGS_WRITER = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(DEFAULT_STDLOGS_FILE)));
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+
+ void writeXmlLog() throws FileNotFoundException, IOException {
+ writeXmlLog(DEFAULT_LOG_FILE);
+ }
+
+ void writeXmlLog(File f) throws FileNotFoundException, IOException {
+ Writer w = new OutputStreamWriter(new FileOutputStream(f));
+ Set<Entry<String, Map<String, TestsLogs>>> classes = processLogs.entrySet();
+ w.write("<" + LOGS_ELEMENT + ">");
+ for (Entry<String, Map<String, TestsLogs>> classLog : classes) {
+ String className = classLog.getKey();
+ w.write("<" + CLASSLOG_ELEMENT + " " + CLASSNAME_ATTRIBUTE + "=\"" + className + "\">");
+ Set<Entry<String, TestsLogs>> testsLogs = classLog.getValue().entrySet();
+ for (Entry<String, TestsLogs> testLog : testsLogs) {
+ String testName = testLog.getKey();
+ String testLogs = testLog.getValue().toString();
+ w.write("<" + TESTLOG_ELEMENT + " " + TESTMETHOD_ATTRIBUTE + "=\"" + testName + "\" " + FULLID_ATTRIBUTE + "=\"" + className + "." + testName + "\" >");
+ w.write(testLogs);
+ w.write("</" + TESTLOG_ELEMENT + ">");
+ }
+ w.write("</" + CLASSLOG_ELEMENT + ">");
+ }
+ w.write("</" + LOGS_ELEMENT + ">");
+ w.flush();
+ w.close();
+ }
+
+ void addToXmlLog(String message, boolean printToOut, boolean printToErr, StackTraceElement ste) {
+ Map<String, TestsLogs> classLog = processLogs.get(ste.getClassName());
+ if (classLog == null) {
+ classLog = new HashMap<String, TestsLogs>(50);
+ processLogs.put(ste.getClassName(), classLog);
+ }
+ String methodBrowseredName = ste.getMethodName();
+ methodBrowseredName = modifyMethodWithForBrowser(methodBrowseredName, ste.getClassName());
+ TestsLogs methodLog = classLog.get(methodBrowseredName);
+ if (methodLog == null) {
+ methodLog = new TestsLogs();
+ classLog.put(methodBrowseredName, methodLog);
+ }
+ if (!added) {
+ Runtime.getRuntime().addShutdownHook(new Thread() {
+
+ @Override
+ public void run() {
+ try {
+ LoggingBottleneck.getDefaultLoggingBottleneck().writeXmlLog();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+ });
+ added = true;
+ }
+ methodLog.add(printToErr, printToOut, message);
+ }
+
+ public String modifyMethodWithForBrowser(String methodBrowseredName, String className) {
+ try {
+ Class clazz = Class.forName(className);
+ /*
+ * By using this isAssignable to ensure corect class before invocation,
+ * then we lost possibility to track manualy set browsers, but it is correct,
+ * as method description is set only when annotation is used
+ */
+ if (clazz != null && BrowserTest.class.isAssignableFrom(clazz)) {
+ Method testMethod = clazz.getMethod(methodBrowseredName);
+ if (testMethod != null) {
+ TestInBrowsers tib = testMethod.getAnnotation(TestInBrowsers.class);
+ if (tib != null) {
+ methodBrowseredName = methodBrowseredName + " - " + loggedBrowser;
+ }
+ }
+ }
+ } catch (Throwable ex) {
+ ex.printStackTrace();
+ }
+ return methodBrowseredName;
+ }
+
+ public void setLoggedBrowser(String loggedBrowser) {
+ this.loggedBrowser = loggedBrowser;
+ }
+
+ public void logIntoPlaintextLog(String message, boolean printToOut, boolean printToErr) {
+ try {
+ if (printToOut) {
+ LoggingBottleneck.getDefaultLoggingBottleneck().stdout(message);
+ }
+ if (printToErr) {
+ LoggingBottleneck.getDefaultLoggingBottleneck().stderr(message);
+ }
+ LoggingBottleneck.getDefaultLoggingBottleneck().stdeall(message);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ }
+ }
+
+ private void stdout(String idded) throws IOException {
+ DEFAULT_STDOUT_WRITER.write(idded);
+ DEFAULT_STDOUT_WRITER.newLine();
+ }
+
+ private void stderr(String idded) throws IOException {
+ DEFAULT_STDERR_WRITER.write(idded);
+ DEFAULT_STDERR_WRITER.newLine();
+ }
+
+ private void stdeall(String idded) throws IOException {
+ DEFAULT_STDLOGS_WRITER.write(idded);
+ DEFAULT_STDLOGS_WRITER.newLine();
+ }
+}
diff --git a/tests/test-extensions/net/sourceforge/jnlp/ProcessAssasin.java b/tests/test-extensions/net/sourceforge/jnlp/ProcessAssasin.java
new file mode 100644
index 0000000..c910311
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/ProcessAssasin.java
@@ -0,0 +1,159 @@
+/* ProcessAssasin.java
+Copyright (C) 2011,2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+package net.sourceforge.jnlp;
+
+/**
+ * class which timeout any ThreadedProcess. This killing of 'thread with process' replaced not working process.destroy().
+ */
+class ProcessAssasin extends Thread {
+
+ long timeout;
+ private final ThreadedProcess p;
+ //false == is disabled:(
+ private boolean canRun = true;
+ private boolean wasTerminated = false;
+ /**
+ * if this is true, then process is not destroyed after timeout, but just left to its own destiny.
+ * Its stdout/err is no longer recorded, and it is leaking system resources until it dies by itself
+ * The contorl is returned to main thread with all informations recorded untill now.
+ * You will be able to listen to std out from listeners still
+ */
+ private boolean skipInstedOfDesroy = false;
+
+ public ProcessAssasin(ThreadedProcess p, long timeout) {
+ this.p = (p);
+ this.timeout = timeout;
+ }
+
+ public ProcessAssasin(ThreadedProcess p, long timeout, boolean skipInstedOfDesroy) {
+ this.p = (p);
+ this.timeout = timeout;
+ this.skipInstedOfDesroy = skipInstedOfDesroy;
+ }
+
+ public void setCanRun(boolean canRun) {
+ this.canRun = canRun;
+ if (p != null) {
+ if (p.getP() != null) {
+ ServerAccess.logNoReprint("Stopping assassin for" + p.toString() + " " + p.getP().toString() + " " + p.getCommandLine() + ": ");
+ } else {
+ ServerAccess.logNoReprint("Stopping assassin for" + p.toString() + " " + p.getCommandLine() + ": ");
+ }
+ } else {
+ ServerAccess.logNoReprint("Stopping assassin for null job: ");
+ }
+ }
+
+ public boolean isCanRun() {
+ return canRun;
+ }
+
+ public boolean wasTerminated() {
+ return wasTerminated;
+ }
+
+ public void setSkipInstedOfDesroy(boolean skipInstedOfDesroy) {
+ this.skipInstedOfDesroy = skipInstedOfDesroy;
+ }
+
+ public boolean isSkipInstedOfDesroy() {
+ return skipInstedOfDesroy;
+ }
+
+ @Override
+ public void run() {
+ long startTime = System.nanoTime() / ServerAccess.NANO_TIME_DELIMITER;
+ while (canRun) {
+ try {
+ long time = System.nanoTime() / ServerAccess.NANO_TIME_DELIMITER;
+ //ServerAccess.logOutputReprint(time - startTime);
+ //ServerAccess.logOutputReprint((time - startTime) > timeout);
+ if ((time - startTime) > timeout) {
+ try {
+ if (p != null) {
+ if (p.getP() != null) {
+ ServerAccess.logErrorReprint("Timed out " + p.toString() + " " + p.getP().toString() + " .. killing " + p.getCommandLine() + ": ");
+ } else {
+ ServerAccess.logErrorReprint("Timed out " + p.toString() + " " + "null .. killing " + p.getCommandLine() + ": ");
+ }
+ wasTerminated = true;
+ p.interrupt();
+ while (!ServerAccess.terminated.contains(p)) {
+ Thread.sleep(100);
+ }
+ if (p.getP() != null) {
+ try {
+ if (!skipInstedOfDesroy) {
+ p.getP().destroy();
+ }
+ } catch (Throwable ex) {
+ if (p.deadlyException == null) {
+ p.deadlyException = ex;
+ }
+ ex.printStackTrace();
+ }
+ }
+ if (p.getP() != null) {
+ ServerAccess.logErrorReprint("Timed out " + p.toString() + " " + p.getP().toString() + " .. killed " + p.getCommandLine());
+ } else {
+ ServerAccess.logErrorReprint("Timed out " + p.toString() + " null .. killed " + p.getCommandLine());
+ }
+ } else {
+ ServerAccess.logErrorReprint("Timed out null job");
+ }
+ break;
+ } finally {
+ p.setDestoyed(true);
+ }
+ }
+ Thread.sleep(100);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+ if (p != null) {
+ if (p.getP() != null) {
+ ServerAccess.logNoReprint("assassin for" + p.toString() + " " + p.getP().toString() + " .. done " + p.getCommandLine() + " termination " + wasTerminated);
+ } else {
+ ServerAccess.logNoReprint("assassin for" + p.toString() + " null .. done " + p.getCommandLine() + " termination " + wasTerminated);
+ }
+ } else {
+ ServerAccess.logNoReprint("assassin for non existing job termination " + wasTerminated);
+ }
+ }
+}
diff --git a/tests/test-extensions/net/sourceforge/jnlp/ProcessResult.java b/tests/test-extensions/net/sourceforge/jnlp/ProcessResult.java
new file mode 100644
index 0000000..d436f72
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/ProcessResult.java
@@ -0,0 +1,69 @@
+/* ProcessResult.java
+Copyright (C) 2011,2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+package net.sourceforge.jnlp;
+
+/**
+ * artefacts what are left by finished process
+ */
+public class ProcessResult {
+
+ public final String stdout;
+ public final String notFilteredStdout;
+ public final String stderr;
+ public final Process process;
+ public final Integer returnValue;
+ public final boolean wasTerminated;
+ /*
+ * possible exception which caused Process not to be launched
+ */
+ public final Throwable deadlyException;
+
+ public ProcessResult(String stdout, String stderr, Process process, boolean wasTerminated, Integer r, Throwable deadlyException) {
+ this.notFilteredStdout = stdout;
+ if (stdout == null) {
+ this.stdout = null;
+ } else {
+ this.stdout = stdout.replaceAll("EMMA:.*\n?", "");
+ }
+ this.stderr = stderr;
+ this.process = process;
+ this.wasTerminated = wasTerminated;
+ this.returnValue = r;
+ this.deadlyException = deadlyException;
+ }
+}
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ResourcesTest.java b/tests/test-extensions/net/sourceforge/jnlp/ResourcesTest.java
index 097ac4f..097ac4f 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/ResourcesTest.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/ResourcesTest.java
diff --git a/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java b/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java
new file mode 100644
index 0000000..353d208
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/ServerAccess.java
@@ -0,0 +1,828 @@
+/* ServerAccess.java
+Copyright (C) 2011 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+package net.sourceforge.jnlp;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ServerSocket;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import net.sourceforge.jnlp.browsertesting.Browser;
+import net.sourceforge.jnlp.browsertesting.BrowserFactory;
+import net.sourceforge.jnlp.browsertesting.Browsers;
+import org.junit.Assert;
+
+/**
+ *
+ * This class provides access to virtual server and stuff around.
+ * It can find unoccupied port, start server, provides its singleton instantiation, lunch parallel instantiations,
+ * read location of installed (tested javaws) see javaws.build.bin java property,
+ * location of server www root on file system (see test.server.dir java property),
+ * stubs for lunching javaws and for locating resources and read resources.
+ *
+ * It can also execute processes with timeout (@see PROCESS_TIMEOUT) (used during lunching javaws)
+ * Some protected apis are exported because public classes in this package are put to be tested by makefile.
+ *
+ * There are included test cases which show some basic usages.
+ *
+ *
+ */
+public class ServerAccess {
+
+ public static final long NANO_TIME_DELIMITER=1000000l;
+ /**
+ * java property which value containing path to default (makefile by) directory with deployed resources
+ */
+ public static final String TEST_SERVER_DIR = "test.server.dir";
+ /**
+ * java property which value containing path to installed (makefile by) javaws binary
+ */
+ public static final String JAVAWS_BUILD_BIN = "javaws.build.bin";
+ /** property to set the different then default browser
+ */
+ public static final String USED_BROWSERS = "used.browsers";
+ public static final String DEFAULT_LOCALHOST_NAME = "localhost";
+ /**
+ * server instance singleton
+ */
+ private static ServerLauncher server;
+ /**
+ * inner version of engine
+ */
+ private static final String version = "5";
+ /**
+ * timeout to read 'remote' resources
+ * This can be changed in runtime, but will affect all following tasks
+ */
+ public static int READ_TIMEOUT = 1000;
+ /**
+ * timeout in ms to let process to finish, before assassin will kill it.
+ * This can be changed in runtime, but will affect all following tasks
+ */
+ public static long PROCESS_TIMEOUT = 20 * 1000;//ms
+ /**
+ * all terminated processes are stored here. As wee need to 'wait' to termination to be finished.
+ */
+ static Set<Thread> terminated = new HashSet<Thread>();
+ /**
+ * this flag is indicating whether output of executeProcess should be logged. By default true.
+ */
+ public static boolean PROCESS_LOG = true;
+ public static boolean LOGS_REPRINT = false;
+
+ private Browser currentBrowser;
+ public static final String UNSET_BROWSER="unset_browser";
+
+ /**
+ * main method of this class prints out random free port
+ * or runs server
+ * param "port" prints out the port
+ * nothing or number will run server on random(or on number specified)
+ * port in -Dtest.server.dir
+ */
+ public static void main(String[] args) throws Exception {
+ if (args.length > 0 && args[0].equalsIgnoreCase("port")) {
+ int i = findFreePort();
+ System.out.println(i);
+ System.exit(0);
+ } else {
+ int port = 44321;
+ if (args.length > 0) {
+ port=new Integer(args[0]);
+ }
+ getIndependentInstance(port);
+ while (true) {
+ Thread.sleep(1000);
+ }
+
+ }
+ }
+
+ /**
+ * utility method to find random free port
+ *
+ * @return - found random free port
+ * @throws IOException - if socket can't be opened or no free port exists
+ */
+ public static int findFreePort()
+ throws IOException {
+ ServerSocket findPortTestingSocket = new ServerSocket(0);
+ int port = findPortTestingSocket.getLocalPort();
+ findPortTestingSocket.close();
+ return port;
+ }
+ public static final String HEADLES_OPTION="-headless";
+
+ /**
+ * we would like to have an singleton instance ASAP
+ */
+ public ServerAccess() {
+
+ getInstance();
+
+
+ }
+
+ /**
+ *
+ * @return cached instance. If none, then creates new
+ */
+ public static ServerLauncher getInstance() {
+ if (server == null) {
+ server = getIndependentInstance();
+ }
+ return server;
+ }
+
+ /**
+ *
+ * @return new not cached iserver instance on random port,
+ * useful for testing application loading from different url then base
+ */
+ public static ServerLauncher getIndependentInstance() {
+ return getIndependentInstance(true);
+ }
+ public static ServerLauncher getIndependentInstance(boolean daemon) {
+ String dir = (System.getProperty(TEST_SERVER_DIR));
+ try{
+ return getIndependentInstance(dir, findFreePort(),daemon);
+ }catch (Exception ex){
+ throw new RuntimeException(ex);
+ }
+ }
+
+
+ /**
+ *
+ * @return new not cached iserver instance on random port,
+ * useful for testing application loading from different url then base
+ */
+
+ public static ServerLauncher getIndependentInstance(int port) {
+ return getIndependentInstance(port, true);
+ }
+ public static ServerLauncher getIndependentInstance(int port,boolean daemon) {
+ String dir = (System.getProperty(TEST_SERVER_DIR));
+ return getIndependentInstance(dir,port,daemon);
+ }
+
+ /**
+ *
+ * @return new not cached iserver instance on random port upon custom www root directory,
+ * useful for testing application loading from different url then base
+ */
+
+ public static ServerLauncher getIndependentInstance(String dir, int port) {
+ return getIndependentInstance(dir, port, true);
+ }
+ public static ServerLauncher getIndependentInstance(String dir, int port,boolean daemon) {
+
+
+ if (dir == null || dir.trim().length() == 0 || !new File(dir).exists() || !new File(dir).isDirectory()) {
+ throw new RuntimeException("test.server.dir property must be set to valid directory!");
+ }
+ try {
+ ServerLauncher lServerLuncher = new ServerLauncher(port, new File(dir));
+ Thread r=new Thread(lServerLuncher);
+ r.setDaemon(daemon);
+ r.start();
+ return lServerLuncher;
+ } catch (Exception ex) {
+ throw new RuntimeException(ex);
+ }
+
+ }
+
+ /**
+ *
+ * @return - value passed inside as javaws binary location. See JAVAWS_BUILD_BIN
+ */
+ public String getJavawsLocation() {
+ return System.getProperty(JAVAWS_BUILD_BIN);
+ }
+
+ /**
+ *
+ * @return - bianry from where to lunch current browser
+ */
+ public String getBrowserLocation() {
+ if (this.currentBrowser==null) return UNSET_BROWSER;
+ return this.currentBrowser.getBin();
+ }
+
+ public List<String> getBrowserParams() {
+ if (this.currentBrowser==null) return null;
+ List<String> l1=this.currentBrowser.getComaptibilitySwitches();
+ List<String> l2=this.currentBrowser.getDefaultSwitches();
+ List<String> l= new ArrayList();
+ if (l1!=null)l.addAll(l1);
+ if (l2!=null)l.addAll(l2);
+ return l;
+
+ }
+
+ public Browsers getCurrentBrowsers() {
+ if (currentBrowser==null) return null;
+ return currentBrowser.getID();
+ }
+ public Browser getCurrentBrowser() {
+ return currentBrowser;
+ }
+
+ public void setCurrentBrowser(Browsers currentBrowser) {
+ this.currentBrowser = BrowserFactory.getFactory().getBrowser(currentBrowser);
+ if (this.currentBrowser == null) {
+ LoggingBottleneck.getDefaultLoggingBottleneck().setLoggedBrowser(UNSET_BROWSER);
+ } else {
+ LoggingBottleneck.getDefaultLoggingBottleneck().setLoggedBrowser(this.currentBrowser.getID().toString());
+ }
+ }
+
+ public void setCurrentBrowser(Browser currentBrowser) {
+ this.currentBrowser = currentBrowser;
+ if (this.currentBrowser == null) {
+ LoggingBottleneck.getDefaultLoggingBottleneck().setLoggedBrowser(UNSET_BROWSER);
+ } else {
+ LoggingBottleneck.getDefaultLoggingBottleneck().setLoggedBrowser(this.currentBrowser.getID().toString());
+ }
+ }
+
+
+
+ /**
+ *
+ * @return - value passed inside as javaws binary location as file. See JAVAWS_BUILD_BIN
+ */
+ public File getJavawsFile() {
+ return new File(System.getProperty(JAVAWS_BUILD_BIN));
+ }
+
+ /**
+ *
+ * @return port on which is running cached server. If non singleton instance is running, new is created.
+ */
+ public int getPort() {
+ if (server == null) {
+ getInstance();
+ }
+ //if (!server.isRunning()) throw new RuntimeException("Server mysteriously died");
+ return server.getPort();
+
+ }
+
+ /**
+ *
+ * @return directory upon which is running cached server. If non singleton instance is running, new is created.
+ */
+ public File getDir() {
+ if (server == null) {
+ getInstance();
+ }
+ // if (!server.isRunning()) throw new RuntimeException("Server mysteriously died");
+ return server.getDir();
+ }
+
+ /**
+ *
+ * @return url pointing to cached server resource. If non singleton instance is running, new is created.
+ */
+ public URL getUrl(String resource) throws MalformedURLException {
+ if (server == null) {
+ getInstance();
+ }
+ //if (!server.isRunning()) throw new RuntimeException("Server mysteriously died");
+ return server.getUrl(resource);
+ }
+
+ /**
+ *
+ * @return url pointing to cached server . If non singleton instance is running, new is created.
+ */
+ public URL getUrl() throws MalformedURLException {
+ return getUrl("");
+
+ }
+
+ /**
+ *
+ * @return whether cached server is alive. If non singleton instance is running, new is created.
+ */
+ public boolean isRunning() {
+ if (server == null) {
+ getInstance();
+ }
+ //if (!server.isRunning()) throw new RuntimeException("Server mysteriously died");
+ return server.isRunning();
+
+ }
+
+ /**
+ * Return resource from cached server
+ *
+ * @param resource to be located on cached server
+ * @return individual bytes of resource
+ * @throws IOException if connection can't be established or resource does not exist
+ */
+ public ByteArrayOutputStream getResourceAsBytes(String resource) throws IOException {
+ return getResourceAsBytes(getUrl(resource));
+ }
+
+ /**
+ * Return resource from cached server
+ *
+ * @param resource to be located on cached server
+ * @return string constructed from resource
+ * @throws IOException if connection can't be established or resource does not exist
+ */
+ public String getResourceAsString(String resource) throws IOException {
+ return getResourceAsString(getUrl(resource));
+ }
+
+ /**
+ * utility method which can read bytes of any stream
+ *
+ * @param input stream to be read
+ * @return individual bytes of resource
+ * @throws IOException if connection can't be established or resource does not exist
+ */
+ public static ByteArrayOutputStream getBytesFromStream(InputStream is) throws IOException {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ int nRead;
+ byte[] data = new byte[16384];
+ while ((nRead = is.read(data, 0, data.length)) != -1) {
+ buffer.write(data, 0, nRead);
+ }
+ buffer.flush();
+ return buffer;
+ }
+
+ /**
+ * utility method which can read from any stream as one long String
+ *
+ * @param input stream
+ * @return stream as string
+ * @throws IOException if connection can't be established or resource does not exist
+ */
+ public static String getContentOfStream(InputStream is,String encoding) throws IOException {
+ try {
+ BufferedReader br = new BufferedReader(new InputStreamReader(is, encoding));
+ StringBuilder sb = new StringBuilder();
+ while (true) {
+ String s = br.readLine();
+ if (s == null) {
+ break;
+ }
+ sb.append(s).append("\n");
+
+ }
+ return sb.toString();
+ } finally {
+ is.close();
+ }
+
+ }
+
+ /**
+ * utility method which can read from any stream as one long String
+ *
+ * @param input stream
+ * @return stream as string
+ * @throws IOException if connection can't be established or resource does not exist
+ */
+ public static String getContentOfStream(InputStream is) throws IOException {
+ return getContentOfStream(is, "UTF-8");
+
+ }
+
+ /**
+ * utility method which can read bytes of resource from any url
+ *
+ * @param resource to be located on any url
+ * @return individual bytes of resource
+ * @throws IOException if connection can't be established or resource does not exist
+ */
+ public static ByteArrayOutputStream getResourceAsBytes(URL u) throws IOException {
+ HttpURLConnection connection = (HttpURLConnection) u.openConnection();
+ connection = (HttpURLConnection) u.openConnection();
+ connection.setRequestMethod("GET");
+ connection.setDoOutput(true);
+ connection.setReadTimeout(READ_TIMEOUT);
+ connection.connect();
+ return getBytesFromStream(connection.getInputStream());
+
+ }
+
+ /**
+ * utility method which can read string of resource from any url
+ *
+ * @param resource to be located on any url
+ * @return resource as string
+ * @throws IOException if connection can't be established or resource does not exist
+ */
+ public static String getResourceAsString(URL u) throws IOException {
+ HttpURLConnection connection = (HttpURLConnection) u.openConnection();
+ connection = (HttpURLConnection) u.openConnection();
+ connection.setRequestMethod("GET");
+ connection.setDoOutput(true);
+ connection.setReadTimeout(READ_TIMEOUT);
+ connection.connect();
+ return getContentOfStream(connection.getInputStream());
+ }
+
+ /**
+ * helping dummy method to save String as file
+ *
+ * @param content
+ * @param f
+ * @throws IOException
+ */
+ public static void saveFile(String content, File f) throws IOException {
+ saveFile(content, f, "utf-8");
+ }
+ public static void saveFile(String content, File f,String encoding) throws IOException {
+ Writer output = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f),encoding));
+ output.write(content);
+ output.flush();
+ output.close();
+ }
+
+ /**
+ * wrapping method to executeProcess (eg: javaws -headless http://localhost:port/resource)
+ * will execute default javaws (@see JAVAWS_BUILD_BIN) upon default url upon cached server (@see SERVER_NAME @see getPort(), @see getInstance())
+ * with parameter -headless (no gui, no asking)
+ * @param resource name of resource
+ * @return result what left after running this process
+ * @throws Exception
+ */
+ public ProcessResult executeJavawsHeadless(String resource) throws Exception {
+ return executeJavawsHeadless(null, resource);
+ }
+ public ProcessResult executeJavawsHeadless(String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
+ return executeJavawsHeadless(null, resource,stdoutl,stderrl);
+ }
+
+ /**
+ * wrapping method to executeProcess (eg: javaws arg arg -headless http://localhost:port/resource)
+ * will execute default javaws (@see JAVAWS_BUILD_BIN) upon default url upon cached server (@see SERVER_NAME @see getPort(), @see getInstance())
+ * with parameter -headless (no gui, no asking)
+ * @param resource name of resource
+ * @param otherargs other arguments to be added to headless one
+ * @return result what left after running this process
+ * @throws Exception
+ */
+ public ProcessResult executeJavawsHeadless(List<String> otherargs, String resource) throws Exception {
+ return executeJavawsHeadless(otherargs, resource,null,null);
+ }
+ public ProcessResult executeJavawsHeadless(List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
+ if (otherargs == null) {
+ otherargs = new ArrayList<String>(1);
+ }
+ List<String> headlesList = new ArrayList<String>(otherargs);
+ headlesList.add(HEADLES_OPTION);
+ return executeJavaws(headlesList, resource,stdoutl,stderrl);
+ }
+
+
+ /**
+ * wrapping method to executeProcess (eg: javaws http://localhost:port/resource)
+ * will execute default javaws (@see JAVAWS_BUILD_BIN) upon default url upon cached server (@see SERVER_NAME @see getPort(), @see getInstance())
+ * @param resource name of resource
+ * @return result what left after running this process
+ * @throws Exception
+ */
+ public ProcessResult executeJavaws(String resource) throws Exception {
+ return executeJavaws(null, resource);
+ }
+ public ProcessResult executeJavaws(String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
+ return executeJavaws(null, resource,stdoutl,stderrl);
+ }
+ public ProcessResult executeBrowser(String resource) throws Exception {
+ return executeBrowser(getBrowserParams(), resource);
+ }
+ public ProcessResult executeBrowser(String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
+ return executeBrowser(getBrowserParams(), resource,stderrl,stdoutl);
+ }
+
+ /**
+ * wrapping method to executeProcess (eg: javaws arg arg http://localhost:port/resource)
+ * will execute default javaws (@see JAVAWS_BUILD_BIN) upon default url upon cached server (@see SERVER_NAME @see getPort(), @see getInstance()))
+ * @param resource name of resource
+ * @param otherargs other arguments to be added
+ * @return result what left after running this process
+ * @throws Exception
+ */
+ public ProcessResult executeJavaws(List<String> otherargs, String resource) throws Exception {
+ return executeProcessUponURL(getJavawsLocation(), otherargs, getUrlUponThisInstance(resource));
+ }
+ public ProcessResult executeJavaws(List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
+ return executeProcessUponURL(getJavawsLocation(), otherargs, getUrlUponThisInstance(resource),stdoutl,stderrl);
+ }
+
+ public ProcessResult executeBrowser(List<String> otherargs, String resource) throws Exception {
+ return executeProcessUponURL(getBrowserLocation(), otherargs, getUrlUponThisInstance(resource));
+ }
+ public ProcessResult executeBrowser(List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
+ return executeProcessUponURL(getBrowserLocation(), otherargs, getUrlUponThisInstance(resource),stdoutl,stderrl);
+ }
+
+ public ProcessResult executeBrowser(Browser b,List<String> otherargs, String resource) throws Exception {
+ return executeProcessUponURL(b.getBin(), otherargs, getUrlUponThisInstance(resource));
+ }
+ public ProcessResult executeBrowser(Browser b,List<String> otherargs, String resource,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
+ return executeProcessUponURL(b.getBin(), otherargs, getUrlUponThisInstance(resource),stdoutl,stderrl);
+ }
+
+ /**
+ * Ctreate resource on http, on 'localhost' on port on which this instance is running
+ * @param resource
+ * @return
+ * @throws MalformedURLException
+ */
+ public URL getUrlUponThisInstance(String resource) throws MalformedURLException {
+ if (!resource.startsWith("/")) {
+ resource = "/" + resource;
+ }
+ return new URL("http", server.getServerName(), getPort(), resource);
+ }
+
+ /**
+ * wrapping method to executeProcess (eg: javaws arg arg arg url)
+ * will execute default javaws (@see JAVAWS_BUILD_BIN) upon any server
+ * @param u url of resource upon any server
+ * @param javaws arguments
+ * @return result what left after running this process
+ * @throws Exception
+ */
+ public ProcessResult executeJavawsUponUrl(List<String> otherargs, URL u) throws Exception {
+ return executeProcessUponURL(getJavawsLocation(), otherargs, u);
+ }
+ public ProcessResult executeJavawsUponUrl(List<String> otherargs, URL u,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
+ return executeProcessUponURL(getJavawsLocation(), otherargs, u,stdoutl,stderrl);
+ }
+
+ /**
+ * wrapping utility method to executeProcess (eg: any_binary arg arg arg url)
+ *
+ * will execute any process upon url upon any server
+ * @param u url of resource upon any server
+ * @param javaws arguments
+ * @return result what left after running this process
+ * @throws Exception
+ */
+ public static ProcessResult executeProcessUponURL(String toBeExecuted, List<String> otherargs, URL u) throws Exception {
+ return executeProcessUponURL(toBeExecuted, otherargs, u,null,null);
+ }
+
+ public static ProcessResult executeProcessUponURL(String toBeExecuted, List<String> otherargs, URL u,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
+ Assert.assertNotNull(u);
+ Assert.assertNotNull(toBeExecuted);
+ Assert.assertTrue(toBeExecuted.trim().length() > 1);
+ if (otherargs == null) {
+ otherargs = new ArrayList<String>(1);
+ }
+ List<String> urledArgs = new ArrayList<String>(otherargs);
+ urledArgs.add(0, toBeExecuted);
+ urledArgs.add(u.toString());
+ return executeProcess(urledArgs, stdoutl, stderrl);
+ }
+
+ public static ProcessResult executeProcess(final List<String> args) throws Exception {
+ return executeProcess(args, null);
+ }
+ public static ProcessResult executeProcess(final List<String> args,ContentReaderListener stdoutl,ContentReaderListener stderrl) throws Exception {
+ return executeProcess(args, null,stdoutl,stderrl);
+ }
+ /**
+ * utility method to lunch process, get its stdout/stderr, its return value and to kill it if running to long (@see PROCESS_TIMEOUT)
+ *
+ *
+ * Small bacground:
+ * This method creates thread inside which exec will be executed. Then creates assassin thread with given timeout to kill the previously created thread if necessary.
+ * Starts assassin thread, starts process thread. Wait until process is running, then starts content readers.
+ * Closes input of process.
+ * Wait until process is running (no matter if it terminate itself (correctly or badly), or is terminated by its assassin.
+ * Construct result from readed stdout, stderr, process return value, assassin successfully
+ *
+ * @param args binary with args to be executed
+ * @param dir optional, directory where this process will run
+ * @return what left from process - process itself, its stdout, stderr and return value and whether it was terminated by assassin.
+ * @throws Exception
+ */
+ public static ProcessResult executeProcess(final List<String> args,File dir) throws Exception {
+ return executeProcess(args, dir, null, null);
+ }
+
+ private static String createConnectionMessage(ThreadedProcess t) {
+ return "Connecting " + t.getCommandLine();
+ }
+
+ /**
+ * Proceed message s to logging with request to reprint to System.err
+ * @param s
+ */
+ public static void logErrorReprint(String s) {
+ log(s, false, true);
+ }
+
+ /**
+ * Proceed message s to logging with request to reprint to System.out
+ * @param s
+ */
+ public static void logOutputReprint(String s) {
+ log(s, true, false);
+ }
+
+ /**
+ * Proceed message s to logging withhout request to reprint
+ * @param s
+ */
+ public static void logNoReprint(String s) {
+ log(s, false, false);
+ }
+
+ private static void log(String message, boolean printToOut, boolean printToErr) {
+ String idded;
+ StackTraceElement ste = getTestMethod();
+ String fullId = ste.getClassName() + "." + ste.getMethodName();
+ fullId = LoggingBottleneck.getDefaultLoggingBottleneck().modifyMethodWithForBrowser(ste.getMethodName(), ste.getClassName());
+ if (message.contains("\n")) {
+ idded = fullId + ": \n" + message + "\n" + fullId + " ---";
+ } else {
+ idded = fullId + ": " + message;
+
+ }
+ if (LOGS_REPRINT) {
+ if (printToOut) {
+ System.out.println(idded);
+ }
+ if (printToErr) {
+ System.err.println(idded);
+ }
+ }
+ LoggingBottleneck.getDefaultLoggingBottleneck().logIntoPlaintextLog(idded, printToOut,printToErr);
+ LoggingBottleneck.getDefaultLoggingBottleneck().addToXmlLog(message,printToOut,printToErr,ste);
+ }
+
+ public static void logException(Throwable t){
+ logException(t, true);
+ }
+ public static void logException(Throwable t, boolean print){
+ try{
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+ t.printStackTrace(pw);
+ log(sw.toString(), false, print);
+ pw.close();
+ sw.close();
+ }catch(Exception ex){
+ throw new RuntimeException(ex);
+ }
+ }
+
+ private static StackTraceElement getTestMethod() {
+ return getTestMethod(Thread.currentThread().getStackTrace());
+ }
+
+ private static StackTraceElement getTestMethod(StackTraceElement[] stack) {
+ //0 is always thread
+ //1 is net.sourceforge.jnlp.ServerAccess
+ StackTraceElement result = stack[1];
+ String baseClass = stack[1].getClassName();
+ int i = 2;
+ for (; i < stack.length; i++) {
+ result = stack[i];//at least moving up
+ if(stack[i].getClassName().contains("$")){
+ continue;
+ }
+ if (!baseClass.equals(stack[i].getClassName())) {
+ break;
+ }
+ }
+ //if nothing left in stack then we have been in ServerAccess already
+ //so the target method is the highest form it and better to return it
+ //rather then die to ArrayOutOfBounds
+ if(i >= stack.length){
+ return result;
+ }
+ //now we are out of net.sourceforge.jnlp.ServerAccess
+ //method we need (the test) is highest from following class
+ baseClass = stack[i].getClassName();
+ for (; i < stack.length; i++) {
+ if(stack[i].getClassName().contains("$")){
+ continue;
+ }
+ if (!baseClass.equals(stack[i].getClassName())) {
+ break;
+ }
+ result = stack[i];
+ }
+
+ return result;
+ }
+
+ public static ProcessResult executeProcess(final List<String> args, File dir, ContentReaderListener stdoutl, ContentReaderListener stderrl) throws Exception {
+ ThreadedProcess t = new ThreadedProcess(args, dir);
+ if (PROCESS_LOG) {
+ String connectionMesaage = createConnectionMessage(t);
+ log(connectionMesaage, true, true);
+ }
+ ProcessAssasin pa = new ProcessAssasin(t, PROCESS_TIMEOUT);
+ pa.start();
+ t.start();
+ while (t.getP() == null && t.deadlyException == null) {
+ Thread.sleep(100);
+ }
+ if (t.deadlyException != null) {
+ pa.setCanRun(false);
+ return new ProcessResult("", "", null, true, Integer.MIN_VALUE, t.deadlyException);
+ }
+ ContentReader crs = new ContentReader(t.getP().getInputStream(),stdoutl);
+ ContentReader cre = new ContentReader(t.getP().getErrorStream(),stderrl);
+
+ OutputStream out = t.getP().getOutputStream();
+ if (out != null) {
+ out.close();
+ }
+
+ new Thread(crs).start();
+ new Thread(cre).start();
+ while (t.isRunning()) {
+ Thread.sleep(100);
+ }
+
+ while (!t.isDestoyed()) {
+ Thread.sleep(100);
+ }
+ pa.setCanRun(false);
+ // ServerAccess.logOutputReprint(t.getP().exitValue()); when process is killed, this throws exception
+
+ ProcessResult pr=new ProcessResult(crs.getContent(), cre.getContent(), t.getP(), pa.wasTerminated(), t.getExitCode(), null);
+ if (PROCESS_LOG) {
+ log(pr.stdout, true, false);
+ log(pr.stderr, false, true);
+ }
+ return pr;
+ }
+
+ /**
+ * this is temprary solution until refactoring is fully done
+ * Use net.sourceforge.jnlp.ProcessResult instead
+ */
+ @Deprecated
+ public static class ProcessResult extends net.sourceforge.jnlp.ProcessResult {
+
+ public ProcessResult(String stdout, String stderr, Process process, boolean wasTerminated, Integer r, Throwable deadlyException) {
+ super(stdout, stderr, process, wasTerminated, r, deadlyException);
+ }
+ }
+ }
diff --git a/tests/test-extensions/net/sourceforge/jnlp/ServerLauncher.java b/tests/test-extensions/net/sourceforge/jnlp/ServerLauncher.java
new file mode 100644
index 0000000..92634cc
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/ServerLauncher.java
@@ -0,0 +1,120 @@
+/* ServerLauncher.java
+Copyright (C) 2011,2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+package net.sourceforge.jnlp;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.ServerSocket;
+import java.net.URL;
+
+/**
+ * wrapper around tiny http server to separate lunch configurations and servers.
+ * to allow terminations and stuff around.
+ */
+public class ServerLauncher implements Runnable {
+
+ /**
+ * default url name part.
+ * This can be changed in runtime, but will affect all following tasks upon those server
+ */
+ private String serverName = ServerAccess.DEFAULT_LOCALHOST_NAME;
+ private boolean running;
+ private final Integer port;
+ private final File dir;
+
+ public String getServerName() {
+ return serverName;
+ }
+
+ public void setServerName(String serverName) {
+ this.serverName = serverName;
+ }
+
+ public ServerLauncher(Integer port, File dir) {
+ this.port = port;
+ this.dir = dir;
+ System.err.println("port: " + port);
+ System.err.println("dir: " + dir);
+ }
+
+ public boolean isRunning() {
+ return running;
+ }
+
+ public Integer getPort() {
+ return port;
+ }
+
+ public File getDir() {
+ return dir;
+ }
+
+ public ServerLauncher(File dir) {
+ this(8181, dir);
+ }
+
+ public ServerLauncher(Integer port) {
+ this(port, new File(System.getProperty("user.dir")));
+ }
+
+ public ServerLauncher() {
+ this(8181, new File(System.getProperty("user.dir")));
+ }
+
+ public void run() {
+ running = true;
+ try {
+ ServerSocket s = new ServerSocket(port);
+ while (running) {
+ new TinyHttpdImpl(s.accept(), dir, port);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ running = false;
+ }
+ }
+
+ public URL getUrl(String resource) throws MalformedURLException {
+ return new URL("http", getServerName(), getPort(), resource);
+ }
+
+ public URL getUrl() throws MalformedURLException {
+ return getUrl("");
+ }
+}
diff --git a/tests/test-extensions/net/sourceforge/jnlp/TestsLogs.java b/tests/test-extensions/net/sourceforge/jnlp/TestsLogs.java
new file mode 100644
index 0000000..3277dfe
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/TestsLogs.java
@@ -0,0 +1,85 @@
+/* TestsLogs.java
+Copyright (C) 2011,2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+package net.sourceforge.jnlp;
+
+import java.util.LinkedList;
+import java.util.List;
+
+class TestsLogs {
+
+ public final List<LogItem> outs = new LinkedList<LogItem>();
+ public final List<LogItem> errs = new LinkedList<LogItem>();
+ public final List<LogItem> all = new LinkedList<LogItem>();
+ private static final String LOG_ELEMENT = "log";
+ private static final String LOG_ID_ATTRIBUTE = "id";
+
+ synchronized void add(boolean err, boolean out, String text) {
+ if (text == null) {
+ text = "null";
+ }
+ LogItem li = new LogItem(text);
+ if (out) {
+ outs.add(li);
+ }
+ if (err) {
+ errs.add(li);
+ }
+ all.add(li);
+
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = listToStringBuilder(outs, "out");
+ sb.append(listToStringBuilder(errs, "err"));
+ sb.append(listToStringBuilder(all, "all"));
+ return sb.toString();
+ }
+
+ private StringBuilder listToStringBuilder(List<LogItem> l, String id) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("<" + LOG_ELEMENT + " " + LOG_ID_ATTRIBUTE + "=\"").append(id).append("\">\n");
+ int i = 0;
+ for (LogItem logItem : l) {
+ i++;
+ sb.append(logItem.toStringBuilder(i));
+ }
+ sb.append("</" + LOG_ELEMENT + ">\n");
+ return sb;
+ }
+}
diff --git a/tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java b/tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java
new file mode 100644
index 0000000..c37d842
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/ThreadedProcess.java
@@ -0,0 +1,140 @@
+/* ThreadedProcess.java
+Copyright (C) 2011,2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+package net.sourceforge.jnlp;
+
+import java.io.File;
+import java.util.List;
+
+/**
+ *
+ * wrapper around Runtime.getRuntime().exec(...) which ensures that process is run inside its own, by us controlled, thread.
+ * Process builder caused some unexpected and weird behavior :/
+ */
+class ThreadedProcess extends Thread {
+
+ Process p = null;
+ List<String> args;
+ Integer exitCode;
+ Boolean running;
+ File dir;
+ Throwable deadlyException = null;
+ /*
+ * before removing this "useless" variable
+ * check DeadLockTestTest.testDeadLockTestTerminated2
+ */
+ private boolean destoyed = false;
+
+ public boolean isDestoyed() {
+ return destoyed;
+ }
+
+ public void setDestoyed(boolean destoyed) {
+ this.destoyed = destoyed;
+ }
+
+ public Boolean isRunning() {
+ return running;
+ }
+
+ public Integer getExitCode() {
+ return exitCode;
+ }
+
+ public ThreadedProcess(List<String> args) {
+ this.args = args;
+ }
+
+ public ThreadedProcess(List<String> args, File dir) {
+ this.args = args;
+ this.dir = dir;
+ }
+
+ public String getCommandLine() {
+ String commandLine = "unknown command";
+ try {
+ if (args != null && args.size() > 0) {
+ commandLine = "";
+ for (String string : args) {
+ commandLine = commandLine + " " + string;
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ } finally {
+ return commandLine;
+ }
+ }
+
+ public Process getP() {
+ return p;
+ }
+
+ @Override
+ public void run() {
+ try {
+ running = true;
+ Runtime r = Runtime.getRuntime();
+ if (dir == null) {
+ p = r.exec(args.toArray(new String[0]));
+ } else {
+ p = r.exec(args.toArray(new String[0]), new String[0], dir);
+ }
+ try {
+ exitCode = p.waitFor();
+ Thread.sleep(500); //this is giving to fast done proecesses's e/o readers time to read all. I would like to know better solution :-/
+ } finally {
+ destoyed = true;
+ }
+ } catch (Exception ex) {
+ if (ex instanceof InterruptedException) {
+ //add to the set of terminated threaded processes
+ deadlyException = ex;
+ ServerAccess.logException(deadlyException, false);
+ ServerAccess.terminated.add(this);
+ } else {
+ //happens when non-existing process is launched, is causing p null!
+ ServerAccess.terminated.add(this);
+ deadlyException = ex;
+ ServerAccess.logException(deadlyException, false);
+ throw new RuntimeException(ex);
+ }
+ } finally {
+ running = false;
+ }
+ }
+}
diff --git a/tests/test-extensions/net/sourceforge/jnlp/TinyHttpdImpl.java b/tests/test-extensions/net/sourceforge/jnlp/TinyHttpdImpl.java
new file mode 100644
index 0000000..34870ab
--- /dev/null
+++ b/tests/test-extensions/net/sourceforge/jnlp/TinyHttpdImpl.java
@@ -0,0 +1,174 @@
+/* TinyHttpdImpl.java
+Copyright (C) 2011,2012 Red Hat, Inc.
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published by
+the Free Software Foundation, version 2.
+
+IcedTea is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version.
+ */
+
+package net.sourceforge.jnlp;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.net.Socket;
+import java.net.SocketException;
+import java.net.URLDecoder;
+import java.util.StringTokenizer;
+
+/**
+ * based on http://www.mcwalter.org/technology/java/httpd/tiny/index.html
+ * Very small implementation of http return headers for our served resources
+ * Originally Licenced under GPLv2.0
+ *
+ * When resource starts with XslowX prefix, then resouce (without XslowX)
+ * is returned, but its delivery is delayed
+ */
+class TinyHttpdImpl extends Thread {
+
+ Socket c;
+ private final File dir;
+ private final int port;
+ private boolean canRun = true;
+ private static final String XSX = "/XslowX";
+
+ public TinyHttpdImpl(Socket s, File f, int port) {
+ c = s;
+ this.dir = f;
+ this.port = port;
+ start();
+ }
+
+ public void setCanRun(boolean canRun) {
+ this.canRun = canRun;
+ }
+
+ public int getPort() {
+ return port;
+ }
+
+ @Override
+ public void run() {
+ try {
+ BufferedReader i = new BufferedReader(new InputStreamReader(c.getInputStream()));
+ DataOutputStream o = new DataOutputStream(c.getOutputStream());
+ try {
+ while (canRun) {
+ String s = i.readLine();
+ if (s.length() < 1) {
+ break;
+ }
+ if (s.startsWith("GET")) {
+ StringTokenizer t = new StringTokenizer(s, " ");
+ t.nextToken();
+ String op = t.nextToken();
+ String p = op;
+ if (p.startsWith(XSX)) {
+ p = p.replace(XSX, "/");
+ }
+ ServerAccess.logNoReprint("Getting: " + p);
+ p = URLDecoder.decode(p, "UTF-8");
+ ServerAccess.logNoReprint("Serving: " + p);
+ p = (".".concat((p.endsWith("/")) ? p.concat("index.html") : p)).replace('/', File.separatorChar);
+ File pp = new File(dir, p);
+ int l = (int) pp.length();
+ byte[] b = new byte[l];
+ FileInputStream f = new FileInputStream(pp);
+ f.read(b);
+ String content = "";
+ String ct = "Content-Type: ";
+ if (p.toLowerCase().endsWith(".jnlp")) {
+ content = ct + "application/x-java-jnlp-file\n";
+ } else if (p.toLowerCase().endsWith(".html")) {
+ content = ct + "text/html\n";
+ } else if (p.toLowerCase().endsWith(".jar")) {
+ content = ct + "application/x-jar\n";
+ }
+ o.writeBytes("HTTP/1.0 200 OK\nConten" + "t-Length:" + l + "\n" + content + "\n");
+ if (op.startsWith(XSX)) {
+ byte[][] bb = splitArray(b, 10);
+ for (int j = 0; j < bb.length; j++) {
+ Thread.sleep(2000);
+ byte[] bs = bb[j];
+ o.write(bs, 0, bs.length);
+ }
+ } else {
+ o.write(b, 0, l);
+ }
+ }
+ }
+ } catch (SocketException e) {
+ ServerAccess.logException(e, false);
+ } catch (Exception e) {
+ o.writeBytes("HTTP/1.0 404 ERROR\n\n\n");
+ ServerAccess.logException(e, false);
+ }
+ o.close();
+ } catch (Exception e) {
+ ServerAccess.logException(e, false);
+ }
+ }
+
+ /**
+ * This function splits input array to severasl pieces
+ * from byte[length] splitt to n pieces s is retrunrd byte[n][length/n], except
+ * last piece which contains length%n
+ *
+ * @param input - array to be splitted
+ * @param pieces - to how many pieces it should be broken
+ * @return inidividual pices of original array, which concatet again givs original array
+ */
+ public static byte[][] splitArray(byte[] input, int pieces) {
+ int rest = input.length;
+ int rowLength = rest / pieces;
+ if (rest % pieces > 0) {
+ rowLength++;
+ }
+ if (pieces * rowLength >= rest + rowLength) {
+ pieces--;
+ }
+ int i = 0, j = 0;
+ byte[][] array = new byte[pieces][];
+ array[0] = new byte[rowLength];
+ for (byte b : input) {
+ if (i >= rowLength) {
+ i = 0;
+ array[++j] = new byte[Math.min(rowLength, rest)];
+ }
+ array[j][i++] = b;
+ rest--;
+ }
+ return array;
+ }
+}
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/Bug.java b/tests/test-extensions/net/sourceforge/jnlp/annotations/Bug.java
index ac157d9..ac157d9 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/Bug.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/annotations/Bug.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/KnownToFail.java b/tests/test-extensions/net/sourceforge/jnlp/annotations/KnownToFail.java
index e7c2464..e7c2464 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/KnownToFail.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/annotations/KnownToFail.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/NeedsDisplay.java b/tests/test-extensions/net/sourceforge/jnlp/annotations/NeedsDisplay.java
index e8b9d49..e8b9d49 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/NeedsDisplay.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/annotations/NeedsDisplay.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/TestInBrowsers.java b/tests/test-extensions/net/sourceforge/jnlp/annotations/TestInBrowsers.java
index b4ea2a3..b4ea2a3 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/annotations/TestInBrowsers.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/annotations/TestInBrowsers.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/Browser.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/Browser.java
index 81db960..81db960 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/Browser.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/Browser.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/BrowserFactory.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/BrowserFactory.java
index 7171afc..7171afc 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/BrowserFactory.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/BrowserFactory.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/BrowserTest.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/BrowserTest.java
index 232b63a..232b63a 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/BrowserTest.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/BrowserTest.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/BrowserTestRunner.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/BrowserTestRunner.java
index 36350e8..36350e8 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/BrowserTestRunner.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/BrowserTestRunner.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/Browsers.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/Browsers.java
index 8d85241..8d85241 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/Browsers.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/Browsers.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Chrome.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Chrome.java
index 2668d65..2668d65 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Chrome.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Chrome.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Chromium.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Chromium.java
index 616d38a..616d38a 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Chromium.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Chromium.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Epiphany.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Epiphany.java
index 3adc3d8..3adc3d8 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Epiphany.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Epiphany.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Firefox.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Firefox.java
index 8458bce..8458bce 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Firefox.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Firefox.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/LinuxBrowser.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/LinuxBrowser.java
index edc95e0..edc95e0 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/LinuxBrowser.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/LinuxBrowser.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Midory.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Midory.java
index fc563fb..fc563fb 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Midory.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Midory.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/MozillaFamilyLinuxBrowser.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/MozillaFamilyLinuxBrowser.java
index c8d1e85..c8d1e85 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/MozillaFamilyLinuxBrowser.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/MozillaFamilyLinuxBrowser.java
diff --git a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Opera.java b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Opera.java
index edbf57f..edbf57f 100644
--- a/tests/netx/jnlp_testsengine/net/sourceforge/jnlp/browsertesting/browsers/Opera.java
+++ b/tests/test-extensions/net/sourceforge/jnlp/browsertesting/browsers/Opera.java