实现功能:对给定的用逗号分隔的字符串,随机返回其中一个。
代码如下:
- /*
- * 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.functions;
- import org.apache.jmeter.engine.util.CompoundVariable;
- import org.apache.jmeter.samplers.SampleResult;
- import org.apache.jmeter.samplers.Sampler;
- import org.apache.jmeter.util.JMeterUtils;
- import java.util.*;
- import java.util.Random;
- /**
- * Function to return a random string you given
- * Pass parameters split by comma
- *
- * @since 2.10
- */
- public class GetRandomStr extends AbstractFunction {
- private static final List<String> desc = new LinkedList<>();
- private static final String KEY = "__getrandomstr"; //$NON-NLS-1$
- static {
- desc.add(JMeterUtils.getResString("getrandomstr_string")); //$NON-NLS-1$
- }
- private Object[] values;
- Random ra;
- int rannum;
- public GetRandomStr() {
- }
- /** {@inheritDoc} */
- @Override
- public String execute(SampleResult previousResult, Sampler currentSampler)
- throws InvalidVariableException {
- String randomString = ""; //$NON-NLS-1$
- ra =new Random();
- rannum = ra.nextInt(values.length);
- try {
- randomString = ((CompoundVariable) values[rannum]).execute();
- } catch (Exception uee) {
- return null;
- }
- return randomString;
- }
- /** {@inheritDoc} */
- @Override
- public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
- //checkParameterCount(parameters, 1);
- values = parameters.toArray();
- }
- /** {@inheritDoc} */
- @Override
- public String getReferenceKey() {
- return KEY;
- }
- /** {@inheritDoc} */
- @Override
- public List<String> getArgumentDesc() {
- return desc;
- }
- }
在messages.properties中增加对应的属性:
- urlencode_string=String to encode in URL encoded chars
- <span style="color: #ff0000;">getrandomstr_string=return a random you given,split by comma</span>
- use_custom_dns_resolver=Use custom DNS resolver
使用截图: