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>