You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2017/01/16 17:00:36 UTC
svn commit: r1779064 - /axis/axis2/java/core/branches/hermetic-tests/pom.xml
Author: veithen
Date: Mon Jan 16 17:00:36 2017
New Revision: 1779064
URL: http://svn.apache.org/viewvc?rev=1779064&view=rev
Log:
Create infrastructure to enforce test hermeticity.
Modified:
axis/axis2/java/core/branches/hermetic-tests/pom.xml
Modified: axis/axis2/java/core/branches/hermetic-tests/pom.xml
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/pom.xml?rev=1779064&r1=1779063&r2=1779064&view=diff
==============================================================================
--- axis/axis2/java/core/branches/hermetic-tests/pom.xml (original)
+++ axis/axis2/java/core/branches/hermetic-tests/pom.xml Mon Jan 16 17:00:36 2017
@@ -559,6 +559,8 @@
we can't use the project.version variable directly because of the dot. See
http://maven.apache.org/plugins/maven-site-plugin/examples/creating-content.html -->
<axis2_version>${project.version}</axis2_version>
+
+ <hermeticTests>true</hermeticTests>
</properties>
<pluginRepositories>
<pluginRepository>
@@ -1322,6 +1324,7 @@
<value>${project.build.directory}/tmp</value>
</property>
</systemProperties>
+ <argLine>${securityManagerArgs}</argLine>
</configuration>
</plugin>
<plugin>
@@ -1371,6 +1374,51 @@
]]></script>
</scripts>
</configuration>
+ </execution>
+ <execution>
+ <id>generate-policy-file</id>
+ <phase>generate-test-resources</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <scripts>
+ <script><![CDATA[
+ import static groovy.json.StringEscapeUtils.escapeJava
+
+ if (project.packaging != 'pom' && project.properties['hermeticTests'] == 'true') {
+ new File(project.build.directory, "test.policy").withWriter { out ->
+ out.println "grant {"
+ out.println """ permission java.io.FilePermission "${escapeJava(System.properties.'java.home')}\${/}-", "read";"""
+ out.println """ permission java.io.FilePermission "${escapeJava(session.settings.localRepository)}\${/}-", "read";"""
+ session.sortedProjects.each({
+ out.println """ permission java.io.FilePermission "${escapeJava(it.build.directory)}\${/}*", "read";"""
+ })
+ out.println """ permission java.io.FilePermission "${escapeJava(project.basedir.absolutePath)}", "read";"""
+ out.println """ permission java.io.FilePermission "${escapeJava(project.basedir.absolutePath)}\${/}-", "read";"""
+ out.println """ permission java.io.FilePermission "${escapeJava(project.build.directory)}", "read,write";"""
+ out.println """ permission java.io.FilePermission "${escapeJava(project.build.directory)}\${/}-", "read,write,delete";"""
+ out.println """ permission java.lang.RuntimePermission "*";"""
+ out.println """ permission java.lang.reflect.ReflectPermission "*";"""
+ out.println """ permission java.net.NetPermission "*";"""
+ out.println """ permission java.net.SocketPermission "localhost", "connect,listen,accept,resolve";"""
+ out.println """ permission java.security.SecurityPermission "*";"""
+ out.println """ permission java.util.PropertyPermission "*", "read,write";"""
+ out.println """ permission javax.management.MBeanPermission "*", "*";"""
+ out.println """ permission javax.management.MBeanServerPermission "*";"""
+ out.println """ permission javax.management.MBeanTrustPermission "*";"""
+ out.println """ permission javax.xml.ws.WebServicePermission "publishEndpoint";"""
+ out.println """ permission org.osgi.framework.AdminPermission "*", "*";"""
+ out.println """ permission org.osgi.framework.ServicePermission "*", "register,get";"""
+ out.println "};"
+ }
+ project.properties['securityManagerArgs'] = '-Djava.security.manager -Djava.security.policy=' + project.build.directory.replace('\\', '/') + '/test.policy'
+ } else {
+ project.properties['securityManagerArgs'] = ''
+ }
+ ]]></script>
+ </scripts>
+ </configuration>
</execution>
<execution>
<id>prepare-site</id>