You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by sm...@apache.org on 2007/05/18 06:39:35 UTC

svn commit: r539255 - in /harmony/enhanced/buildtest/branches/2.0: build.xml scripts/cc-exec-adaptor.xml scripts/publisher.xml

Author: smishura
Date: Thu May 17 21:39:33 2007
New Revision: 539255

URL: http://svn.apache.org/viewvc?view=rev&rev=539255
Log:
Apply patch with fixes for default publisher from HARMONY-3501(BT Infra Improvment)

Modified:
    harmony/enhanced/buildtest/branches/2.0/build.xml
    harmony/enhanced/buildtest/branches/2.0/scripts/cc-exec-adaptor.xml
    harmony/enhanced/buildtest/branches/2.0/scripts/publisher.xml

Modified: harmony/enhanced/buildtest/branches/2.0/build.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/build.xml?view=diff&rev=539255&r1=539254&r2=539255
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/build.xml (original)
+++ harmony/enhanced/buildtest/branches/2.0/build.xml Thu May 17 21:39:33 2007
@@ -129,6 +129,27 @@
         </java>
     </target>
 
+    <target name="test-mail" depends="define-ant-contrib">
+        <xmlproperty file="${scripts.dir}/parameters.xml"
+            collapseAttributes="true" 
+            semanticAttributes="true"
+            prefix="framework"
+        />
+        <ant antfile="${scripts.dir}/cc-exec-adaptor.xml">
+            <property name="suite.name" value="test-mail"/>
+            <property name="test-mail.parameters.cc.from" value="Test-Mail@Test.Com"/>
+            <property name="test-mail.parameters.cc.summary" 
+                      value="${root.dir}/.summary.txt"/>
+            <property name="test-mail.parameters.cc.message" 
+                      value="${root.dir}/README.txt"/>
+            <property name="test-mail.parameters.cc.attachs" 
+                      value="${root.dir}/README.txt,${root.dir}/build.xml"/>
+
+            <property name="mail.execution.status" value="TEST MAIL"/>
+            <property name="framework.parameters.usemail.force" value="true"/>
+        </ant>
+    </target>
+
     <target name="clean" description="clean" depends="init-framework, clean-suites"/>
 
     <target name="distclean" description="distclean">

Modified: harmony/enhanced/buildtest/branches/2.0/scripts/cc-exec-adaptor.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/scripts/cc-exec-adaptor.xml?view=diff&rev=539255&r1=539254&r2=539255
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/scripts/cc-exec-adaptor.xml (original)
+++ harmony/enhanced/buildtest/branches/2.0/scripts/cc-exec-adaptor.xml Thu May 17 21:39:33 2007
@@ -18,7 +18,7 @@
 <!-- ====================================================================== 
                           CC to Ant Adaptors Execution 
      ====================================================================== -->
-<project name="cc-ant" default="call" basedir=".">
+<project name="cc-ant" default="cc-publish" basedir=".">
 
     <property file="${properties.dump.file}"/>
     <property file="${framework.properties.file}"/>
@@ -39,23 +39,80 @@
             depends="define-ant-contrib"
             if="framework.parameters.usemail">
         <dirname property="publisher.dir" file="${publisher.location}"/>
-        <log message="Calling Publisher ${publisher.location} at ${publisher.dir} for ${suite.name}"/>
+        <log message="Calling Custom Publisher ${publisher.location} at ${publisher.dir} for ${suite.name}"/>
         <ant dir="${publisher.dir}" 
              antfile="${publisher.location}" 
              target="publish"
              inheritAll="true"/>
     </target>
-
+    
     <!-- Called from CC to launch the default ant publisher for test suite -->
     <target name="cc-publish" 
             depends="define-ant-contrib"
             if="framework.parameters.usemail">
