<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<project name="Publish Performance Results" default="move-results" basedir=".">

    <property name="script.version" value="1.0.5"/>
    <property environment="env"/>
	
    <!-- Properties for internal purpose-->
    <property name="results.repository" value="guest@nbperf.cz.oracle.com:/space/results"/>
    <property name="results.repository.password" value="guest"/>
    <property name="results.dir" value="results"/>
    <property name="results.file.unit" value="results-unit.zip"/>
    <property name="results.file.functional" value="results-functional.zip"/>
    <property name="workspace.dir" location="${basedir}/../../../../.."/>
    <property name="ergonomics.dir" location="${workspace.dir}/../ergonomics"/>
    <property name="testdistribution.dir" location="${ergonomics.dir}/performance"/>
    <property name="othertests.dir" value="${ergonomics.dir}"/>
    <loadfile srcFile="${workspace.dir}/build.number" property="perftestrun.buildnumber"/>

    <target name="move-results">
        <delete dir="${results.dir}"/>
        <mkdir dir="${results.dir}"/>
        <exec executable="hostname" outputproperty="host.name"/>
        <property name="results.string" value="xtr-netbeans_Dev-${perftestrun.buildnumber}-${host.name}-${java.version}-${perftestrun.buildnumber}"/>
        <echo>
            workspace.dir=${workspace.dir}
            ergonomics.dir=${ergonomics.dir}
            perftestrun.buildnumber=${perftestrun.buildnumber}
            testdistribution.dir=${testdistribution.dir}
            results.string=${results.string}
        </echo>
        <antcall target="move-results-functional"/>
        <!-- <antcall target="move-results-other"/> -->
        <antcall target="move-results-unit"/>
        <echo message="Script version: ${script.version}"/>
    </target>
    
    <target name="move-results-functional"  unless="testtype.unit">
        <zip destfile="${results.dir}/${results.string}-${results.file.functional}"
             basedir="${testdistribution.dir}"
             includes="build/test/qa-functional/results/*.xml, j2se/build/test/qa-functional/results/*.xml, j2ee/build/test/qa-functional/results/*.xml, web/build/test/qa-functional/results/*.xml,  enterprise/build/test/qa-functional/results/*.xml, languages/build/test/qa-functional/results/*.xml,  mobility/build/test/qa-functional/results/*.xml, j2se/build/test/qa-functional/work/allPerformance.xml, j2ee/build/test/qa-functional/work/allPerformance.xml, web/build/test/qa-functional/work/allPerformance.xml,  enterprise/build/test/qa-functional/work/allPerformance.xml, languages/build/test/qa-functional/work/allPerformance.xml,  mobility/build/test/qa-functional/work/allPerformance.xml, build/test/qa-functional/work/allPerformance.xml" 
        />
        <scp file="${results.dir}/${results.string}-${results.file.functional}"
             todir="${results.repository}"
             trust="true"
             password="${results.repository.password}"/>

    </target>
    
    <target name="move-results-unit"  unless="testtype.functional">
        <zip destfile="${results.dir}/${results.string}-${results.file.unit}"
             basedir="${testdistribution.dir}"
             includes="build/test/unit/results/*.xml, j2se/build/test/unit/results/*.xml, j2ee/build/test/unit/results/*.xml, web/build/test/unit/results/*.xml,  enterprise/build/test/unit/results/*.xml, languages/build/test/unit/results/*.xml,  mobility/build/test/unit/results/*.xml, j2se/build/test/unit/work/allPerformance.xml, j2ee/build/test/unit/work/allPerformance.xml, web/build/test/unit/work/allPerformance.xml,  enterprise/build/test/unit/work/allPerformance.xml, languages/build/test/unit/work/allPerformance.xml,  mobility/build/test/unit/work/allPerformance.xml, build/test/unit/work/allPerformance.xml" 
        />
        <scp file="${results.dir}/${results.string}-${results.file.unit}"
             todir="${results.repository}"
             trust="true"
             password="${results.repository.password}"/>
    </target>

    <target name="move-results-other">
        <zip destfile="${results.dir}/${results.string}-other-${results.file.unit}"
             basedir="${othertests.dir}"
             includes="refactoring.java/build/test/unit/results/*.xml, performance/build/test/unit/results/*.xml, performance/build/test/unit/work/allPerformance.xml, refactoring.java/build/test/unit/work/allPerformance.xml"
        /> 
        <scp file="${results.dir}/${results.string}-other-${results.file.unit}"
             todir="${results.repository}"
             trust="true"
             password="${results.repository.password}"/>
    </target>
</project>