blob: 1a1dc805aeb44eebec2cfd841415af0183d7a52a [file] [log] [blame]
/*
* 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.
*/
package org.apache.jmeter.timers
import org.apache.jmeter.control.LoopController
import org.apache.jmeter.junit.JMeterTestCase
import org.apache.jmeter.sampler.DebugSampler
import org.apache.jmeter.test.assertions.executePlanAndCollectEvents
import org.apache.jmeter.threads.ThreadGroup
import org.apache.jmeter.treebuilder.TreeBuilder
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import kotlin.time.Duration.Companion.seconds
class ConstantThroughputTimerKtTest : JMeterTestCase() {
fun TreeBuilder.oneRequest(body: ThreadGroup.() -> Unit) {
ThreadGroup::class {
numThreads = 1
rampUp = 0
setSamplerController(
LoopController().apply {
loops = 1
}
)
body()
}
}
@Test
fun `throughput as variable`() {
val events = executePlanAndCollectEvents(5.seconds) {
oneRequest {
DebugSampler::class {
// This initializes the variable during the test execution
name = "\${__groovy( vars.put(\"throughput\"\\, \"10000\") )}"
}
DebugSampler::class {
ConstantThroughputTimer::class {
setProperty(
"throughput",
"\${__groovy( vars.get(\"throughput\").toDouble() )}"
)
setProperty("calcMode", 0)
}
}
}
}
assertEquals(
2,
events.size,
"Test should complete within reasonable time, and the test has 2 debug samplers, so we expect 2 events"
)
}
}