-        <dirname property="publisher.dir" file="${publisher.location}"/>
-        <log message="Calling Publisher ${publisher.location} at ${publisher.dir} for ${suite.name}"/>
-        <ant dir="${publisher.dir}" 
-             antfile="${publisher.location}" 
+
+        <!-- set up mail message file (if it was defined by test suite) -->
+        <get-parameter-value
+            property="mail.message.file" 
+            parameter="${suite.name}.parameters.cc.message"/>
+        <!-- set up mail message summary file
+             (if it was defined by test suite) -->
+        <get-parameter-value
+            property="mail.summary.file" 
+            parameter="${suite.name}.parameters.cc.summary"/>
+        <!-- set up mail attachments -->
+        <get-parameter-value
+            property="mail.attach.files" 
+            parameter="${suite.name}.parameters.cc.attachs"/>
+
+        <!-- compose message from CC logs (it there is no mail.message.file) -->
+        <runtarget target="-compose-message-file"/>
+
+        <!-- do mail notifiaction -->
+        <ant dir="${scripts.dir}" 
+             antfile="${scripts.dir}/publisher.xml" 
              target="publish"
-             inheritAll="true"/>
+             inheritAll="false">
+            <!-- if there are Test Suite specific 'to' and 'from' addresses
+                 use them for mailing -->
+            <propertyset>
+                <propertyref name="${suite.name}.parameters.cc.to"/>
+                <propertyref name="${suite.name}.parameters.cc.from"/>
+                <globmapper from="${suite.name}.parameters.cc.*" to="framework.parameters.usemail.*"/>
+            </propertyset>
+            <propertyset>
+                <propertyref name="thisbuildsuccessful"/>
+                <propertyref name="lastbuildsuccessful"/>
+                <propertyref regex="framework.parameters.*"/>
+                <propertyref regex="mail.*"/>
+            </propertyset>
+        </ant>
+        
     </target>
+
+    <!-- compose message from CC logs -->
+    <target name="-compose-message-file"
+            unless="mail.message.file">
+        <property name="cc.xsl.files.dir"
+                  value="${ext.cc.location}/webapps/cruisecontrol/xsl"/>
+        <property name="mail.message.file"
+                  value="${temp.files.dir}/${suite.name}-email-message.txt"/>
+        <xslt basedir="${scripts.dir}/xslt"
+              in="${logdir}/${logfile}"
+              style="${scripts.dir}/xslt/br.xsl"
+              out="${mail.message.file}"
+              classpath="${ext.xalan.location}:${ext.cc.location}/lib/serializer-2.7.0.jar"/>
+    </target>
+
+    <!-- places the value of the parameter to the provided property -->
+    <macrodef name="get-parameter-value">
+        <attribute name="parameter"/>
+        <attribute name="property"/>
+        <sequential>
+            <condition property="@{property}" value="${@{parameter}}">
+                <isset property="@{parameter}"/>
+            </condition>
+        </sequential>
+    </macrodef>
 
 </project>

Modified: harmony/enhanced/buildtest/branches/2.0/scripts/publisher.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/buildtest/branches/2.0/scripts/publisher.xml?view=diff&rev=539255&r1=539254&r2=539255
==============================================================================
--- harmony/enhanced/buildtest/branches/2.0/scripts/publisher.xml (original)
+++ harmony/enhanced/buildtest/branches/2.0/scripts/publisher.xml Thu May 17 21:39:33 2007
@@ -18,7 +18,7 @@
 <!-- ====================================================================== 
                         Status Publisher Implementation
      ====================================================================== -->
-<project name="publisher" default="run" basedir=".">
+<project name="publisher" default="publish" basedir=".">
 
     <!-- check whether we should send notification or not -->
     <condition property="do.mail">
@@ -36,37 +36,88 @@
             </or>
         </and>
     </condition>
+    <condition property="do.mail">
+        <isset property="framework.parameters.usemail.force"/>
+    </condition>
 
