<?xml version="1.0"?>
<!--
   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

       https://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="recorder-test" default="test6" basedir=".">

    <target name="test6">
        <record name="${output}/rectest6.log" action="start" />
        <echo message="some message6"/>
        <record name="${output}/rectest5.log" action="stop" />
        <echo message="some message7"/>
        <record name="${output}/rectest5.log" action="start" />
        <echo message="some message8"/>
        <record name="${output}/rectest6.log" action="stop" />
    </target>
</project>
