<?xml version="1.0" standalone="no"?>
<!--

  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="mustella" default="run" basedir=".">

    <!-- Load the local properties.  Need sdk.dir to load the Flex config env vars.  -->
    <property name="local_properties" value="local.properties" />
    <property file="${basedir}/${local_properties}" />
    <property name="sdk.dir" value="${basedir}/.." />
    
    <property file="${sdk.dir}/env.properties"/>
    <property environment="env"/>

    <pathconvert property="mustella.dir" dirsep="/" >
       <path location="${basedir}" />
    </pathconvert>

    <property name="tmp.dir" value="${mustella.dir}/tmp" />

    <property name="feature" value=""/>
    <property file="${basedir}/properties/${feature}.properties" />
    <property name="debug" value="false" />
    <property name="strict" value="true" />
    <property name="coach" value="true" />
    <property name="benchmark" value="true" />
    <property name="portNumber" value="80" />
    
    <!-- AJH shut off excludes for now -->
    <property name="excludes_done" value="true" />
    
    <property name="HOMEPATH" value="${env.HOMEDRIVE}${env.HOMEPATH}" />

    <property name="mustella.swc.dir" value="${mustella.dir}" />
    <property name="mustella.swc.name" value="mustella.swc" />

    <!-- default version file -->
    <property name="build.version.file" value="successfulBuild.properties" />
    <property prefix="on_disk" file="${mustella.dir}/${build.version.file}" />
    <property name="external_properties" value="external.properties" />

    <property file="${mustella.dir}/${external_properties}" />
    <property file="${mustella.dir}/build.properties" />

    <!-- must have a workable default for this prefix. Override in local.properties or on cmd line-->
    <property name="apollo_transform_prefix" value="zzaird_" />
    <property name="apollo_transform_prefix2" value="wwaird_" />

    <property name="apollo_transform_template" value="${mustella.dir}/Assets/AirTransform/WindowedAppTemplate.mxml" />
    <property name="previous.generated.testfiles" value="**/*.swf,**/*.output,**/SWFs/${apollo_transform_prefix}*.mxml,**/swfs/${apollo_transform_prefix}*.mxml,**/SWFs/${apollo_transform_prefix2}*.mxml,**/swfs/${apollo_transform_prefix2}*.mxml" />
    
    <property name="sdk.mustella.dir" value="${mustella.dir}/tests" />
    <!-- 
        This directory doesn't exist in the source kit so make it although it would be better
        to make sure no targets that the source kit uses expect this directory to exist.
    -->
    <mkdir dir="${sdk.mustella.dir}" />

    <property name="root.dir" value="${basedir}/.."/>
    <property name="frameworks" value="${sdk.dir}/frameworks" />
    <property file="${mustella.dir}/local.properties" />
    <property name="mustellagen.dir" value="${mustella.dir}/gen" />
    <property name="sdk.bin.dir" value="${sdk.dir}/bin" />

    <property name="branch" value="trunk"/>

    <property name="compc.dir" value="${sdk.dir}/bin" />
    <property name="compc" value="" />
    <property name="mxmlc.args" value="-debug -define=CONFIG::skaha,false -compiler.fonts.managers=flash.fonts.JREFontManager,flash.fonts.AFEFontManager,flash.fonts.BatikFontManager,flash.fonts.CFFFontManager" />
    <property name="asclasspath" value=""/>
    <property name="aschartspath" value="."/>
    <property name="frameworks.dir1" value="${frameworks}" />
    <property name="librarypath" value="${frameworks.dir1}/libs/framework.swc,${frameworks.dir1}/libs/charts.swc,${frameworks.dir1}/libs/rpc.swc"/>
    <!-- this seems to passed to CompileMustellaSwc but unused -->
    <!-- probably the flex-config.xml file used determines which playerglobal.swc is used -->
    <property name="external.librarypath" value="${env.PLAYERGLOBAL_HOME}/${playerglobal.version}/playerglobal.swc"/>
    <property name="rsl" value="" />

    <property name="coach" value="true" />
    <property name="strict" value="true" />
    <property name="exit_on_compile_error" value="" />

    <property name="cygwinshell" value="/cygwin/bin/sh.exe" />
    <property name="buildURL" value="true" />

    <property name="classes.dir" value="${mustella.dir}/classes" />
    <property name="debug" value="false" />

    <property name="insert_results" value="" />
    <property name="run_this_script" value="" />

    <!-- the old approach, compile in the excludes, not generally used -->
    <property name="exclude_source_path" value="" />
    <property name="default.excludes.asfile" value="CurrentExcludeList.as" />
    <property name="default.excludes.asfiledir" value="."/>
    <property name="default.excludes.swcclass" value="CurrentExcludeList" />
    <property name="default.excludes.swc" value="CurrentExcludeList.swc" />

    <property name="excludelibrarypath" value="" />

    <property name="fork_compile" value="true" />

    <condition property="browser" value="${env.PROGRAMFILES}/Internet Explorer/iexplore">
        <isset property="env.PROGRAMFILES"/>
    </condition>

    <condition property="browser" value="${env.ProgramFiles}/Internet Explorer/iexplore">
        <isset property="env.ProgramFiles"/>
    </condition>

    <property name="player.timeout" value="45" />

    <!-- SDK jar files -->
    <path id="sdk.lib.classpath">
        <fileset dir="${sdk.dir}/lib">
            <include name="*.jar"/>
        </fileset>
    </path>

    <path id="flex.test.classpath">
        <pathelement location="${classes.dir}"/>
        <fileset dir="${sdk.dir}/lib">
          <include name="*.jar" />
        </fileset>
    </path>

    <property name="require_this_directory_too" value="" />

    <condition property="adl_extras" value="-screensize 640x960:640x960 -profile mobileDevice -XscreenDPI 240" >
        <istrue value="${run_mobile_tests}" />
    </condition>
    
    <!-- host_os_name (formerly real_os_name) is the machine which is compiling. -->
    <condition property="host_os_name" value="mac" >
        <os family="mac" />
    </condition>

    <condition property="short_os_name" value="mac" >
        <os family="mac" />
    </condition>

    <condition property="host_os_name" value="windows" >
        <os family="windows" />
    </condition>

    <condition property="short_os_name" value="win" >
        <os family="windows" />
    </condition>

    <condition property="host_os_name" value="Linux" >
        <os name="Linux" />
    </condition>    

    <!-- Mobile stuff will be changed by handle_mobile_config later if it's a mobile run. -->
    <property name="target_os_name" value="${host_os_name}" />

    <condition property="exclude_filename" value="${mustella.dir}/tests/ExcludeListWin.txt" >
        <and>
            <equals arg1="${target_os_name}" arg2="windows" />
            <not>
                <istrue value="${use_apollo}" />
            </not>
        </and>
    </condition>

    <condition property="exclude_filename" value="${mustella.dir}/tests/ExcludeListMac.txt" >
        <and>
            <equals arg1="${target_os_name}" arg2="mac" />
            <not>
                <istrue value="${use_apollo}" />
            </not>
        </and>
    </condition>
    
    <condition property="exclude_filename" value="${mustella.dir}/tests/ExcludeListMacAIR.txt" >
        <and>
            <equals arg1="${target_os_name}" arg2="mac" />
            <istrue value="${use_apollo}" />
        </and>
    </condition>

    <condition property="exclude_filename" value="${mustella.dir}/tests/ExcludeListWinAIR.txt" >
        <and>
            <equals arg1="${target_os_name}" arg2="windows" />
            <istrue value="${use_apollo}" />
        </and>
    </condition>

    <condition property="exclude_filename" value="${mustella.dir}/tests/ExcludeListLinux.txt" >
        <equals arg1="${target_os_name}" arg2="Linux" />
    </condition>

    <!-- Whether a run will spawn its own baseline server.  With multiple runs on a machine, they will collide. -->
    <property name="prevent_baseline_server" value="${prevent_baseline_server}" />
    
    <!-- This does things like setting up mxmlc.  -->
    <target name="get_os" >
        <condition property="is_mac" value="true" >
            <equals arg1="${host_os_name}" arg2="mac" />
        </condition>
        <condition property="is_win" value="true" >
            <or>
                <equals arg1="${host_os_name}" arg2="windows" />
                <equals arg1="${host_os_name}" arg2="win" />
            </or>
        </condition>
        <condition property="is_linux" value="true" >
            <equals arg1="${host_os_name}" arg2="Linux" />
        </condition>
    </target>

    <!-- unzip, needed for installation, varies on windows -->
    <condition property="unzip" value="/cygwin/bin/unzip.exe" >
    <os family="windows" />
    </condition>

    <!-- ... but seems the same on mac & Linux -->
    <property name="unzip" value="/usr/bin/unzip" />

    <condition property="branch_name" value="Mainline" >
    <not>
        <isset property="branch_name" />
    </not>
    </condition>

    <!-- browser_name represents the runtime. -->
    <condition property="browser_name" value="Standalone" >
    <not>
        <istrue value="${use_browser}" />
    </not>
    </condition>

    <!-- the local.properties file has to be there for the subsequent
         loadfile call. Create it if needed -->

    <!-- filtering/standarizing of browser_name here   -->
    <loadfile failonerror="false" srcfile="${mustella.dir}/${local_properties}" property="browser_name" >
        <filterchain>
            <linecontainsregexp>
                <regexp pattern="^browser=.*$"/>
            </linecontainsregexp>
            <tokenfilter>
                <replaceregex pattern=".*/" replace=""  flags="g"/>
                <replaceregex pattern=".exe" replace=""  flags="g"/>
                <replaceregex pattern='\"' replace=""  flags="g"/>
            </tokenfilter>
        </filterchain>
        </loadfile>

    <!-- could be trouble later. We don't default well. -->
    <condition property="browser_name_not_set" value="true" >
        <and>
        <not>
            <isset property="browser_name"/>
        </not>
            <istrue value="${use_browser}" />
        </and>
    </condition>

    <condition property="browser_name" value="iexplore" >
        <and>
            <istrue value="${browser_name_not_set}" />
            <contains string="${browser}" substring="iexplore" casesensitive="false" />
        </and>
    </condition>

    <condition property="excludes_done" value="true" >
        <istrue value="${skip_exclude}" />
    </condition>

    <condition property="config_id" value="1" >
        <and>
            <istrue value="${excludes_done}" />
            <equals arg1="-1" arg2="${current.run.id}" />
        </and>
    </condition>

    <condition property="exclude_ids" value="(1)" >
        <and>
            <istrue value="${excludes_done}" />
            <equals arg1="-1" arg2="${current.run.id}" />
        </and>
    </condition>

    <!-- don't try fetching a config ID if we've decided we don't care about excludes -->
    <condition property="config_id" value="1" >
        <istrue value="${skip_exclude}" />
    </condition>

    <!-- run type values. (stored in db) -->
    <condition property="run_type" value="swfloader" >
        <isset property="shell_swf" />
    </condition>

    <condition property="run_type" value="" >
        <not>
            <isset property="run_type" />
        </not>
    </condition>

    <condition property="vetting" value="" >
        <or>
            <equals arg1="${run_type}" arg2=""/>
            <not>
                <isset property="run_type" />
            </not>
        </or>
    </condition>

    <!-- Only recompile mustella.swc if it doesn't exist or if any of the its .as files have changed. -->
    <uptodate property="compilemustellaswc.notRequired" targetfile="${mustella.dir}/${mustella.swc.name}" >
        <srcfiles dir="${mustella.dir}/as3/src/mustella" includes="**/*.as"/>
    </uptodate>
    
    <condition property="vetting" value="Vetting" >
        <equals arg1="${run_type}" arg2="mini"/>
    </condition>

    <condition property="vetting" value="Tiered" >
        <equals arg1="${run_type}" arg2="tier1"/>
    </condition>

    <condition property="vetting" value="Cyclone" >
        <equals arg1="${run_type}" arg2="cyclone"/>
    </condition>

    <condition property="shell_swf" value="" >
        <not>
            <isset property="${shell_swf}" />
        </not>
    </condition>

    <condition property="shell_swf_prefix" value="file:///" >
        <not>
            <isset property="${shell_swf_prefix}" />
        </not>
    </condition>

    <condition property="version_fetcher" value="${mustella.dir}/versionAIR.swf" >
        <istrue value="${use_apollo}" />
    </condition>

    <property name="version_fetcher" value="${mustella.dir}/version.swf" />

    <condition property="exclude_mixin" value="ExcludeFileLocationApollo" >
        <istrue value="${use_apollo}" />
    </condition>

    <property name="exclude_mixin" value="ExcludeFileLocation" />

    <!-- default location of AIR stuff if apollo_location not explicitly set -->
    <property name="apollo_location" value="${env.AIR_HOME}"/>
    <property name="air.sdk.dir" value="${apollo_location}" />



    <condition property="apollo_specific_excludes" value="${apollo_only_excludes}" >
        <istrue value="${use_apollo}" />
    </condition>

    <target name="getExcludeIds" unless="exclude_ids" description="Fetch exclude ids" >
        <taskdef name="excluder" classname="mustella.GetExcludeIdsTask" classpathref="flex.test.classpath"/>
        <excluder property="exclude_ids" type="${exclude_type}" filename="${exclude_filename}" branch="${branch_name}" os="${target_os_name}" browser="${browser_name}" apollo="${use_apollo}" bbrowser="${use_browser}" untilTime="${db_time}" write="false" excludeIds=""/>
    </target>

    <property name="bug_retry" value="" />
    <target name="getExcludes" unless="excludes_done" description="Fetch exclude values from db" >
        <echo>Write excludes file</echo>
        <mkdir dir="${tmp.dir}/flex" />
        <mkdir dir="${mustella.dir}/classes" />
        <delete file="${mustella.dir}/classes/${default.excludes.swc}" />
        <taskdef name="excluder" classname="mustella.GetExcludeIdsTask" classpathref="flex.test.classpath"/>
        <excluder property="exclude_ids" type="${exclude_type}" filename="${exclude_filename}" branch="${branch_name}" os="${target_os_name}" browser="${browser_name}" apollo="${use_apollo}" bbrowser="${use_browser}" untilTime="${db_time}" write="true" excludeIds="" bugByPass="${bug_retry}"/>
        <chmod perm="777" file="${exclude_filename}" />

        <property name="excludes_done" value="true" />
    </target>

    <property name="player.version" value="11.1"/>

    <!-- shorthand, and something javascript will tolerate: -->
    <property name="pversion" value="${player.version}"/>

    <target name="setup_linux" if="is_linux">
        <echo>doing linux setup</echo>
        <property name="mxmlc.exe" value="mxmlc"/>
        <property name="compc.exe" value="compc" />
        <property name="apollo_exe" value="adl" />
        <!-- kind of a guess: -->
        <property name="shell" value="/bin/bash" />
    	
    	<property name="player" value="${env.FLASHPLAYER_DEBUGGER}" />   
    	
        <!-- these values are sort of magic numbers, corresponding to db entries -->
        <property name="auto_exclude_config_value" value="10"/>
        <property name="auto_exclude_bug_id" value="unproven_linux_${fetched_date}" />
    </target>

    <target name="setup_mac" if="is_mac">
        <echo>doing mac setup</echo>
        <property name="mxmlc.exe" value="mxmlc"/>
        <property name="compc.exe" value="compc" />
        <property name="apollo_exe" value="adl" />
        <property name="unzip" value="/usr/bin/unzip" />
        <property name="shell" value="/bin/sh" />

        <property name="player" value="${env.FLASHPLAYER_DEBUGGER}" />
    	
        <!-- these values are sort of magic numbers, corresponding to db entries -->
        <property name="auto_exclude_config_value" value="9"/>
        <property name="auto_exclude_bug_id" value="unproven_mac_${fetched_date}"/>
        <echo>excl config val ${auto_exclude_config_value}</echo>
    </target>

    <target name="setup_windows" if="is_win">
        <echo>doing windows setup</echo>
        <echo>homepath: ${HOMEPATH} </echo>
        <property name="mxmlc.exe" value="mxmlc.bat"/>
        <property name="compc.exe" value="compc.bat" />
        <property name="apollo_exe" value="adl.exe" />
        <property name="shell" value="${cygwinshell}" />
    	
        <property file="${HOMEPATH}/mm.cfg"/>
        <echo>trace output file: ${TraceOutputFileEnable} </echo>

        <property name="player" value="${env.FLASHPLAYER_DEBUGGER}" />
    	
        <!-- these magic numbers correspond to db entries. Relevant for vetting -->
        <condition property="auto_exclude_config_value" value="1">
            <and>
                <isfalse value="${use_apollo}"/>
                <isfalse value="${use_browser}"/>
            </and>
        </condition>
        <condition property="auto_exclude_config_value" value="2">
            <istrue value="${use_apollo}"/>
        </condition>
        <condition property="auto_exclude_config_value" value="5">
            <istrue value="${use_browser}"/>
        </condition>
        <condition property="auto_exclude_bug_id" value="unproven_${fetched_date}">
            <and>
                <isfalse value="${use_apollo}"/>
                <isfalse value="${use_browser}"/>
            </and>
        </condition>
        <condition property="auto_exclude_bug_id" value="unproven_air_${fetched_date}">
            <istrue value="${use_apollo}"/>
        </condition>
        <condition property="auto_exclude_bug_id" value="unproven_browser_${fetched_date}">
            <istrue value="${use_browser}"/>
        </condition>
        <echo> player is ${player} </echo>
    </target>

    <!-- get the database time, used for time syncing in exclude db queries
         The mustella_auto.sh should have called and set this value; a local
             mini_run would need this, so setup depends on db_time  -->

    <!-- AJH
    <condition property="db_time" value="${env.db_time}">
        <isset property="env.db_time" />
    </condition> -->

    <target name="echo-browser" if="use_browser">
        <echo>use_browser=${use_browser}</echo>
        <echo>browser is ${browser}</echo>
    </target>

    <target name="echo-apollo" if="use_apollo">
        <echo>use_apollo=${use_apollo}</echo>
        <echo>apollo_location is ${apollo_location}</echo>        
    </target>

    <target name="echo-info">
        <!-- Summary Info -->
        <echo message="    JAVA_HOME:               ${env.JAVA_HOME}"/>
        <echo message="    FLASHPLAYER_DEBUGGER:    ${env.FLASHPLAYER_DEBUGGER}"/>
        <echo message="    sdk.dir:                 ${sdk.dir}"/>
    
        <echo message="    mustella exclude file:   ${exclude_filename}"/> 
    </target>
    
    <target name="check-fonts">
        <!-- Check that Adobe's embedded font jars exist and fail if any are missing.  -->
        <condition property="fonts.exist">
        <and>
            <available file="${sdk.dir}/lib/external/optional/afe.jar" />
            <available file="${sdk.dir}/lib/external/optional/aglj40.jar" />
            <available file="${sdk.dir}/lib/external/optional/flex-fontkit.jar" />
            <available file="${sdk.dir}/lib/external/optional/rideau.jar" />
         </and>
        </condition>       
        <fail message="Mustella uses embedded fonts.  Please install Adobe's embedded font support." unless="fonts.exist"/>
    </target>
    
    <target name="setup" depends="echo-info,get_date,get_os,setup_mac,setup_windows,setup_linux,db_time,handle_mobile_config,echo-browser,echo-apollo"  description="--> set platform specific properties">
        <!-- antcall target="db_time">
            <param name="no_quote" value="true" />
            <param name="db_time_vetting_file" value="${tmp.dir}/.db.time.mini" />
        </antcall>
        <property file="${tmp.dir}/.db.time.mini" / -->

        <!-- Browser stuff lives in a particular directory, as does apollo.  And they
            are mutually exclusive.
        -->
        
        <echo>player is ${player} </echo>

        <!-- Exclude apollo tests if not using apollo. -->
        <condition property="apollo_excludes" value="apollo/**/*.mxml" >
            <not>
                <istrue value="${use_apollo}" />
            </not>
        </condition>

        <!-- Exclude browser tests if not using browser. -->
        <condition property="browser_excludes" value="browser/**/*.mxml" >
            <not>
                <istrue value="${use_browser}" />
            </not>
        </condition>

        <!-- Exclude apollo tests if using browser. -->
        <condition property="apollo_excludes" value="apollo/**/*.mxml" >
            <istrue value="${use_browser}" />
        </condition>

        <!-- Exclude mobile tests if not using mobile. -->
        <condition property="mobile_excludes" value="mobile/**/*.mxml" >
            <not>
                <istrue value="${run_mobile_tests}" />
            </not>
        </condition>

        <condition property="query.outfile" value="${mustella.dir}/lastrun.html" >
            <equals arg1="${query.outfile}" arg2=""/>
        </condition>

        <condition property="query.outfile" value="${mustella.dir}/lastrun.html" >
            <not>
                <isset property="query.outfile" />
            </not>
        </condition>

        <condition property="require_this_directory" value="**/*.mxml" >
            <equals arg1="${require_this_directory_too}" arg2="" />
        </condition>

        <!-- AJH 
        <taskdef name="excluder" classname="mustella.GetExcludeIdsTask" classpathref="flex.test.classpath"/> -->

        <!-- get file level excludes -->
        <!-- AJH
        <antcall target="excluder_call" >
            <param name="write" value="false"/>
        </antcall> -->

        <!-- antcall target="excludes_by_file" />
        <loadfile srcFile="${mustella.dir}/tmpexc" property="other.mustella.excludes" >
            <filterchain>
            <linecontains negate="true">
            <contains value="rows affected"/>
            </linecontains>
            <striplinebreaks/>
            <replacestring from="/" to="${file.separator}"/>
            </filterchain>
        </loadfile-->

        <fileset id="sdk.mustella.fileset" dir="${sdk.mustella.dir}"
            includes="${sdk.mustella.includes}"
            excludes="${sdk.mustella.excludes},**/SWFs/Components/*.mxml,**/Baselines/,**/baselines/,**/comps/*.mxml,**/Assets/**/*.swf,**/assets/**/*.swf,${browser_excludes},${apollo_excludes},${other.mustella.excludes},${apollo_specific_excludes},${mobile_excludes}" >
            <filename name="${require_this_directory}" />
        </fileset>

        <fileset id="sdk.mustella.swffileset" dir="${sdk.mustella.dir}"
            includes="${sdk.mustella.swfs}"
            excludes="${sdk.mustella.excludes},**/Assets/**/*.swf,**/assets/**/*.swf"/> 

        <property name="showfiles" refid="sdk.mustella.fileset" />
        <echo>fileset: ${showfiles}</echo>
    </target>

    <!-- exclude_filename is not used, since write = false. -->
    <target name="excluder_call" unless="excludes_done" >
        <excluder property="exclude_ids" type="${exclude_type}" filename="${exclude_filename}" branch="${branch_name}" os="${target_os_name}" browser="${browser_name}" apollo="${use_apollo}" bbrowser="${use_browser}" untilTime="${db_time}" write="false" excludeIds=""/>
    </target>

     <property name="sdk.mustella.shellincludes" value="" />
     <property name="sdk.mustella.shellexcludes" value="" />

     <target name="build_shell_set" description=" create list of shell names">

        <!-- this gets all the .sh equiv files -->
        <pathconvert property="shell_file_mxml_equivs" pathsep="," dirsep="/" >
            <path path="${sdk.mustella.includes}" />
            <filtermapper>
                <replacestring from=".mxml" to=".sh"  />
            </filtermapper>
            <map from="${mustella.dir}/" to="" />
        </pathconvert>
        <echo>shell_file_mxml_equivs is ${shell_file_mxml_equivs}</echo>
        
        <!-- this does likewise for the excluded ones -->
        <pathconvert property="shell_file_mxml_excludes" pathsep="," dirsep="/" >
            <path path="${sdk.mustella.excludes}" />
            <filtermapper>
                <replacestring from=".mxml" to=".sh"  />
            </filtermapper>
            <map from="${mustella.dir}/" to="" />
        </pathconvert>
        
        <!-- build the fileset -->
        <fileset id="mxml_equiv_shells" dir="${sdk.mustella.dir}" includes="${shell_file_mxml_equivs}" excludes="${shell_file_mxml_excludes}">
        </fileset>
        <echo>mxml_equiv_shells is ${mxml_equiv_shells}</echo>
              
        <property name="showx0" refid="mxml_equiv_shells" />
        
        <!-- There mayb be NO shell equiv files, but we need to to check for
            a pre_compile.sh file (in a swfs dir). Loop the .mxml files to check for them.
            Not wildly efficient.  -->
        <pathconvert  dirsep="/" property="tmp111a" refid="sdk.mustella.fileset" />
        
        <pathconvert  dirsep="/" property="tmp111" refid="mxml_equiv_shells" />
        
        <!-- call the custom filter. This looks for sibling swf directories with
        pre_compile.sh files in there. Maybe this was possible with filesets, but
        it seemed unreachable -->
        <taskdef name="getSiblingSwfs" classname="mustella.CousinPreCompile" classpathref="flex.test.classpath"/>
        <getSiblingSwfs files="${tmp111}${path.separator}${tmp111a}" root="${sdk.mustella.dir}" property="tmp.sdk.mustella.scripts2"  />
        <echo>tmp.sdk.mustella.scripts2 is ${tmp.sdk.mustella.scripts2}</echo>

     </target>


     <target name="shells" depends="build_shell_set,chmod_shells" description=" Run user-shell scripts associated with these tests">
        <!-- runs shell scripts in the test directories -->
        <!-- make the set space-delimited -->
    
        <pathconvert pathSep=" " dirsep="/" property="sdk.mustella.scripts2" >
            <path path="${tmp.sdk.mustella.scripts2}" />
        </pathconvert>
        <exec  executable="${shell}" failonerror="${exit_on_compile_error}">
            <arg value="${sdk.mustella.dir}/../scripts/shellrunner.sh" />
            <env key="MUSTELLA_SCRIPTS2" value="${sdk.mustella.scripts2}" />
            <env key="SDK_DIR" value="${sdk.dir}" />
            <env key="MUSTELLA_DIR" value="${mustella.dir}" />
            <env key="USE_APOLLO" value="${use_apollo}" />
            <env key="APOLLO_TRANSFORM" value="${apollo_transform}" />
        </exec>
     </target>

     <target name="chmod_shells" depends="build_shell_set" unless="chmod_shells.notRequired"
            description=" make user-defined shells executatble">
        <echo>changing user shell files to executable </echo>
        <chmod perm="555" maxparallel="50">
            <fileset dir="${mustella.dir}" >
                <include name="**/*.sh" />
            </fileset>
        </chmod>
        <chmod perm="555" maxparallel="50">
            <fileset dir="${mustella.dir}">
                <include name="*.sh" />
            </fileset>
        </chmod>
    </target>

    <target name="setHostName"/>

    <!-- property name="run_type" value="" / -->
    <property name="port" value="" />
    <property name="xmlnsVal" value="" />

    <target name="getConfigId" unless="config_id" >
        <taskdef name="getconfigidtask" classname="mustella.GetConfigIdTask" classpathref="flex.test.classpath"/>
        <getconfigidtask  property="config_id" branch="${branch_name}" browser="${browser_name}" apollo="${use_apollo}" os="${target_os_name}"/>
        <echo message="new config_id: ${config_id}" />
    </target>

    <target name="getActualRunId" unless="current.run.id" > 
        <taskdef name="getrunidtask" classname="mustella.GetRunIdTask" classpathref="flex.test.classpath"/>
        <getrunidtask  host="host" property="current.run.id" build="${build.id}" branch="${branch_name}" type="${run_type}" browserName="${browser_name}" config="${config_id}" swf="${version_fetcher}" player="${player}" time="${db_time}" os="${os}" osVersion="${os_version}" arch="${arch}"/>
        <echo message="yo yo yo new id: ${current.run.id}" />
        <echo file="${mustella.dir}/tests/runid.properties" append="false">run_id=${current.run.id}</echo>

        <!-- read the file, make sure we match -->

        <get ignoreerrors="true" src="http://localhost:${portNumber}/runid.properties"  dest="${mustella.dir}/junk1.properties" />
        <property file="${mustella.dir}/junk1.properties" prefix="checkid" />

        <condition property="exit_with_msg" value="true" >
            <and>
                <not>
                    <equals arg1="${current.run.id}" arg2="${checkid.run_id}" />
                </not>
                <not>
                    <equals arg1="${run_type}" arg2="mini" />
                </not>
            </and>
        </condition>

        <antcall target="sendConfigFailure" >
        </antcall>

        <antcall target="do_fail" >
            <param name="msg" value="Local web server not configured correctly!" />
        </antcall>
    </target>

    <!-- This will figure out some device stuff. -->
    <condition property="do_handle_mobile_config" value="true" >
        <istrue value="${run_mobile_tests}" />
    </condition>
    
    <target name="handle_mobile_config" depends="get_mobile_data,device_fail" if="do_handle_mobile_config" >
        <condition property="exclude_filename" value="${mustella.dir}/tests/ExcludeList${os}.txt" >
            <equals arg1="${run_mobile_tests}" arg2="true" />
        </condition>
        
        <echo>os: ${os}</echo>
        <echo>target_os_name: ${target_os_name}</echo>
        <echo>os_version: ${os_version}</echo>
        <echo>device_name: ${device_name}</echo>
        <echo>get_results_from_log: ${get_results_from_log}</echo>
        <echo>step_timeout: ${step_timeout}</echo>
        <echo>run_mobile_tests: ${run_mobile_tests}</echo>
        <echo>use_android_runner: ${use_android_runner}</echo>
        <echo>use_ios_runner: ${use_ios_runner}</echo>
        <echo>use_qnx_runner: ${use_qnx_runner}</echo>
        <echo>exclude_filename: ${exclude_filename}</echo>

        <!-- Look for AIR and Android files. -->
        <available file="${air.sdk.dir}/lib/aot/lib/AIRInterpreter" property="have_air_interpreter" />
        <available file="${air.sdk.dir}/lib/aot/bin/as/arm-apple-darwin9-as" property="have_air_packager" />
        <available file="${air.sdk.dir}/lib/adt.jar" property="have_air_adt_jar" />
        <available file="${runtimeApk}" property="have_air_android_runtime" />
        
        <echo>have_air_interpreter is ${have_air_interpreter}</echo>
        <echo>have_air_packager is ${have_air_packager}</echo>
        <echo>have_air_adt_jar is ${have_air_adt_jar}</echo>
        <echo>have_air_android_runtime is ${have_air_android_runtime}</echo>
        
        <condition property="need_air_android">
            <and>
                <istrue value="${use_android_runner}" />
                <not>
                    <istrue value="${have_air_android_runtime}" />
                </not>
            </and>
        </condition>
        <echo>need_air_android is ${need_air_android}</echo>
        
        <condition property="need_air_ios">
            <and>
                <istrue value="${use_ios_runner}" />
                <or>
                    <not>
                        <istrue value="${have_air_interpreter}" />
                    </not>
                    <not>
                        <istrue value="${have_air_packager}" />
                    </not>
                    <not>
                        <istrue value="${have_air_adt_jar}" />
                    </not>
                </or>
            </and>
        </condition>
        <echo>need_air_ios is ${need_air_ios}</echo>
        
        <condition property="need_to_show_air_ios_fail_message">
            <and>
                <isset property="need_air_ios" />
                <or>
                    <not>
                        <isset property="air.sdk.dir" />
                    </not>
                    <not>
                        <isset property="air.sdk.version" />
                    </not>
                    <not>
                        <isset property="air.sdk.build" />
                    </not>                  
                </or>
            </and>
        </condition>
        <echo>need_to_show_air_ios_fail_message is ${need_to_show_air_ios_fail_message}</echo>
        
        <condition property="need_to_fetch_air_ios">
            <and>
                <isset property="need_air_ios" />
                <isset property="air.sdk.dir" />
                <isset property="air.sdk.build" />
                <isset property="air.sdk.version" />
            </and>
        </condition>
        <echo>need_to_fetch_air_ios is ${need_to_fetch_air_ios}</echo>
        
        <antcall target="show_air_ios_fail_message" />
        <antcall target="show_air_android_fail_message" />
        <antcall target="fetch_air_ios" />
        
        <!-- Look for the QNX SDK if we need to. -->
        <available file="${qnx_sdk_dir}/bin" property="have_qnx_sdk" />
        <condition property="need_qnx_sdk">
            <and>
                <istrue value="${use_qnx_runner}" />

                <not>
                    <istrue value="${have_qnx_sdk}" />
                </not>
            </and>
        </condition>        
        <antcall target="fetch_qnx_sdk" />
    </target>

    <target name="fetch_qnx_sdk" if="need_qnx_sdk">
        <echo>One or more of these is missing:</echo>
        <echo>  ${qnx_sdk_dir}</echo>
        <fail message="A QNX SDK needs to be set correctly in the qnx_sdk_dir variable in local.properties." />
    </target>

    <target name="show_air_android_fail_message" if="need_air_android">
        <echo>Required for Android run: ${runtimeApk}</echo>
        <fail message="runtimeApk needs to be set to an AIR Runtime.apk file in local.properties." />
    </target>

    <target name="show_air_ios_fail_message" if="need_to_show_air_ios_fail_message">
        <echo>One or more of these is missing:</echo>
        <echo>  Required for iOs run: ${air.sdk.dir}/lib/aot/lib/AIRInterpreter</echo>
        <echo>  Required for iOs run: ${air.sdk.dir}/lib/aot/bin/as/arm-apple-darwin9-as</echo>
        <echo>  Required for iOs run: ${air.sdk.dir}/lib/adt.jar</echo>
        <fail message="An AIR SDK for iOS needs to be set in local.properties." />
    </target>

    <target name="fetch_air_ios" if="need_to_fetch_air_ios">
        <!-- Do the fetch from here *only* if air.sdk.version is set in local.properties. -->
        <exec executable="${shell}">
            <arg value="${mustella.dir}/scripts/fetch_air_build.sh" />
            <arg value="${mustella.dir}" />
            <arg value="${air.sdk.dir}" />
            <arg value="${air.sdk.version}" />
            <arg value="${air.sdk.build}" />                        
            <arg value="${realUser}" />
            <arg value="${realPwd}" />
        </exec>
    </target>

    <!-- Get mobile stuff. -->
    <target name="get_mobile_data" if="do_handle_mobile_config">
        <taskdef name="getdevicespecstask" classname="mustella.GetDeviceSpecsTask" classpathref="flex.test.classpath"/>
        <getdevicespecstask androidSdk="${android_sdk}" runId="${run_id}" deviceName="${device_name}" mustellaDir="${mustella.dir}" />      
    </target>

    <!-- Fail if we could not get a version which we needed. -->
    <target name="device_fail" if="get_mobile_data_fail">
        <fail message="Some kind of device-related failure occurred."/>
    </target>

    <!-- not sure about that unless -->
    <target name="getRunId" unless="current.run.id" depends="setbuildID,setHostName,getConfigId,getActualRunId"/>

    <target name="invokeVersion" depends="get_os,setup_mac,setup_windows,setup_linux" description="Fetch the flex version">
        <exec executable="${sdk.dir}/bin/${mxmlc.exe}" output="${mustella.dir}/.flex.version">
            <arg value="-version"  />
        </exec>
    </target>

    <fileset id="sdk.mustella.fileset" dir="${sdk.mustella.dir}"
            includes="${sdk.mustella.includes}"
            excludes="${sdk.mustella.excludes},${other.mustella.excludes}" />

    <target name="clean" depends="cleanswfs" description="--> cleanup old report and actual files">
        <echo message="Deleting old results and files from previous testsuite build."/>
        <delete dir="${mustellagen.dir}" quiet="true"/>
        <!-- get rid of old runid prop file, in case we don't create a new one -->
        <delete verbose="true" file="${mustella.dir}/tests/runid.properties" failonerror="false" quiet="true" />
        <!-- delete file="${mustella.dir}/mustella.swc" failonerror="false"/ -->
        <delete quiet="true" failonerror="false" includeEmptyDirs="true">
            <fileset dir="${mustella.dir}">
                <include name="test_files.tmp"/>
                <include name="results.txt"/>
                <include name="*.log"/>
            </fileset>
        </delete>
        <delete dir="${tmp.dir}"/>
    </target>

    <condition property="copy_adt_jar" value="true" >
        <istrue value="${run_mobile_tests}" />
    </condition>

    <target name="prepare" unless="already_prepared" depends="check-fonts,handle_adt_jar" description="--> create test suite directories" >
        <echo message="Preparing testsuite."/>
        <mkdir dir="${sdk.dir}/lib"/>
        <mkdir dir="${classes.dir}"/>
        <ant antfile="${mustella.dir}/java/src/build.xml" target="compile-mustella" />
    </target>
    
    <target name="handle_adt_jar" if="copy_adt_jar">
        <copy file="${apollo_location}/lib/adt.jar" tofile="${mustella.dir}/lib/adt.jar" overwrite="true" />        
    </target>

    <target name="cleanswfs" unless="noclean.set" description="--> deletes all swfs and tag files">
        <delete quiet="true" failonerror="false">
            <fileset dir="${sdk.mustella.dir}" casesensitive="false" >
                <include name="${previous.generated.testfiles}"/>
                <include name="**/*.sh.*.log"/>
                <include name="**/swfs/**/*.log"/>
                <include name="**/swfs/**/*l*nkreport*.xml"/>
                <include name="**/*.png.bad.png*"/>
                <include name="**/swfs/**/*.swf"/>
                <include name="**/swfs/**/*.swc"/>
                <!-- all the special case swf files that need to be kept -->
                <exclude name="**/swfs/assets/SwfSymbolSkinStates.swf"/>
                <exclude name="mx/controls/MovieClipSWFLoader/SWFs/assets/quickMovie.swf"/>
                <exclude name="mx/controls/MovieClipSWFLoader/SWFs/assets/test.swf"/>
                <exclude name="mx/controls/MovieClipSWFLoader/SWFs/assets/test3.swf"/>
                <exclude name="components/SWFLoader/SWFs/assets/FlashSWF.swf"/>
                <exclude name="components/ProgressBar/SWFs/assets/flex_skins.swf"/>
                <exclude name="States/CurrentSyntax/Integration/CrossVersion/SWFs/assets/Flex320App1.swf"/>
                <exclude name="States/CurrentSyntax/Integration/CrossVersion/SWFs/assets/Flex330App1.swf"/>
                <exclude name="gumbo/components/Application/SWFs/assets/BasicApplicationFlex34.swf"/>
                <!-- all the special case swc files that need to be kept -->
                <exclude name="gumbo/core/DesignLayer/swfs/assets/FCKAssets.swc"/>
                <exclude name="gumbo/FCK/swfs/assets/*.swc"/>
                <exclude name="mx/controls/MovieClipSWFLoader/SWFs/assets/FlashCS5_MovClip1.swc"/>
                <exclude name="RuntimeLocalization/RTL_SparkSkin/SWFs/Assets/bundles/flex20/enCustomBundle2_Flex20.swc"/>
            </fileset>
        </delete>
        <delete dir="tests/MarshallPlan/SWFs/assets/MyUtils"/>
    </target>

   <property name="exclude_flag" value="" />
    <property name="cmd_line_scriptName" value="" />
    <property name="cmd_line_testcaseName" value="" />
    <property name="bugId" value="" />
    <property name="hard" value="" />

    <target name="set_exclude_flag" depends="prepare,setup" description="- set exclude flag on testcases">
        <pathconvert pathSep=";" property="sdk.mustella.files" refid="sdk.mustella.fileset"/>
        <java classname="mustella.ExcludeUtil" resultproperty="jreturn">
            <classpath refid="flex.test.classpath"/>
            <sysproperty key="exclude" value="${exclude_flag}" />
            <sysproperty key="bugId" value="${bugId}" />
            <sysproperty key="exclude_id" value="${exclude_id}" />
            <sysproperty key="hard" value="${hard}" /> <!-- added -->
            <arg value="${cmd_line_scriptName}" />
            <arg value="${cmd_line_testcaseName}" />
        </java>

        <condition property="exit_with_msg" value="true" >
              <not>
            <equals arg1="0" arg2="${jreturn}" />
              </not>
        </condition>
        
        <antcall target="do_fail" >
            <param name="msg" value="Unable to exclude test case. Is it in the database?" />
        </antcall>
    </target>

    <target name="do_fail" if="exit_with_msg">
    <fail message="${msg}" />
    </target>

    <target name="re_include_test" depends="prepare,setup" description="- set flag to include testcases again">
        <pathconvert pathSep=";" property="sdk.mustella.files" refid="sdk.mustella.fileset"/>
        <java classname="mustella.ReInclude" >
            <classpath refid="flex.test.classpath"/>
            <arg value="${bugId}" />
        </java>
    </target>

    <property name="skipped_insert_file" value="${mustella.dir}/testcases_notInserted.txt" />
    <property name="send_check_email" value="" />
    <property name="fail_at_testcase_check" value="" />

    <target name="insert_tests" depends="prepare,setup" description="--- insert testcases">
        <pathconvert pathSep=";" property="sdk.mustella.files" refid="sdk.mustella.fileset"/>
        <taskdef name="namesToFile" classname="mustella.WriteFileNames" classpathref="flex.test.classpath"/>
        <namesToFile list="${sdk.mustella.files}" file="${mustella.dir}/test_files.tmp"/>
        <pathconvert pathSep=";" property="sdk.mustella.files" refid="sdk.mustella.fileset"/>
        <delete file="testcases_notInserted.txt" />
        <echo>TESTCASE CHECK and INSERT TO DB</echo>
        <java classname="mustella.InsertTestcase" fork="${fork_compile}" resultproperty="jreturn">
            <classpath refid="flex.test.classpath"/>
            <sysproperty key="skipped_insert_file" value="${skipped_insert_file}" />
            <sysproperty key="debug_insert" value="${debug_insert}" />
            <sysproperty key="fix_it_mode" value="${fix_it_mode}" />
            <sysproperty key="do_move" value="${do_move}" />
            <sysproperty key="old_file" value="${old_file}" />
            <arg path="${mustella.dir}/test_files.tmp"/>
            <!-- arg path="${sdk.mustella.files}"/ -->
        </java>
        <echo message="value of jreturn: ${jreturn}" />
        
        <!--- backwards? shouldn't it be not on the zero? -->
        <condition property="do_send_check" value="true" >
            <and>
                <not>
                    <equals arg1="${jreturn}" arg2="0"/>
                </not>
                    <equals arg1="${send_check_email}" arg2="true"/>
            </and>
        </condition>
        
        <antcall target="sendCheckResults" />
        
        <!-- NOT? -->
        <condition property="exit_with_msg" value="true" >
            <and>
                <equals arg1="${jreturn}" arg2="0"/>
                <equals arg1="${fail_on_testcase_check}" arg2="true"/>
            </and>
        </condition>
        
        <antcall target="do_fail" >
            <param name="msg" value="Testcase check failed." />
        </antcall>
        
        <echo>Return was okay from test case check</echo>        
    </target>

    <target name="sendConfigFailure" if="exit_with_msg">
        <echo file="${mustella.dir}/config.txt">Test Server: Config Failure (web server root) for ${host}</echo>
        <java classname="utils.HtmlNotify">
            <classpath refid="flex.test.classpath"/>
            <arg value="${mustella.dir}/config.txt" />
            <arg value="inner-relay-1.corp.adobe.com"/>
            <arg value="Mustella Config Check Failure - ${branch}" />
            <arg value="mustella tester &lt;bolaughl@adobe.com&gt;"/>
            <arg value="bolaughl@adobe.com" />
        </java>
    </target>

    <property name="socket_mixin" value="" />

    <!-- set this to false to use the swc -->
    <property name="use_mustella_framework_dir" value="true" />
    <property name="mustella_framework_dir" value="${mustella.dir}/as3/src/mustella" />

    <property name="htmlDir" value="" />
    <property name="test_files" value="" />

    <condition property="user_args" value="" >
        <not>
            <isset property="user_args" />
        </not>
    </condition>


    <!-- the default. Mini run will override this. Server runs will not -->
    <property name="result_include" value="-includes=SendFormattedResultsToLog" />
    <property name="exit_include" value="" />

    <property name="build_version" value="${server}" />

    <target name="fast_run_filesets" depends="get_os,setup_mac,setup_windows,setup_linux">

        <fileset id="sdk.mustella.swffileset" dir="${sdk.mustella.dir}"
            includes="${sdk.mustella.swfs}"
            excludes="${sdk.mustella.excludes},**/Assets/**/*.swf,**/assets/**/*.swf" />
    
        <property name="showit0" refid="sdk.mustella.swffileset" />
        <echo>stuff: ${showit0}</echo>
    </target>
    
    <target name="fast_compile_filesets" depends="get_os,setup_mac,setup_windows,setup_linux">

        <property file="${basedir}/properties/mustella1.properties" />
    
        <condition property="apollo_excludes" value="apollo/**/*.mxml" >
            <not>
                <istrue value="${use_apollo}" />
            </not>
        </condition>
    
        <condition property="browser_excludes" value="browser/**/*.mxml" >
            <not>
                <istrue value="${use_browser}" />
            </not>
        </condition>
    
        <condition property="apollo_excludes" value="apollo/**/*.mxml" >
            <istrue value="${use_browser}" />
    
        </condition>
        <fileset id="sdk.mustella.fileset" dir="${sdk.mustella.dir}" 
            includes="${sdk.mustella.includes}" 
            excludes="${sdk.mustella.excludes},**/baselines/,**/Baselines/,**/comps/*.mxml,**/Assets/**/*.swf,**/assets/**/*.swf, ${browser_excludes},${apollo_excludes},${other.mustella.excludes},${apollo_specific_excludes}" >
        </fileset>
        <property name="tmp.showfiles" refid="sdk.mustella.fileset" />
        <echo file="${mustella.dir}/junk1a">${tmp.showfiles}</echo>
        <echo>stuff: ${tmp.showfiles}</echo>
    </target>

    <target name="realCompile" depends="compilemustellaswc" description="- mxmlc call to compile mustella test swfs" if="sdk.mustella.includes">
        <delete quiet="true">
            <fileset dir="${sdk.dir}/frameworks/componentSmoke" includes="*.cache"/>
        </delete>
        <property name="frameworks.dir" value="${mustella.dir}/../frameworks" />
        <property name="mxmlc.dir" value="${sdk.dir}/bin" />
        <!-- property name="mxmlc.exe" value="mxmlc.exe" / -->
        <!-- remove? property name="pfchange" value="workspace" / -->
        <pathconvert pathSep=";" property="sdk.mustella.mxmlfiles" refid="sdk.mustella.fileset"/>

        <!-- echo>stuff we're passing into compile: ${sdk.mustella.mxmlfiles}</echo -->
    
        <!-- echo>Shell is currently ${shell}</echo -->
        <antcall target="shells" />
    
        <!-- write the target files to a file -->
        <taskdef name="namesToFile" classname="mustella.WriteFileNames" classpathref="flex.test.classpath"/>
        <namesToFile list="${sdk.mustella.mxmlfiles}" file="${mustella.dir}/test_files.tmp"/>
    
        <java classname="mustella.CompileMustellaSwfs" fork="${fork_compile}" resultproperty="jreturn" >
            <classpath refid="flex.test.classpath"/>
            <sysproperty key="mxmlcdir" value="${mxmlc.dir}" />
            <sysproperty key="mxmlcexe" value="${mxmlc.exe}" />
            <sysproperty key="sdk.mustella.dir" value="${sdk.mustella.dir}"/>
            <sysproperty key="sdk.dir" value="${sdk.dir}"/>
            <sysproperty key="mustella_framework_dir" value="${mustella_framework_dir}" />
            <sysproperty key="run_id" value="${current.run.id}" />
            <sysproperty key="frameworks" value="${frameworks.dir}" />
            <sysproperty key="compc" value="${compc}" />
            <sysproperty key="compcexe" value="${compc.exe}" />
            <sysproperty key="strict" value="${strict}"/>
            <sysproperty key="index" value="${index}"/>
            <sysproperty key="compcdir" value="${compc.dir}" />
            <sysproperty key="mxmlc.args" value="${mxmlc.args} -source-path=${mustella.dir}/Assets "/>
            <sysproperty key="rsl" value="${rsl}" />
            <sysproperty key="build" value="${build}"/>
            <sysproperty key="debug" value="${debug}"/>
            <sysproperty key="exit_on_compile_error" value="${exit_on_compile_error}" />
            <sysproperty key="save_failures" value="${save_failures}" />
            <sysproperty key="use_apollo" value="${use_apollo}" />
            <sysproperty key="apollo_location" value="${apollo_location}" />
            <sysproperty key="excludelibrarypath" value="${excludelibrarypath}"/>
            <sysproperty key="external.librarypath" value="${external.librarypath}"/>
            <sysproperty key="basedir" value="${mustella.dir}"/>
            <sysproperty key="incremental" value="false" />
            <sysproperty key="asclasspath" value="${asclasspath},${aschartspath}"/>
            <sysproperty key="librarypath" value="${librarypath}"/>
            <sysproperty key="coach" value="${coach}"/>
            <sysproperty key="feature" value="${feature}"/>
            <sysproperty key="run_this_script" value="${run_this_script}"/>
            <sysproperty key="socket_mixin" value="${socket_mixin}" />
            <sysproperty key="use_mustella_framework_dir" value="${use_mustella_framework_dir}" />
            <sysproperty key="socket_mixin" value="${socket_mixin}" />
            <sysproperty key="fork_compile" value="${fork_compile}" />
            <sysproperty key="include_list" value="${include_list}" />
            <sysproperty key="mustella.dir" value="${mustella.dir}" />
            <sysproperty key="use_browser" value="${use_browser}" />
            <sysproperty key="htmlDir" value="${htmlDir}" />
            <sysproperty key="skip_exclude" value="${skip_exclude}" />
            <sysproperty key="apollo_transform" value="${apollo_transform}" />
            <sysproperty key="apollo_transform_template" value="${apollo_transform_template}" />
            <sysproperty key="apollo_transform_prefix" value="${apollo_transform_prefix}" />
            <sysproperty key="apollo_transform_prefix2" value="${apollo_transform_prefix2}" />
            <sysproperty key="use_include_file" value="${use_include_file}" />
            <sysproperty key="user_args" value="${user_args}" />
            <sysproperty key="flex_version" value="${flex_version}" />
            <sysproperty key="build_version" value="${build_version}" />
            <sysproperty key="result_include" value="${result_include}" />
            <sysproperty key="exit_include" value="${exit_include}" />
            <sysproperty key="exclude_mixin" value="${exclude_mixin}" />
            <sysproperty key="exclude_source_path" value="${exclude_source_path}" />
            <sysproperty key="mustellaswc" value="${mustella.swc.dir}/${mustella.swc.name}" />
            <sysproperty key="pmd" value="${pmd}" />
            <sysproperty key="distributed" value="${distributed}" />
            <sysproperty key="compile_dir" value="${compile_dir}" />
            <sysproperty key="compile_id" value="${compile_id}" />
            <sysproperty key="hostId" value="${hostId}" />
            <sysproperty key="run_mobile_tests" value="${run_mobile_tests}" />      
            <sysproperty key="device_name" value="${device_name}" />
            <sysproperty key="target_os_name" value="${target_os_name}" />
            <sysproperty key="os_version" value="${os_version}" />
            <sysproperty key="exclude_filename" value="${exclude_filename}" />
            <sysproperty key="adl_extras" value="${adl_extras}" />
            <arg path="${mustella.dir}/test_files.tmp"/>
        </java>
    
        <echo message="compileswfs jreturn is ${jreturn}" />
        <!-- handle the bad return -->
    
        <condition property="always_send" value="true" >
            <and>
                    <equals arg1="${jreturn}" arg2="1"/>
                <not>
                    <equals arg1="${current.run.id}" arg2="-1"/>
                </not>
            </and>
        </condition>
    
        <condition property="exit_with_msg" value="true" >
            <and>
                    <equals arg1="${jreturn}" arg2="1"/>
                    <equals arg1="${exit_on_compile_error}" arg2="true"/>
            </and>
        </condition>
    
        <antcall target="do_fail" >
            <param name="msg" value="SWF compile failed. Exiting" />
        </antcall>    
    </target>

    <!-- this seems to be the same as the compileswfs target -->
    <target name="compileLite" depends="prepare,setup,getRunId,getExcludes,realCompile" description="- compile the mustella tests into swfs">

    <antcall target="continue_always_send" />
    <!-- consider if we want to use mustella as a swc? -->
    </target>

    <target name="continue_always_send" if="always_send" >
        <antcall target="queryOnly" />
        <antcall target="do_sendResults" />
    </target>

    <target name="zip_small"  depends="compileLite,zipLite" description="- compile/package subset of tests">
    </target>

    <target name="zipLite"  description="- package test swfs">

        <!--    this should zip only the result of the compile; so we should call a shell script
                to figure out the diff and only zip that. This, in short, becomes an exec
        -->   

    </target>

    <property name="testpkg" value="testpkg.zip" />

    <target name="zipswfs"  depends="compileLite,ziponly" description="- package test swfs"/>

    <target name="ziponly"  description="- package test swfs">

        <!-- actual location should be build number(directory) with packages in it   -->
        <property file="${mustella.dir}/successfulBuild.properties" />
        <echo>This is the build I'm acting on ${server}</echo>
        <mkdir dir="${tmp.dir}/flex/${server}" />
        <zip destfile="${tmp.dir}/flex/${server}/${testpkg}" >
            <fileset refid="sdk.mustella.swffileset" />
        </zip>
        <copy verbose="true" file="${mustella.dir}/successfulBuild.properties" todir="${tmp.dir}/flex" />
            <copy verbose="true" file="${mustella.dir}/${langZip}" todir="${tmp.dir}/flex/${server}" />
        <copy verbose="true" file="${mustella.dir}/${mainZip}" todir="${tmp.dir}/flex/${server}" />
        <copy verbose="true" file="${db_time_file}" todir="${tmp.dir}/flex/${server}" />
        <copy verbose="true" file="${server_time_file}" todir="${tmp.dir}/flex/${server}" />
    </target>

    <property name="work_table" value="hurricane_work_list" />

    <target name="update_volatiles" >

        <!-- check for a latest full test run -->
        <property prefix="current.win." file="${mustella.dir}/external/win.runid.properties" />
        <property prefix="current.mac." file="${mustella.dir}/external/mac.runid.properties" />
    
        <antcall target="fetch_old_runid">
            <param name="arg.propertyfile" value="${mustella.dir}/external/win.runid.properties.tmp" />
            <param name="arg.os" value="%Windows%" />
        </antcall>
    
        <antcall target="fetch_old_runid">
            <param name="arg.propertyfile" value="${mustella.dir}/external/mac.runid.properties.tmp" />
            <param name="arg.os" value="%Mac%" />
        </antcall>
    
        <property file="${mustella.dir}/external/win.runid.properties.tmp" prefix="win."/>
        <property file="${mustella.dir}/external/mac.runid.properties.tmp" prefix="mac."/>
    
        <echo>compare arg1="${current.win.run_id}" arg2="${win.run_id}"</echo>
        <echo>compare arg1="${current.mac.run_id}" arg2="${mac.run_id}"</echo>
    
        <condition property="update_excludes" value="true" >
            <or>
                <not>
                    <equals arg1="${current.win.run_id}" arg2="${win.run_id}" />
                </not>
                <not>
                    <equals arg1="${current.mac.run_id}" arg2="${mac.run_id}" />
                </not>
            </or>
        </condition>
    
        <!-- call the excludes/failures guy for win -->
        <antcall target="do_excludes_update">
            <param name="arg.excludes_filename" value="${mustella.dir}/external/ExcludeListWin.txt" />
            <param name="arg.failures_filename" value="${mustella.dir}/external/failures.win.out" />
            <param name="arg.runid_filename" value="${mustella.dir}/external/win.runid.properties" />
            <param name="arg.run_id" value="${win.run_id}" />
            <param name="arg.prefix" value="win.db." />
            <param name="arg.target_os_name" value="windows" />
        </antcall>
    
        <!-- call the excludes/failures guy for mac -->
        <antcall target="do_excludes_update">
            <param name="arg.excludes_filename" value="${mustella.dir}/external/ExcludeListMac.txt" />
            <param name="arg.failures_filename" value="${mustella.dir}/external/failures.mac.out" />
            <param name="arg.runid_filename" value="${mustella.dir}/external/mac.runid.properties" />
            <param name="arg.run_id" value="${mac.run_id}" />
            <param name="arg.prefix" value="mac.db." />
            <param name="arg.target_os_name" value="mac" />
        </antcall>
    
        <uptodate property="jar_not_needed" targetfile="${mustella.dir}/external/mustella.jar">
            <srcfiles dir="${mustella.dir}/src/" includes="mustella/*.java,utils/*.java" />
        </uptodate>
    
        <echo>Jar update not needed? ${jar_not_needed}</echo>
    
        <antcall target="do_jar_update" />
    
        <uptodate property="swc_not_needed" targetfile="${mustella.dir}/external/mustella.swc">
            <srcfiles dir="${mustella.dir}/frameworks/mustella/" includes="*.as" />
        </uptodate>
    
        <echo>SWC update not needed? ${swc_not_needed}</echo>
    
        <antcall target="do_swc_update" />
    
        <!-- check in whatever is new -->
        <p4change description="updates for excludes,failures,etc " />
        <echo> p4change: ${p4.change}</echo>
    
        <!-- p4reopen tochange="${p4.change}" view="//depot/flex/qa/sdk/testsuites/mustella/external/..." / -->
        <p4edit change="${p4.change}" view="//depot/flex/qa/sdk/testsuites/mustella/external/..." />
        <p4revert revertOnlyUnchanged="true" change="${p4.change}" />
        <p4submit change="${p4.change}" />
    </target>


    <target name="do_jar_update" unless="jar_not_needed" >
        <delete verbose="true" file="${mustella.dir}/external/mustella.jar" />
        <jar basedir="${mustella.dir}/classes" destfile="${mustella.dir}/external/mustella.jar" includes="mustella/*.class,utils/*.class"/>
    </target>

    <target name="do_swc_update" unless="swc_not_needed" >

        <!-- this call needs some variables set setup, so, say excludes are done to avoid that nested call -->
        <antcall target="makemustellaswc"  >
            <param name="excludes_done" value="true" />
        </antcall>
        <copy overwrite="true" verbose="true" file="${mustella.dir}/${mustella.swc.name}" todir="${mustella.dir}/external" />
    </target>

    <!-- this target can be run after a regular, full test run, to pkg tests, excludes, and a failure list -->
    <target name="zip_tests_only"  depends="makemustellaswc" description="- package tests,jars,excludes, and results">

        <!-- assumption: we have a runid; we need it to get the failures relevant to the current build -->
        <property file="${mustella.dir}/tests/runid.properties" />
        <property name="current.run.id" value="${run_id}" />
    
        <echo>run id is ${current.run.id} </echo>
    
        <!-- we need a list of the failures from our run -->
        <antcall target="excludeFromRunId" />
    
        <!-- must invoke this with use_mustella_framework_dir=false to get a new mustella.swc built -->
    
        <!-- make the classes into a jar -->
        <jar basedir="${mustella.dir}/classes" destfile="${mustella.dir}/lib/mustella.jar" includes="mustella/*.class,utils/*.class"/>
    
    
        <!-- write a properties file to be used by those running from jars and the mustella.swc and using an
             already fetched set of excludes
        -->
    
        <echo file="${mustella.dir}/${external_properties}" append="false">already_prepared=true</echo>
        <propertyfile file="${mustella.dir}/${external_properties}" >
            <entry key="excludes_done" value="true" />
            <entry key="use_mustella_framework_dir" value="false" />
            <entry key="current.run.id" value="-1" />
        </propertyfile>
        
        <!-- java stuff, properties, and the mustella swc -->
            <fileset id="fwkstuff" dir="${mustella.dir}" >
            <!-- include name="build.xml" / -->
            <include name="lib/mustella.jar" />
            <include name="properties/mustella1.properties" />
            <include name="properties/mustella_tier1.properties" />
        </fileset>
    
        <antcall target="server_time" />
        <copy verbose="true" file="${tmp.dir}/.server.time.vetting" tofile="${mustella.dir}/.server.time" />
    
        <fileset id="testdiritself" dir="${mustella.dir}"  >
            <include name="sdk/testsuites/mustella/**" />
            <exclude name="**/*.log" />
            <exclude name="sdk/testsuites/mustella/build/flex_sdk_?.zip" />
            <exclude name="sdk/testsuites/mustella/flex_sdk_?.zip" />
            <exclude name="sdk/testsuites/mustella/flex_sdk_locales.zip" />
            <exclude name="sdk/testsuites/mustella/local.properties" />
            <exclude name="sdk/testsuites/mustella/chart.license.properties" />
            <exclude name="sdk/testsuites/mustella/build.properties" />
            <exclude name="sdk/testsuites/mustella/aik.xml" />
            <exclude name="sdk/testsuites/mustella/make_incr_zip.sh" />
            <exclude name="**/*.swf" />
            <exclude name="**/testpkg.zip" />
            <exclude name="sdk/testsuites/mustella/build/**" />
        </fileset>
    
        <!-- actual location should be build number(directory) with packages in it   -->
        <property file="${mustella.dir}/successfulBuild.properties" />
        <echo>This is the build I'm acting on ${server}</echo>
        <delete file="${mustella.dir}/${testpkg}" failonerror="false" quiet="false" />
        <zip destfile="${mustella.dir}/${testpkg}" >
            <fileset refid="fwkstuff" />
            <fileset refid="testdiritself" />
        </zip>
        <!-- copy verbose="true" file="${mustella.dir}/successfulBuild.properties" todir="${tmp.dir}/flex" />
            <copy verbose="true" file="${mustella.dir}/${langZip}" todir="${tmp.dir}/flex/${server}" />
        <copy verbose="true" file="${mustella.dir}/${mainZip}" todir="${tmp.dir}/flex/${server}" />
        <copy verbose="true" file="${db_time_file}" todir="${tmp.dir}/flex/${server}" />
        <copy verbose="true" file="${server_time_file}" todir="${tmp.dir}/flex/${server}" / -->
    
    
        <delete file="${mustella.dir}/${external_properties}" />
    </target>

    <target name="sendCompileResults" depends="zipswfs" description="- compile tests into swfs, notify of issues">
    <!-- since the run is effectively complete for this kind of invocation, send failing issues -->
    </target>

    <target name="unzipSwfs" description="Unzip previously compiled test swfs" >
        <unzip src="${mustella.dir}/${testpkg}" dest="${mustella.dir}/tests" />
    </target>


    <!-- compileswfs is for mini_run or runs that do their own compiles -->
    <!-- AJH <target name="compileswfs" depends="prepare,setup,getRunId,getExcludes,realCompile" description="- compile the mustella tests into swfs" > -->
    <target name="compileswfs" depends="prepare,setup,getRunId,realCompile" description="- compile the mustella tests into swfs" >
    </target>

    <property name="shell_include_file" value="" />
    <property name="browser_prefix" value="http://localhost" />

    <target name="note_finish" >
        <echo>${my_whoami} is done</echo>
    </target>

    <!-- pmd runners call this before calling justrun to create the swf fileset 
            they supply the directories via file?
            we could have pmd_doler do the dir split and write property files (per user) 
    -->

    <target name="pmd_all_swf_set_maker" >
        <property file="${sdk.mustella.dir}/${pmd_runner_file}" />
            <fileset id="sdk.mustella.swffileset" dir="${sdk.mustella.dir}"
                includes="**/*.swf"
                excludes="${sdk.mustella.excludes},**/Assets/**/*.swf,**/assets/**/*.swf" />
    
        <pathconvert pathSep=";" dirSep="/" property="them_swfs" refid="sdk.mustella.swffileset"/>
        <!-- property name="them_swfs" refid="sdk.mustella.swffileset" />
            <echo>swfs: ${them_swfs}</echo -->
    </target>
    
    <!-- a sub runner calls this to build a fileset of the swfs and run them --> 
    <target name="pmd0" >
        <property file="${sdk.mustella.dir}/runid.properties" />
        <property name="current.run.id" value="${run_id}" />
        <echo>pmd0 gets ${current.run.id} from ${sdk.mustella.dir}/runid.properties from value ${run_id}</echo>
    </target>

    <target name="PMD_Runner" depends="pmd0,prepare,setup,justrun,note_finish"/>

    <property name="retry_failures_file" value="${mustella.dir}/tmp_failures.txt" />

    <target name="test_clean_overlapping" >
    <!-- just a test target -->
        <fileset id="sdk.mustella.swffileset" dir="${sdk.mustella.dir}"
                excludes="${sdk.mustella.excludes},**/*.log,**/*.png,**/*.mxml,**/Assets/**/*.swf,**/assets/**/*.swf" 
            includesfile="${retry_failures_file}.tmp" >
        </fileset>
        <property name="showset.swfs" refid="sdk.mustella.swffileset" />
        <echo>${showset.swfs}</echo>
        <java classname="mustella.RetryCleaner" failonerror="true" fork="true" dir="${mustella.dir}">
            <classpath refid="flex.test.classpath"/>
            <sysproperty key="run_id" value="${current.run.id}" />
            <arg value="${showset.swfs}"/>
            <!-- arg path="${sdk.mustella.swffiles}"/ -->
        </java>
    </target>

    <!-- wip call this from retry guy-->
    <target name="clean_overlapping" >
        <property name="showset.swfs" refid="sdk.mustella.swffileset" />
        <java classname="mustella.RetryCleaner" failonerror="true" fork="false">
            <classpath refid="flex.test.classpath"/>
            <sysproperty key="run_id" value="${current.run.id}" />
            <arg value="${showset.swfs}"/>
        </java>
    </target>

    <property name="runner_fork" value="false" />

    <target name="justrun" if="sdk.mustella.includes">
        <property name="frameworks.dir" value="${sdk.dir}/frameworks" />
        <property name="mxmlc.dir" value="${sdk.dir}/bin" />
        <property name="mxmlc.exe" value="mxmlc.exe" />
        <property name="pfchange" value="workspace" />
        <!--- I'm thinking it will be okay because this will be set already -->
        <pathconvert pathSep=";" dirSep="/" property="sdk.mustella.swffiles" refid="sdk.mustella.swffileset"/>
        <!-- echo message="the player ${player}" / -->
        <chmod file="${player}" perm="777"/>
        
        <!-- be safe, clear the cache (in pmd, each user must do this) -->
        <!-- some of these targets won't exist  -->
        <!-- mac -->
        <antcall target="delete_cache">
            <param name="directory" value="/Users/${env.USER}/Library/Caches/Adobe/Flash Player/AssetCache" />
        </antcall>
        <!-- win 7 -->
        <antcall target="delete_cache">
            <param name="directory" value="/Users/${env.USER}/AppData/Roaming/Adobe/Flash Player/AssetCache" />
        </antcall>
        <!-- older win -->
        <antcall target="delete_cache">
            <param name="directory" value="${HOMEPATH}/Application Data/Adobe/Flash Player/AssetCache" />
        </antcall>
    
        <antcall target="call_runners" />
    </target>
    
    <target name="call_runners" depends="android_runner, ios_runner, qnx_runner, desktop_runner">
    </target>
    
    <target name="android_runner" if="${use_android_runner}">
        <echo message="**** Willkommen auf AndroidRunner ****" />
        <java classname="mustella.AndroidRunner" failonerror="true" fork="false">
            <classpath refid="flex.test.classpath"/>
            <classpath refid="sdk.lib.classpath"/>
            <sysproperty key="runtime_apk" value="${runtime_apk}" />
            <sysproperty key="android_sdk" value="${android_sdk}" />
            <sysproperty key="clean_devices" value="${clean_devices}" />
            <sysproperty key="debug" value="true" />
            <sysproperty key="device_name" value="${device_name}" />
            <sysproperty key="get_results_from_log" value="${get_results_from_log}" />
            <sysproperty key="hostId" value="${hostId}" />
            <sysproperty key="htmlDir" value="${htmlDir}" />
            <sysproperty key="insert_results" value="${insert_results}" />
            <sysproperty key="mustella" value="${mustella.dir}"/>
            <sysproperty key="pmd" value="${pmd}" />
            <sysproperty key="port" value="${port}" />
            <sysproperty key="print_passes" value="${print_passes}" />
            <sysproperty key="run_dir" value="${run_dir}" />
            <sysproperty key="run_id" value="${current.run.id}" />
            <sysproperty key="sdk.dir" value="${sdk.dir}"/>
            <sysproperty key="air_sdk_dir" value="${air.sdk.dir}"/>
            <sysproperty key="classes_dir" value="${classes.dir}"/>
            <sysproperty key="shell_swf" value="${shell_swf}" />
            <sysproperty key="shell_swf_prefix" value="${shell_swf_prefix}" />
            <sysproperty key="step_timeout" value="${step_timeout}" />
            <sysproperty key="timeout" value="${player.timeout}"/>
            <sysproperty key="url_suffix" value="${url_suffix}" />
            <sysproperty key="use_apollo" value="${use_apollo}" />
            <sysproperty key="use_browser" value="${use_browser}" />
            <sysproperty key="exclude_file" value="${exclude_filename}" />
            <sysproperty key="keep_air" value="${keep_air}" />
            <sysproperty key="android_ids" value="${android_ids}" />
            <sysproperty key="rerun" value="${rerun_property}" />
            <sysproperty key="runtimeApk" value="${runtimeApk}" />
            <arg path="${sdk.mustella.swffiles}"/>
        </java>
    </target>
    
    <target name="ios_runner" if="${use_ios_runner}" >
        <echo message="**** Willkommen auf IOSRunner ****" />
        <java classname="mustella.IOSRunner" failonerror="true" fork="false">
            <classpath refid="flex.test.classpath"/>
            <sysproperty key="clean_devices" value="${clean_devices}" />
            <sysproperty key="debug" value="false" />
            <sysproperty key="device_name" value="${device_name}" />
            <sysproperty key="hostId" value="${hostId}" />
            <sysproperty key="insert_results" value="${insert_results}" />
            <sysproperty key="mustella" value="${mustella.dir}"/>
            <sysproperty key="print_passes" value="${print_passes}" />
            <sysproperty key="run_dir" value="${run_dir}" />
            <sysproperty key="run_id" value="${current.run.id}" />
            <sysproperty key="step_timeout" value="${step_timeout}" />
            <sysproperty key="timeout" value="${player.timeout}"/>
            <sysproperty key="launch_timeout" value="${launch_timeout}" />
            <sysproperty key="use_apollo" value="${use_apollo}" />
            <sysproperty key="exclude_file" value="${exclude_filename}" />
            <sysproperty key="keep_air" value="${keep_air}" />
            <sysproperty key="sdk.dir" value="${sdk.dir}"/>
            <sysproperty key="air_sdk_dir" value="${air.sdk.dir}"/>
            <sysproperty key="adt_target" value="${adt_target}" />
            <sysproperty key="adt_interpreter" value="${adt_interpreter}" />
            <sysproperty key="concurrent_packagers" value="${concurrent_packagers}" />
            <sysproperty key="rerun" value="${rerun_property}" />
            <arg path="${sdk.mustella.swffiles}"/>
        </java>
    </target>
    
    <target name="qnx_runner" if="${use_qnx_runner}" >
        <echo message="**** Willkommen auf QNXRunner ****" />
        <echo message="Copying QNX Tools..." />
        <copy todir="${sdk.dir}/bin">
          <fileset dir="${qnx_sdk_dir}/bin"/>
        </copy>
        <copy todir="${sdk.dir}/lib">
          <fileset dir="${qnx_sdk_dir}/lib"/>
        </copy>
        <copy todir="${sdk.dir}/samples/icons">
          <fileset dir="${qnx_sdk_dir}/samples/icons"/>
        </copy>
        <echo message="Done." />
        <chmod perm="777" verbose="true" dir="${sdk.dir}/bin" includes="blackberry-*"/>
        <java classname="mustella.QNXRunner" failonerror="true" fork="false">
            <classpath refid="flex.test.classpath"/>
            <sysproperty key="debug" value="true" />
            <sysproperty key="device_name" value="${device_name}" />
            <sysproperty key="hostId" value="${hostId}" />
            <sysproperty key="insert_results" value="${insert_results}" />
            <sysproperty key="mustella" value="${mustella.dir}"/>
            <sysproperty key="print_passes" value="${print_passes}" />
            <sysproperty key="run_dir" value="${run_dir}" />
            <sysproperty key="run_id" value="${current.run.id}" />
            <sysproperty key="step_timeout" value="${step_timeout}" />
            <sysproperty key="timeout" value="${player.timeout}"/>
            <sysproperty key="use_apollo" value="${use_apollo}" />
            <sysproperty key="exclude_file" value="${exclude_filename}" />
            <sysproperty key="keep_air" value="${keep_air}" />
            <sysproperty key="sdk.dir" value="${sdk.dir}"/>
            <sysproperty key="qnx_sdk_dir" value="${qnx_sdk_dir}"/>
            <sysproperty key="use_qnx_native_packager" value="${use_qnx_native_packager}"/>
            <sysproperty key="qnx_air_runtime_dir" value="${qnx_air_runtime_dir}"/>
            <sysproperty key="qnx_launch_script" value="${qnx_launch_script}"/>
            <sysproperty key="qnx_device_ip" value="${qnx_device_ip}"/>
            <sysproperty key="qnx_device_password" value="${qnx_device_password}"/>
            <sysproperty key="qnx_cmdline_user" value="${qnx_cmdline_user}"/>
            <sysproperty key="qnx_cmdline_password" value="${qnx_cmdline_password}"/>
            <arg path="${sdk.mustella.swffiles}"/>
        </java>
    </target>

    <target name="desktop_runner" unless="${use_android_runner}, ${use_ios_runner}, ${use_qnx_runner}" >
        <echo message="**** Willkommen auf Runner ****" />
        <java classname="mustella.Runner" failonerror="true" fork="${runner_fork}">
            <classpath refid="flex.test.classpath"/>
            <!-- enable java remote debugging
            <jvmarg value="-Xdebug"/>
            <jvmarg value="-Xnoagent"/>
            <jvmarg value="-Djava.compiler=NONE"/>
            <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"/>
            -->
            <sysproperty key="debug" value="true" />
            <sysproperty key="mxmlcdir" value="${mxmlc.dir}" />
            <sysproperty key="mxmlcexe" value="${mxmlc.exe}" />
            <sysproperty key="frameworks" value="${frameworks.dir}" />
            <sysproperty key="player" value="${player}" />
            <sysproperty key="run_id" value="${current.run.id}" />
            <sysproperty key="browser" value="${browser}" />
            <sysproperty key="use_browser" value="${use_browser}" />
            <sysproperty key="print_passes" value="${print_passes}" />
            <sysproperty key="timeout" value="${player.timeout}"/>
            <sysproperty key="mustella" value="${mustella.dir}"/>
            <sysproperty key="sdk.dir" value="${sdk.dir}"/>
            <sysproperty key="insert_results" value="${insert_results}" />
            <sysproperty key="okay_to_exit" value="${okay_to_exit}" />
            <sysproperty key="use_apollo" value="${use_apollo}" />
            <sysproperty key="apollo_location" value="${apollo_location}" />
            <sysproperty key="apollo_exe" value="${apollo_exe}" />
            <sysproperty key="mustella.dir" value="${mustella.dir}" />
            <sysproperty key="port" value="${port}" />
            <sysproperty key="baseline_port" value="${baseline_port}" />
            <sysproperty key="get_results_from_log" value="${get_results_from_log}" />
            <sysproperty key="xmlnsVal" value="${xmlnsVal}" />
            <sysproperty key="keep_air" value="${keep_air}" />
            <sysproperty key="shell_swf" value="${shell_swf}" />
            <sysproperty key="shell_swf_prefix" value="${shell_swf_prefix}" />
            <sysproperty key="browser_prefix" value="${browser_prefix}" />
            <sysproperty key="htmlDir" value="${htmlDir}" />
            <sysproperty key="step_timeout" value="${step_timeout}" />
            <sysproperty key="distributed" value="${distributed}" />
            <sysproperty key="pmd" value="${pmd}" />
            <sysproperty key="run_dir" value="${run_dir}" />
            <sysproperty key="hostId" value="${hostId}" />
            <sysproperty key="url_suffix" value="${url_suffix}" />
            <sysproperty key="coverage_timeout" value="${coverage_timeout}" />
            <sysproperty key="adl_extras" value="${adl_extras}" />
            <sysproperty key="prevent_baseline_server" value="${prevent_baseline_server}" />                
            <arg path="${sdk.mustella.swffiles}"/>
        </java>
    </target>

    <target name="rerun" depends="setrerun,prepare,setup,justrun" />

    <target name="setrerun">
        <property name="rerun_property" value="true" />
    </target>
        
    <target name="dedicatedRun" depends="prepare,setup,getRunId,getExcludes,populateExcludeTable,unzipSwfs,justrun" />

    <target name="run" depends="clean,prepare,setup,compileswfs,getRunId,getExcludes,populateExcludeTable,justrun" description="-->run tests"/>

    <property name="tmp_exclude_script" value="exclude_tmp.sh" />

    <target name="genExcludeScript" >
        <echo message="Hello from gen Excludes Script" />
            <java classname="mustella.GenExcludes">
              <classpath refid="flex.test.classpath"/>
              <sysproperty key="run_id" value="${current.run.id}" />
              <sysproperty key="bug_id" value="${bug_id}" />
              <sysproperty key="exclude_id" value="${exclude_id}" />
              <sysproperty key="outfile" value="${tmp_exclude_script}" />
        </java>
    </target>

    <property name="tmp_error_files" value="${mustella.dir}/.errors_tmp" />

    <target name="excludeFromFile" >
        <echo>exclude from file</echo>
        <echo>from file, bug id ${bug_id}</echo>
        <echo>from file, exclude id ${exclude_id}</echo>
        <echo>from file, the file is ${failures_filename}</echo>
        <java classname="mustella.ExcludeUtil2" fork="true" resultproperty="jreturn">
          <classpath refid="flex.test.classpath"/>
          <sysproperty key="bug_id" value="${bug_id}" />
          <sysproperty key="file_location" value="${mustella.dir}" />
          <sysproperty key="exclude_filename" value="${exclude_filename}" />
          <sysproperty key="exclude_id" value="${exclude_id}" />
          <sysproperty key="include_after" value="${include_version}" />
        </java>
    
    
        <condition property="should_send" value="true" >
          <and>
              <not>
              <equals arg1="${jreturn}" arg2="0"/>
              </not>
              <equals arg1="${auto_exclude}" arg2="true"/>
          </and>
        </condition>
    
        <condition property="exit_with_msg" value="true" >
          <and>
              <not>
              <equals arg1="${jreturn}" arg2="0"/>
              </not>
              <not>
              <equals arg1="${auto_exclude}" arg2="true"/>
              </not>
          </and>
        </condition>
    
        <antcall target="push_email" >
            <param name="file"   value="${mustella.dir}/orphan.failures"/>
            <param name="relay"  value="inner-relay-1.corp.adobe.com"/>
            <param name="subj"   value="Test Checkin: Auto-exclude Failure on Run ${current.run.id}"/>
            <param name="sender" value="mustella tester &lt;bolaughl@adobe.com&gt;"/>
            <param name="recips" value="bolaughl@adobe.com"/>
        </antcall>
    
        <antcall target="do_fail" >
            <param name="msg" value="Exclude from file failed"/>
        </antcall>
    </target>

    <!-- shbe 5 -->
    <property name="test_interval" value="15" />

    <!-- make the mustella swc. Defaulting to putting that in the suites area for the moment -->
    <target name="makemustellaswc" depends="setup">
        <condition property="compilemustellaswc.notRequired">
            <equals arg1="${use_mustella_framework_dir}" arg2="true"/>
        </condition>
        <antcall target="compilemustellaswc" />
    </target>

    <target name="cleanmustellaswc">
        <delete file="${mustella.swc.dir}/${mustella.swc.name}"/>
    </target>
        
    <target name="compilemustellaswc" unless="compilemustellaswc.notRequired" >
        <exec  executable="${compc.dir}/${compc.exe}" >
            <!-- output swc name    -->
            <arg value="-output=${mustella.swc.dir}/${mustella.swc.name}" />
            <!-- include path -->
            <arg value="-source-path=${mustella.dir}/as3/src/mustella" />
            <!-- clear library path -->
            <arg value="-library-path="/>
            <arg value="-external-library-path=${apollo_location}/frameworks/libs/air,${sdk.dir}/frameworks/libs,${sdk.dir}/frameworks/libs/mx" />
            <arg value="ApolloFilePath"/>
            <arg value="Assert"/>
            <arg value="AssertError"/>
            <arg value="AssertEvent"/>
            <arg value="AssertEventPropertyValue"/>
            <arg value="AssertMethodValue"/>
            <arg value="AssertNoEvent"/>
            <arg value="AssertPixelValue"/>
            <arg value="AssertPropertyValue"/>
            <arg value="AssertStyleValue"/>
            <arg value="AssertTitle"/>
            <arg value="AssertType"/>
            <arg value="AssertURL"/>
            <arg value="CheckEmbeddedFonts"/>
            <arg value="ChangeState"/>
            <arg value="CompareBitmap"/>
            <arg value="CreateBitmapReferences"/>
            <arg value="DispatchEvent"/>
            <arg value="DispatchKeyEvent"/>
            <arg value="DispatchMouseClickEvent"/>
            <arg value="DispatchMouseEvent"/>
            <arg value="ExcludeFileLocation"/>
            <arg value="ExcludeFileLocationApollo"/>
            <arg value="ExitWhenDone"/>
            <arg value="IncludeListTextFile" />
            <arg value="IncludeFileLocation" />
            <arg value="Localhost8080" />
            <arg value="MustellaPNGEncoder"/>
            <arg value="Pause"/>
            <arg value="ResetComponent"/>
            <arg value="RunCode"/>
            <arg value="RunCodeEvent"/>
            <arg value="SaveBitmapFailures"/>
            <arg value="ScriptRunner"/>
            <arg value="SendFormattedResultsToLog" />
            <arg value="SendResultsToRunner"/>
            <arg value="SetProperty"/>
            <arg value="SetStyle"/>
            <arg value="SetShowRTE"/>
            <arg value="SetURL"/>
            <arg value="SocketAddress"/>
            <arg value="TestCase"/>
            <arg value="TestOutput"/>
            <arg value="TestResult"/>
            <arg value="TestStep"/>
            <arg value="TypeInfo"/>
            <arg value="UnitTester"/>
            <arg value="VerboseMode"/>
            <arg value="WaitForEffectsToEnd"/>
            <arg value="WaitForEvent"/>
            <arg value="WaitForLayoutManager"/>
            <arg value="WaitForSandboxApp"/>
            <arg value="WaitForWindow"/>
        </exec>
    </target>


    <!-- 
        FixMe: if used with Apache the player stuff has to be updated to use 
               FLASHPLAYER_DEBUGGER.
    -->
    <target name="post_install_mac" if="is_mac" >
        <echo message="setting to MAC, got ${host_os_name}" />
        <chmod perm="777" verbose="true" maxparallel="50">
            <dirset dir="${sdk.dir}/in"  >
            </dirset>
        </chmod>
        <chmod perm="777" verbose="true" maxparallel="50" >
            <fileset dir="${sdk.dir}/in" />
        </chmod>
        <condition property="player.name" value="Flash Player Debugger" >
            <and>
            <available file="${sdk.dir}/in/player/${player.version}/mac/Flash Player Debugger.app.zip" />
            <not>
            <equals arg1="player.version" arg2="10" />
            </not>
            </and>
        </condition>
    
        <property name="player.name" value="Flash Player" />
    
        <echo>player name: ${player.name}</echo>
        
        <unzip dest="${mustella.dir}/build/in/player/${player.version}/mac" src="${mustella.dir}/build/in/player/${player.version}/mac/${player.name}.app.zip" />
        <property name="player.dir" value="${sdk.dir}/in/player/${player.version}/mac/${player.name}.app/Contents/MacOS" />
        <property name="player" value="${player.dir}/${player.name}" />
        <!-- for some reason, nothing is executable on the mac, change all that -->
        <chmod file="${player}" perm="777" />
        <chmod file="${sdk.dir}/bin/mxmlc" perm="777" />
        <chmod file="${sdk.dir}/bin/compc" perm="777" />
        <antcall target="chmod_shells" />
        <chmod perm="777" verbose="true" maxparallel="50" >
            <fileset dir="${sdk.dir}/bin" />
        </chmod>
        <chmod perm="777" verbose="true"  >
            <fileset dir="${sdk.dir}/lib" />
        </chmod>
        <chmod perm="777" verbose="true"  >
            <fileset dir="${sdk.dir}/frameworks/libs" />
        </chmod>
        <chmod perm="777" verbose="true"  >
            <fileset dir="${sdk.dir}/frameworks/rsls" />
        </chmod>
        <chmod perm="777" verbose="true"  >
            <fileset dir="${sdk.dir}/frameworks/themes" />
        </chmod>
        <chmod perm="777" verbose="true"  maxparallel="50" >
            <fileset dir="${sdk.dir}/frameworks/locale" />
        </chmod>
        <chmod perm="777" verbose="true" dir="${sdk.dir}/frameworks" includes="*" >
        </chmod>
        <chmod perm="777" verbose="true" maxparallel="50">
            <dirset dir="${mustella.dir}/tests"  >
            </dirset>
        </chmod>
        <antcall target="delete_cache">
            <param name="directory" value="/Users/${env.USER}/Library/Caches/Adobe/Flash Player/AssetCache" />
        </antcall>
    </target>

    <!-- 
        FixMe: if used with Apache the player stuff has to be updated to use 
               FLASHPLAYER_DEBUGGER. 
    -->
    <target name="post_install_win_2" if="version_in_name" >

        <exec   executable="chmod.exe" dir="/cygwin/bin" > 
            <arg value="777" />
            <arg value="${player.dir}/Install Flash Player ${player.version} Plugin.exe" />
            <arg value="${player.dir}/Install Flash Player ${player.version} ActiveX.exe" />
        </exec>
    
        <exec executable="${player.dir}/Install Flash Player ${player.version} Plugin.exe" >
            <arg value="/s" />
        </exec>
            
        <exec executable="${player.dir}/Install Flash Player ${player.version} ActiveX.exe" >
            <arg value="/s" />
        </exec>
        </target>
    
        <target name="post_install_win_2a" unless="version_in_name" >
        <echo>calling ${player.dir}/InstallPlugin.exe</echo>
        <exec   executable="chmod.exe" dir="/cygwin/bin" > 
            <arg value="777" />
            <arg value="${player.dir}/InstallPlugin.exe" />
            <arg value="${player.dir}/InstallAX.exe" />
        </exec>
        <exec executable="${player.dir}/InstallPlugin.exe" >
            <arg value="-install" />
            <arg value="plugin" />
        </exec>
        <exec executable="${player.dir}/InstallAX.exe" >
            <arg value="-install" />
            <arg value="activex" />
        </exec>
    </target>

    <!-- 
        FixMe: if used with Apache the player stuff has to be updated to use 
               FLASHPLAYER_DEBUGGER. 
    -->
    <target name="post_install_win" if="is_win" >

        <condition property="player.name" value="FlashPlayerDebugger.exe" >
            <and>
            <available file="${sdk.dir}/in/player/${player.version}/win/FlashPlayerDebugger.exe" />
            <not>
            <equals arg1="player.version" arg2="10" />
            </not>
            </and>
        </condition>
    
        <property name="player.name" value="FlashPlayer.exe" />
    
            <property name="player.dir" value="${sdk.dir}/in/player/${player.version}/win" />
            <property name="player" value="${player.dir}/${player.name}" />
    
        <echo>player is ${player}</echo>
    
        <exec   executable="chmod.exe" dir="/cygwin/bin" > 
            <arg value="+x" />
            <arg value="${player}" />
        </exec>
    
        <antcall target="delete_cache">
            <param name="directory" value="${HOMEPATH}/Application Data/Adobe/Flash Player/AssetCache" />
        </antcall>
        <!-- run the installer (for the browsers) -->
        <condition property="version_in_name" value="true" >
            <and>   
                <not>
                    <equals arg1="10.1" arg2="${player.version}" />
                </not>
                <not>
                    <equals arg1="10.2" arg2="${player.version}" />
                </not>
            </and>  
        </condition>
    
        <echo> version in name: ${version_in_name}</echo>
    
        <antcall target="post_install_win_2" />
        <antcall target="post_install_win_2a" />

    </target>

    <!-- 
        FixMe: if used with Apache the player stuff has to be updated to use 
               FLASHPLAYER_DEBUGGER. 
    -->
    <target name="post_install_linux" if="is_linux" >
        <!-- on Linux, this doesn't really finish the installation task -->
        <echo message="setting to linux, got ${host_os_name}" />
        <property name="player.dir" value="${sdk.dir}/in/player/${player.version}/lnx" />
        <property name="player" value="${player.dir}/flashplayer" />
        <!-- untar the player and reset its mode -->
        <untar src="${player.dir}/flashplayer.tar.gz" compression="gzip" dest="${player.dir}" />
        <chmod file="${player.dir}/flashplayer" perm="777" />
        <chmod file="${sdk.dir}/bin/mxmlc" perm="777" />
        <chmod file="${sdk.dir}/bin/compc" perm="777" />
        <chmod file="${mustella.dir}/mini_run.sh" perm="777" />
        <chmod file="${mustella.dir}/shellrunner.sh" perm="777" />
        <antcall target="chmod_shells" />
        <untar src="${player.dir}/install_flash_player_${player.version}_linux.tar.gz" compression="gzip" dest="${player.dir}" />
    </target>

    <target name="fix_rsl_failover_target" description="Edit flex-config.xml file failover targets">
        <exec executable="${shell}" failonerror="false">
            <arg value="${mustella.dir}/scripts/fix_rsls.sh" />
            <arg value="${mustella.dir}" />
        </exec>
    </target>

    <target name="delete_cache" >
        <echo>delete cache: ${directory}</echo>
        <!-- chmod dir="${directory}" perm="777" / -->
        <delete quiet="false" dir="${directory}" verbose="true" failonerror="false"/>
    </target>

    <!-- 
        FixMe: For Apache, if this is needed, all the player.dir and player.name stuff 
            needs to be updated to use FLASHPLAYER_DEBUGGER.
    -->
    <target name="postinstall">
        <echo message="If this target is needed it needs to be updated for Apache"/>
    </target>
    <!--target name="postinstall" depends="get_os,post_install_mac,post_install_win,post_install_linux" description="browser install, etc against the sdk.dir"/-->

    <!-- some settings for a specialized run that grabs the latest aik kit and unzips it over
         a regular installation

    On the mac side, this may fail to find some classes on for ftp. If this happens,
    the probable fixes are to grab these:

    http://jakarta.apache.org/site/downloads/downloads_oro.cgi
    http://commons.apache.org/downloads/download_net.cgi


    -->

    <!-- target name="aik-codex-grab" >

    <property name="viewpath" refid="flex.test.classpath" />
    <echo>path to use: ${viewpath}</echo>

    <ant antfile="${mustella.dir}/aircodex.xml" inheritRefs="true" target="aik-http-fetch"/>

    </target -->

    <property name="aik.filedrop" value="vulcan.corp.adobe.com" />

    <!-- condition property="aik.latest.dir" value="Apollo_1/Connections/apms/mac/apollo/en_US" >
    <os family="mac"/>
    </condition>
        <condition property="aik.latest.dir" value="Apollo_1/Connections/apms/win/apollo/en_US" >
    <os family="windows"/>
    </condition -->

    <condition property="aik.dist.file" value="archive_air_1.5_sdk.tbz2" >
    <os family="mac"/>
    </condition>

    <!-- WIP -->
    <condition property="aik.dist.file" value="archive_air_1.5_sdk.zip" >
    <os family="windows"/>
    </condition>


    <property name="aik.latest.file" value="latest" />

    <property name="USER" value="adobenet\labuser" />
    <property name="PASSWD" value="" />

    <target name="aik-integrate" >
        <ant antfile="${mustella.dir}/aik.xml" target="aik-integrate"/>
    </target>

    <!-- we would override file drop on the command line -->
    <property name="filedrop" value="ftp://P02filusr01/Flex_SDK"/>
    <property name="ftpserver" value="P02filusr01.corp.adobe.com" />


    <!-- make it possible to fetch on the fly, or be told what to fetch from local.properties
    -->
    <target name="install" if="installbuild" description="--> installs flex, either a specific build, or latest approved build" >

        <!-- vestages of the old naming -->
        <condition property="build_branch" value="trunk" >
        <equals arg1="${branch}" arg2="Mainline" />
        </condition>
        <property name="build_branch" value="${branch}" />


        <!-- when installbuild=successful, we grab the build indicated in the 
             successfulBuild.properties file. 
             when installbuild=true  AND server=<some build id>  we will install
             the build indicated by ${server}. 
          -->

        <condition property="fetching.server" value="${server}" >
                <and>
                        <equals arg1="${installbuild}" arg2="true" />
                        <isset property="server" />
                </and>
        </condition>

        <!-- go get successfulBuild.properties -->
        <ftp verbose="true" server="${ftpserver}" userid="${realUser}"  password="${realPwd}" action="get" remotedir="Flex_SDK/${build_branch}" >
            <fileset dir="${mustella.dir}" >
                <include name="successfulBuild.properties"/>
                </fileset>
        </ftp>


        <!-- the filenames should take, even if the server value is already set -->
        <property prefix="fetching." file="${mustella.dir}/${installbuild}Build.properties" />

        <!-- the current fetched version on disk -->
        <property prefix="currently." file="${mustella.dir}/lastflex.properties" />

    <echo>Version to get would be: ${fetching.server}</echo>
        <echo>Version we have is: ${currently.lastbuild}</echo>
    
        <condition property="do_actual_fetch" value="true" >
          <not>
              <equals arg1="${currently.lastbuild}" arg2="${fetching.server}"/>
          </not>
        </condition>
    
    
        <!-- is it ever the case that we want a successful return if the build isn't new? -->
        <condition property="failIfNotNew" value="true">
            <not>
            <isset property="failIfNotNew" />
            </not>
        </condition>
    
    
        <condition property="exit_with_msg" value="true">
            <and>
            <not>
                <equals arg1="${do_actual_fetch}" arg2="true"/>
            </not>
            <isset property="failIfNotNew"/>
            </and>
        </condition>
    
        <echo> have: ${currently.lastbuild}; would fetch:${fetching.server} </echo>
    
    
        <antcall target="do_fail" >
            <param name="msg" value="No new build to fetch, exiting" />
        </antcall>
    
    
        <!-- if directed to get a particular build, or if this is a first download, 
             it's possible mainZip and langZip haven't been set. 
          -->
        <condition property="mainZip" value="${fetching.mainZip}" >
            <isset property="fetching.mainZip" />
        </condition>
    
        <condition property="langZip" value="${fetching.langZip}" >
            <isset property="fetching.langZip" />
        </condition>
    
    
        <!-- if directed to get a particular build, it's possible
             mainZip and langZip haven't been set. 
          -->
    
    
        <property name="mainZip" value="${on_disk.mainZip}" />
        <property name="langZip" value="${on_disk.langZip}" />
    
    
        <antcall target="grab_build" />
    
    </target>


    <target name="grab_build" if="do_actual_fetch" >

        <echo message="installing build ${fetching.server}" />
        <delete file="${mustella.dir}/${mainZip}" quiet="true" />
        <delete file="${mustella.dir}/${langZip}" quiet="true" />
        <delete dir="${mustella.dir}/build" quiet="true"/>
        <mkdir dir="${mustella.dir}/build" />
        <condition property="build_branch" value="trunk" >
            <equals arg1="${branch}" arg2="Mainline" />
        </condition>
        <property name="build_branch" value="${branch}" />

        <ftp verbose="true" server="${ftpserver}" userid="${realUser}"  password="${realPwd}" action="get" remotedir="Flex_SDK/${build_branch}/${fetching.server}" >
            <fileset dir="${mustella.dir}" >
                <include name="${langZip}"/>
            </fileset>
        </ftp>
        <ftp verbose="true" server="${ftpserver}" userid="${realUser}"  password="${realPwd}" action="get" remotedir="Flex_SDK/${build_branch}/${fetching.server}" >
            <fileset dir="${mustella.dir}" >
                <include name="${mainZip}"/>
            </fileset>
        </ftp>
        <echo file="${mustella.dir}/lastflex.properties" append="false">lastbuild=${fetching.server}</echo>

        <!-- unfortunately, ant's unzip doesn't preserve symbolic links. Problematic on the mac, for AIR
        for this case, we use the native unzip -->
        <exec  executable="${unzip}" >
            <arg value="${mustella.dir}/${mainZip}" />
            <arg value="-d" />
            <arg value="${mustella.dir}/build" />
        </exec>
        <exec  executable="${unzip}" >
            <arg value="${mustella.dir}/${langZip}" />
            <arg value="-d" />
            <arg value="${mustella.dir}/build" />
        </exec>

        <antcall target="fetch_utilities" />
    </target>

    <target name="fetch_utilities" unless="skip_utilities_fetch" description="unzip test certs">

        <!-- ${server} is the build id, which corresponds to a directory on the filedrop -->

        <delete file="${mustella.dir}/utilities.zip" quiet="true" />
        <ftp verbose="true" server="${ftpserver}" userid="${realUser}"  password="${realPwd}" action="get" remotedir="Flex_SDK/${build_branch}/${fetching.server}" >
            <fileset dir="${mustella.dir}" >
                <include name="utilities.zip"/>
            </fileset>
        </ftp>

        <exec  executable="${unzip}" >
            <arg value="-o" />
            <arg value="${mustella.dir}/utilities.zip" />
            <arg value="-d" />
            <arg value="${mustella.dir}/build" />
        </exec>
        <!-- the signing cert should go to a neutral location, because vetting and regular runs share it -->
        <copy verbose="true" file="${mustella.dir}/build/frameworks/rsls/rootcert.der" todir="${tmp.dir}/" />

    </target>

    <target name="setbuildID"  >
        <echo message="Target file was: ${mustella.dir}/${build.version.file}" />
        <property file="${mustella.dir}/${build.version.file}" />
        <property name="build.id" value="${server}" />
        <echo message="${build.id}"/>
    </target>

    <target name="populateExcludeTable"  if="db_time" depends="getExcludeIds" >

        <echo>populate exclude, got this for db time: ${db_time}</echo>
        <!-- this won't do anything for local runs where current.run.id = -1 -->
    
        <!--
            <java classname="mustella.CopyExcluded" >
                <classpath refid="flex.test.classpath"/>
                <sysproperty key="run_id" value="${current.run.id}" />
                <sysproperty key="exclude_ids" value="${exclude_ids}" />
                <sysproperty key="untilTime" value="${db_time}" />
        </java>
        -->
    </target>

    <!-- target used in testing: -->
    <target name="queryOnly" depends="getConfigId,getExcludeIds,actualQueryResults"/>

    <target name="distributedReportQuery" depends="getExcludeIds,actualQueryResults,do_sendResults"/>

    <target name="actualQueryResults" unless="new_failures" >

        <taskdef name="queryresultstask" classname="mustella.QueryResultsTask"
          classpathref="flex.test.classpath"/>

        <condition property="query.outfile" value="${mustella.dir}/lastrun.html" >
                <equals arg1="${query.outfile}" arg2=""/>
        </condition>
    
        <!-- some additions for the distributed world: -->
            <property name="distributed" value="${distributed}" />
            <property name="compile_id" value="${compile_id}" />
    
        <queryresultstask  id="${current.run.id}" type="${run_type}" file="${query.outfile}" config="${config_id}" exclude="${exclude_ids}" untilTime="${db_time}" subtitle="${subtitle}" reranCount="${number_reran}" runnerCount="${num_runners}" >
        </queryresultstask>
        
          <echo message="total failures: ${failures}" />
          <echo message="new failures: ${new_failures}" />
          <echo message="new passes: ${new_passes}" />
          <echo message="compile errors: ${compile_errors}" />
    
        <!-- set prop that may lead to auto exclude -->
        <condition property="auto_exclude_and_failures" value="true" >
            <and>
                <not>
                <equals arg1="${failures}" arg2="0" />
                </not>
                <istrue value="${auto_exclude}" />
            </and>
        </condition>

    </target>

    <target name="queryResults" depends="setbuildID,setHostName,getExcludeIds,actualQueryResults"/>

    <property name="include_list" value="" />

    <!-- target for run only (no compile -->
    <target name="sendResultsRunOnly" depends="dedicatedRun,queryResults,do_sendResults" >
        <echo>my run id is ${current.run.id}</echo>
    </target>

    <!-- if we're doing re-run, the milestone end will be wrong -->
    <target name="update_milestones" if="pmd" >
        <java classname="mustella.InsertMilestone" failonerror="false" fork="false">
            <classpath refid="flex.test.classpath"/>
            <sysproperty key="run_id" value="${current.run.id}" />
            <sysproperty key="col" value="run_start" />
            <sysproperty key="time" value="${run_start}" />
        </java>
    
        <!-- call the other one if needed -->
        <antcall target="update_milestones2" />

    </target>

    <target name="update_milestones2" if="skip_retry_failures" >
        <java classname="mustella.InsertMilestone" failonerror="false" fork="false">
            <classpath refid="flex.test.classpath"/>
            <sysproperty key="run_id" value="${current.run.id}" />
            <sysproperty key="col" value="run_end" />
            <sysproperty key="time" value="${run_end}" />
        </java>
    </target>

    <target name="waitPMD" if="pmd" >

        <exec  executable="${shell}" failonerror="true" dir="${mustella.dir}" >
            <arg value="pmd_waiter.sh" />
            <arg value="${num_runners}" />  <!-- this is the number of subRunners to wait for -->
        </exec>
        <echo>finished with the wait PMD</echo>
        <!-- note the end of time -->
        <tstamp>
            <format pattern="yyyy-MM-dd HH:mm:ss" property="run_end" />
        </tstamp>
        <echo>waitPMD ends, time stamp: ${run_end} </echo>
    </target>

    <!-- for poor man's distributed, touch files to let the geniuses know it's time -->
    <target name="dolePMD" depends="pmd_all_swf_set_maker">
        <!-- try parallel, but make sure we sleep to let the server come up -->
        <echo file="${mustella.dir}/actualswfs.tmp">${them_swfs}</echo>
        <!-- note beginning of time -->
        <tstamp>
         <format pattern="yyyy-MM-dd HH:mm:ss" property="run_start"  />
        </tstamp>
    
        <echo>dolePMD begins, timestamp: ${run_start}</echo>
    
        <parallel threadcount="2">
            <java classname="mustella.Doler" failonerror="true" fork="true">
              <classpath refid="flex.test.classpath"/>
            <arg path="${mustella.dir}/actualswfs.tmp" />
            <sysproperty key="run_id" value="${current.run.id}" />
        </java>
            <!-- NYI java classname="mustella.NanoHTTPD" failonerror="true" fork="true">
              <classpath refid="flex.test.classpath"/>
            <sysproperty key="mustella.dir" value="${mustella.dir}" />
        </java -->
            <sequential>        
            <echo>sequential begins</echo>
            <sleep seconds="10" />
            <echo>done with the sleep.</echo>
            <!-- perhaps also do the directory side of things -->
            <echo file="${mustella.dir}/actuals.tmp">${sdk.mustella.swffiles}</echo>
            <echo>issuing: ${shell} ${mustella.dir}/pmd_doler.sh ${num_runners} </echo>
            <exec  executable="${shell}" failonerror="true">
                <arg value="${mustella.dir}/pmd_doler.sh" />
                    <arg value="${num_runners}" /> 
                <arg value="${mustella.dir}" />
            </exec>
            <echo>done with pmd_doler script.</echo>
                
            <echo>Sending shutdown to the web server</echo>
            <!-- NYI get ignoreerrors="true" src="http://localhost/shutdown" dest="${mustella.dir}/tmp1a" / -->
            </sequential>
        <tstamp>
         <format pattern="yyyy-MM-dd HH:mm:ss" property="doler_end"  />
        </tstamp>
        <echo>dolePMD ends, timestamp: ${doler_end}</echo>
    
        </parallel>
    </target>
    
    <target name="test_server" >
        <java classname="mustella.NanoHTTPD" failonerror="true" fork="true">
          <classpath refid="flex.test.classpath"/>
            <sysproperty key="mustella.dir" value="${mustella.dir}" />
        </java>

    </target>
 
    <target name="sendResults" depends="run,queryResults,do_sendResults" if="sdk.mustella.includes"/>

    <target name="autoExcludeFailures" if="auto_exclude_and_failures" >
        <!-- should also check count of failures before being here-->
        <echo>auto excluding! ${auto_exclude}</echo>
        <property name="bug_id" value="${auto_exclude_bug_id}" />
        <property name="exclude_id" value="${auto_exclude_config_value}" />
        <echo>setting exclude_filename, is it? ${exclude_filename}</echo>
        <antcall target="excludeFromRunId" >
            <param name="exclude_filename" value="${mustella.dir}/failures.out" />
        </antcall>
        <antcall target="excludeFromFile">
            <param name="exclude_filename" value="${mustella.dir}/failures.out" />
        </antcall>
    </target>

    <target name="do_sendResults" depends="autoExcludeFailures" if="sdk.mustella.includes">

        <condition property="send_choice" value="true">
            <istrue value="${always_send}" />
        </condition>
    
        <condition property="browser_name2" value="AIR" >
                <istrue value="${use_apollo}" />
        </condition>
    
        <condition property="device_subject" value="${device_name}" >
                <istrue value="${run_mobile_tests}" />
        </condition>
    
        <condition property="device_subject" value="${short_os_name}" >
                <isset property="short_os_name" />
        </condition>
    
    
        <!-- Set it if it wasn't set so we don't end up with, literally, ${device_name} in the subject. -->
        <property name="device_subject" value="" />
    
        <basename file="${browser_name}" property="tmp_browser_name" suffix=".exe" />
    
        <condition property="browser_name2" value="${tmp_browser_name}" >
            <not>
                <equals arg1="${browser_name}" arg2="Standalone" />
            </not>
        </condition>
    
        <!-- if browser_name2 isn't set yet, it must be Standalone -->
        <property name="browser_name2" value="Standalone" />
    
        <echo message="send results logic, vars: new_failures, failures, compile_errors, new passes: ${new_failures}, ${failures}, ${compile_errors}, ${new_passes}" />
    
        <!-- send notification: if there are failures, compile errors, or new passes -->
        <condition property="send_choice" value="true">
            <or>
    
            <not>
                <equals arg1="${new_failures}" arg2="0" /> <!-- this was simply failures -->
            </not>
    
            <not>
                <equals arg1="${compile_errors}" arg2="0" />
            </not>
    
            <not>
                <equals arg1="${new_passes}" arg2="0" />
            </not>
    
            </or>
        </condition>
    
        <!-- set recipients if we might need them -->
        <condition property="actual_recipients" value="${recipients}" >
               <equals arg1="${send_choice}" arg2="true" />
        </condition>
    
        <!-- and, finally, we will send if there's someone who wants a lot of email -->
        <condition property="send_choice" value="true" >
            <isset property="always_recipients" />
        </condition>
    
        <!-- set the subject. Various choices -->
        <condition property="subject" value="FAIL: ${vetting} ${branch_name} ${browser_name2} ${server} ${device_subject} Mustella Results" >
            <and>
            <istrue value="${send_choice}" />
            <not>
                <equals arg1="${failures}" arg2="0" />
            </not>
            </and>
        </condition>
    
        <condition property="subject" value="FAIL: ${vetting} ${branch_name} ${browser_name2} ${server} ${device_subject} Mustella Results" >
            <and>
            <istrue value="${send_choice}" />
            <not>
                <equals arg1="${compile_errors}" arg2="0" />
            </not>
            </and>
        </condition>
    
    
        <condition property="subject" value="PASS: ${vetting} ${branch_name} ${browser_name2} ${server} ${device_subject} Mustella Results" >
            <and>
            <istrue value="${send_choice}" />
            <not>
                <equals arg1="${new_passes}" arg2="0" />
            </not>
            </and>
        </condition>
    
        <!-- finally, if the subject got this far, and is unset, it's gotta be a pass case
             only always_recipients would be interested.
        -->
        <condition property="subject" value="PASS: ${vetting} ${branch_name} ${browser_name2} ${server} ${device_subject} Mustella Results" >
            <not>
                <isset property="subject" />
            </not>
        </condition>
    
        <!-- recipients might have been set on invocation. If not, they get these defaults -->
        <condition property="recipients" value="FlexSDKQA@adobe.com">
            <and>
            <not>
                <isset property="recipients" />
            </not>
            <equals arg1="${run_type}" arg2="mini" />
            </and>
        </condition>
    
        <condition property="recipients" value="FlexSDKQA@adobe.com,FlexSDKDev@adobe.com" >
            <and>
            <not>
                <isset property="recipients" />
            </not>
            <not>
                <equals arg1="${run_type}" arg2="mini" />
            </not>
            </and>
        </condition>
    
        <!-- condition property="always_recipients" value="laupark@adobe.com" >
            <not>
                <isset property="always_recipients" />
            </not>
        </condition -->
    
        <echo>actuals are: ${actual_recipients}</echo>
        <condition property="actual_recipients" value="${always_recipients}" >
            <isset property="always_recipients" />
        </condition>
        <condition property="send_choice" value="true" >
            <isset property="always_recipients" />
        </condition>
        <echo>actuals are: ${actual_recipients}</echo>
    
        <antcall target="push_email" >
            <!-- param name="file"   value="${mustella.dir}/lastrun.html"/ -->
            <param name="file"   value="${query.outfile}"/>
            <param name="relay"  value="inner-relay-1.corp.adobe.com"/>
            <param name="subj"   value="${subject}"/>
            <param name="sender" value="mustella tester &lt;bolaughl@adobe.com&gt;"/>
            <param name="recips" value="${actual_recipients}"/>
        </antcall>
    </target>

    <target name="push_email" if="send_choice">
        <echo>Sending email to: ${recips}</echo>
        <java classname="utils.HtmlNotify">
            <classpath refid="flex.test.classpath"/>
            <arg value="${file}"/>
            <arg value="${relay}"/>
            <arg value="${subj}"/>
            <arg value="${sender}"/>
            <arg value="${recips}"/>
        </java>
    </target>

    <target name="mustella">
        <ant target="compc-call" antfile="${sdk.dir}/build.xml" dir="${sdk.dir}" inheritAll="false">
            <property name="frameworks.dir" value="${sdk.dir}/frameworks" />
            <!--<property file="sdk/testsuites/mustella/flexqa-classes.properties"/>-->
            <property name="compc.output" value="${mustella.dir}/mustella.swc"/>
            <!--<property name="compc.args" value="-namespace http://www.adobe.com/2006/flexqa ${mustella.dir}/flexqa-manifest.xml -source-path ${mustella.dir}"/>-->
            <property name="compc.libs" value="${sdk.dir}/frameworks/libs/framework.swc,${sdk.dir}/frameworks/libs/rpc.swc"/>
            <!-- ,${sdk.dir}/frameworks/charts.swc.,${root.dir}/enterprise/frameworks/rpc.swc -->
            <property name="mxml.manifest" value="${mustella.dir}/flexqa-manifest.xml" />
        </ant>
    </target>

  <!-- The time issue. a "full run" syncs to source code based on a particular time;
       that same time is used to sync to the database of excludes.

       The p4 sync with times uses server local time and the p4 server is in Newton
       The db server is in SF
   -->
    <property name="server_time_vettting_file" value="${tmp.dir}/.server.time.vetting" />
    <property name="server_time_file" value="${tmp.dir}/.server.time" />
    <target name="server_time" unless="server_time">
        <!-- if this is a local run(run id = -1), get the time stamp now. If
        this is a test server run, use the sync'd time which should have previously been created
        server_time is used as a sync point for check in time
        -->
        <tstamp>
            <format pattern="yyyy/MM/dd HH:mm:ss" property="SERVER_TSTAMP" timezone="America/New_York" />
        </tstamp>
        <echo>server_time=${SERVER_TSTAMP}</echo>
        <property name="server_time" value="${SERVER_TSTAMP}" />
        <mkdir dir="${tmp.dir}"/>
        <echo> file="${server_time_vettting_file}"</echo>
        <echo file="${server_time_vettting_file}" append="false">server_time="${SERVER_TSTAMP}"</echo>
        <echo>server_time=${SERVER_TSTAMP}</echo>
        <chmod file="${server_time_vettting_file}" perm="666" />
    </target>

    <property name="db_time_vetting_file" value="${tmp.dir}/.db.time.vetting" />
    <property name="db_time_file" value="${tmp.dir}/.db.time" />
    <target name="db_time" unless="db_time">
        <!-- if this is a local run (run id = -1), get the time stamp now. If
        this is a test server run, use the sync'd time which should have previously been created
        db_time is used as a sync point for excludes
        -->
        <tstamp>
            <format pattern="yyyy/MM/dd HH:mm:ss" property="DB_TIME" />
        </tstamp>
        <mkdir dir="${tmp.dir}"/>
        <echo>db_time=${DB_TIME}</echo>
        <property name="db_time" value="${DB_TIME}" />
        
        <condition property="quoted_value" value="db_time=${DB_TIME}" >
            <equals arg1="${no_quote}" arg2="true" />
        </condition>
        <property name="quoted_value" value="db_time='${DB_TIME}'" />
           
        <echo file="${db_time_vetting_file}" append="false">${quoted_value}</echo>
        <chmod file="${db_time_vetting_file}" perm="666" />
        <property file="${db_time_vetting_file}" />
    </target>
    
    <target name="get_db_time" unless="db_time" >
        <tstamp>
            <format pattern="yyyy-MM-dd HH:mm:ss" property="DB_TIME" />
        </tstamp>
        <property name="fetched_db_time" value="${DB_TIME}" />
        <property name="db_time" value="${DB_TIME}" />
    </target>
        
    <target name="get_server_time" unless="server_time" >
        <tstamp>
            <format pattern="yyyy-MM-dd HH:mm:ss" property="SERVER_TIME" />
        </tstamp>
        <property name="fetched_db_time" value="${SERVER_TIME}" />
        <property name="db_time" value="${SERVER_TIME}" />
    </target>

    <property name="time_file" value="${tmp.dir}/.sync_time" />
    <target name="get_time_to_file" depends="get_db_time,get_server_time" >
    
        <echo>writing ${time_file}</echo>   
        <echo file="${time_file}" append="false">server_time='${SERVER_TIME}'
db_time='${DB_TIME}'</echo>
    
    </target>

    <target name="pversion1" depends="get_os,setup_mac,setup_windows,setup_linux" unless="${run_mobile_tests}" >
        <echo>with ${player} </echo>
            <taskdef name="getplayerversion" classname="mustella.GetPlayerVersionTask" classpathref="flex.test.classpath"/>
        <getplayerversion  property="playerversion" swf="${mustella.dir}/version.swf" player="${player}" />
        
        <echo append="true" file="${mustella.dir}/latest.txt">player_version=${playerversion}</echo>        
    </target>
    
    <target name="get_date"  >
        <tstamp>
            <format pattern="yyyy-MM-dd" property="DATESTAMP"  />
        </tstamp>
        <property name="fetched_date" value="${DATESTAMP}" />
    </target>

    <target name="test_target" >
        <p4change description="test2" />
        <echo>${p4.change}</echo>
    </target>

    <target name="load-task">
        <property name="FLEX_HOME" value="${sdk.dir}" />
        <!-- load the <mxmlc> task; we can't do this at the <project> level -->
        <!-- because targets that run before flexTasks.jar gets built would fail -->
        <taskdef resource="flexTasks.tasks" classpath="${basedir}/../lib/flexTasks.jar"/>
    </target>

    <target name="build-imagediff" depends="load-task" unless="imagediff-built" >
        <property file="${sdk.dir}/build.properties" />
        <!-- compile the basic tests -->
        <mxmlc fork="true"
            file="${basedir}/utilities/ImageDiffAIR/src/ImageDiffAIR.mxml">
            <jvmarg line="${mxmlc.jvm.args}"/>
            <load-config filename="${sdk.dir}/frameworks/air-config.xml"/>
        </mxmlc>
    </target>
    
    <target name="check-imagediff">
        <available file="${basedir}/utilities/ImageDiffAIR/src/ImageDiffAIR.swf" property="imagediff-built" />
    </target>
    
    <target name="imagediff" depends="check-imagediff,build-imagediff" >
        <!-- Paths to the adl. -->
        <condition property="adl" value="${env.AIR_HOME}/bin/adl.exe">
            <os family="windows"/>
        </condition>
        <condition property="adl" value="${env.AIR_HOME}/bin/adl">
            <os family="mac"/>
        </condition>
        <condition property="adl" value="${env.AIR_HOME}/bin/adl">
            <os family="unix"/>
        </condition>
        <exec executable="${adl}" dir="${basedir}/utilities/ImageDiffAIR/src" >
            <arg value="${basedir}/utilities/ImageDiffAIR/src/ImageDiffAIR-app.xml"/>
        </exec>
    </target>
</project>