-    <condition property="execution.status"
+    <condition property="mail.execution.status"
                value="BUILD PASSED"
                else="BUILD FAILED">
         <istrue value="${thisbuildsuccessful}"/>
     </condition>
 
     <property name="mail.subject.line"
-              value="${framework.parameters.usemail.subject.prefix} ${execution.status} ${os.name} ${os.arch}: ${suite.name}"/>
+              value="${framework.parameters.usemail.subject.prefix} ${mail.execution.status} ${os.name} ${os.arch}: ${suite.name}"/>
 
     <!-- implement publisher interface -->
-    <target name="publish" if="do.mail" depends="-compose-message">
-        <mail mailhost="${framework.parameters.usemail}"
-              tolist="${framework.parameters.usemail.to}"
-              from="${framework.parameters.usemail.from}"
-              subject="${mail.subject.line}">
-            <message src="${temp.files.dir}/${suite.name}-email-message.txt"/>
-        </mail>
-    </target>
+    <target name="publish" if="do.mail">
+        <log message=""/>
+        <log message="    Sending mail notification:"/>
+        <log message="        smtp: '${framework.parameters.usemail}'"/>
+        <log message="        to: '${framework.parameters.usemail.to}'"/>
+        <log message="        from: '${framework.parameters.usemail.from}'"/>
+        <log message="    Files to attach: ${mail.attach.files}"/>
+        <log message=""/>
 
-    <target name="-compose-message" if="do.mail">
-        <property name="cc.xsl.files.dir"
-                  value="${ext.cc.location}/webapps/cruisecontrol/xsl"/>
-        <property name="transformed.file"
-                  value="${temp.files.dir}/${suite.name}-email-message.txt"/>
-        <xslt basedir="${scripts.dir}/xslt"
-              in="${logdir}/${logfile}"
-              style="${scripts.dir}/xslt/br.xsl"
-              out="${transformed.file}"
-              classpath="${ext.xalan.location}:${ext.cc.location}/lib/serializer-2.7.0.jar"/>
+        <trycatch property="mail.sending.exception">
+        <try>
+            <if>
+                <available file="${mail.summary.file}"/>
+            <then>
+                <!-- 'if' suppresses 'nonexistence' warning -->
+                <loadfile property="mail.summary" 
+                          srcFile="${mail.summary.file}" 
+                          failonerror="false"/>
+            </then>
+            </if>
+            <!-- summary by default -->
+            <property name="mail.summary" value=""/>
+            <loadfile property="mail.message" 
+                      srcFile="${mail.message.file}" 
+                      failonerror="false"/>
+            <!-- empty message by default -->
+            <property name="mail.message" value=""/>
+            <!-- no attachments by default -->
+            <property name="mail.attach.files" value=""/>
+            <mail mailhost="${framework.parameters.usemail}"
+                  tolist="${framework.parameters.usemail.to}"
+                  from="${framework.parameters.usemail.from}"
+                  subject="${mail.subject.line}"
+                  files="${mail.attach.files}">
+                <message>${mail.summary}${mail.message}</message>
+            </mail>
+        </try>
+        <catch>
+            <echo>
+--------
+WARNING: Mail notification sending for Test Suite '${suite.name}' FAILED
+-------- with the following exception:
+${mail.sending.exception}
+
+</echo>
+            <error-notify>
+Mail Notification Sending failed with the following message: ${mail.sending.exception}
+
+----------
+Test Suite '${suite.name}' execution status: ${mail.execution.status}
+            </error-notify>
+        </catch>
+        </trycatch>
     </target>
+
+    <macrodef name="error-notify">
+        <text name="text"/>
+        <sequential>
+            <mail mailhost="${framework.parameters.usemail}"
+                  tolist="${framework.parameters.usemail.to}"
+                  from="${framework.parameters.usemail.from}"
+                  subject="${mail.subject.line}">
+                <message>
+@{text}
+                </message>
+            </mail>
+        </sequential>
+    </macrodef>
 
 </project>