#
# 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.
#

chartType=TIMELINE
chartTitle=Transient Auto-Ack AMQP ${qpid.charting.protocolVersion} plain
chartDescription=10P 10C, transient, auto-ack, 1kB message, plain, ${qpid.charting.brokerVersionA} / ${qpid.charting.brokerVersionB} / ${qpid.charting.brokerVersionC} / ${qpid.charting.brokerVersionD}

yAxisLowerBound=60000
yAxisUpperBound=100000

xAxisTitle=Date
yAxisTitle=Messages Per Second

series.1.statement=SELECT insertedTimestamp, throughputMessagesPerS FROM RESULTS WHERE participantName = 'All' AND testName = 'transient_autoack_plain' AND providerVersion LIKE '%${qpid.charting.brokerVersionA}%' AND protocolVersion = '${qpid.charting.protocolVersion}'
series.1.colourName=blue
series.1.shape=cross
series.1.legend=${qpid.charting.brokerVersionA}

series.2.statement=SELECT insertedTimestamp, throughputMessagesPerS FROM RESULTS WHERE participantName = 'All' AND testName = 'transient_autoack_plain' AND providerVersion LIKE '%${qpid.charting.brokerVersionB}%' AND protocolVersion = '${qpid.charting.protocolVersion}'
series.2.colourName=red
series.2.shape=cross
series.2.legend=${qpid.charting.brokerVersionB}

series.3.statement=SELECT insertedTimestamp, throughputMessagesPerS FROM RESULTS WHERE participantName = 'All' AND testName = 'transient_autoack_plain' AND providerVersion LIKE '%${qpid.charting.brokerVersionC}%' AND protocolVersion = '${qpid.charting.protocolVersion}'
series.3.colourName=dark_green
series.3.shape=cross
series.3.legend=${qpid.charting.brokerVersionC}

series.4.statement=SELECT insertedTimestamp, throughputMessagesPerS FROM RESULTS WHERE participantName = 'All' AND testName = 'transient_autoack_plain' AND providerVersion LIKE '%${qpid.charting.brokerVersionD}%' AND protocolVersion = '${qpid.charting.protocolVersion}'
series.4.colourName=dark_yellow
series.4.shape=cross
series.4.legend=${qpid.charting.brokerVersionD}
