refactor: 按照迭代次数和执行时间区分性能测试
This commit is contained in:
parent
9fc151f6e2
commit
5952b01646
|
@ -96,15 +96,27 @@ public class JmeterDocumentParser implements DocumentParser {
|
|||
processCheckoutArguments(ele);
|
||||
processCheckoutResponseAssertion(ele);
|
||||
} else if (nodeNameEquals(ele, CONCURRENCY_THREAD_GROUP)) {
|
||||
processConcurrencyThreadGroup(ele);
|
||||
processThreadGroupName(ele);
|
||||
processCheckoutTimer(ele);
|
||||
processCheckoutBackendListener(ele);
|
||||
} else if (nodeNameEquals(ele, VARIABLE_THROUGHPUT_TIMER)) {
|
||||
processVariableThroughputTimer(ele);
|
||||
} else if (nodeNameEquals(ele, THREAD_GROUP)) {
|
||||
processThreadGroup(ele);
|
||||
//
|
||||
processConcurrencyThreadGroup(ele);
|
||||
Object threadType = context.getProperty("threadType");
|
||||
if (threadType instanceof List) {
|
||||
Object o = ((List<?>) threadType).get(0);
|
||||
((List<?>) threadType).remove(0);
|
||||
if ("DURATION".equals(o)) {
|
||||
processThreadGroup(ele);
|
||||
}
|
||||
if ("ITERATION".equals(o)) {
|
||||
processIterationThreadGroup(ele);
|
||||
}
|
||||
} else {
|
||||
processThreadGroup(ele);
|
||||
}
|
||||
|
||||
processThreadGroupName(ele);
|
||||
processCheckoutTimer(ele);
|
||||
processCheckoutBackendListener(ele);
|
||||
} else if (nodeNameEquals(ele, BACKEND_LISTENER)) {
|
||||
|
@ -772,22 +784,120 @@ public class JmeterDocumentParser implements DocumentParser {
|
|||
*/
|
||||
removeChildren(threadGroup);
|
||||
// elementProp
|
||||
Object targetLevels = context.getProperty("TargetLevel");
|
||||
String threads = "10";
|
||||
if (targetLevels instanceof List) {
|
||||
Object o = ((List<?>) targetLevels).get(0);
|
||||
((List<?>) targetLevels).remove(0);
|
||||
threads = o.toString();
|
||||
}
|
||||
Object rampUps = context.getProperty("RampUp");
|
||||
String rampUp = "1";
|
||||
if (rampUps instanceof List) {
|
||||
Object o = ((List<?>) rampUps).get(0);
|
||||
((List<?>) rampUps).remove(0);
|
||||
rampUp = o.toString();
|
||||
}
|
||||
Object steps = context.getProperty("Steps");
|
||||
String step = "2";
|
||||
if (steps instanceof List) {
|
||||
Object o = ((List<?>) steps).get(0);
|
||||
((List<?>) steps).remove(0);
|
||||
step = o.toString();
|
||||
}
|
||||
Object holds = context.getProperty("Hold");
|
||||
String hold = "2";
|
||||
if (holds instanceof List) {
|
||||
Object o = ((List<?>) holds).get(0);
|
||||
((List<?>) holds).remove(0);
|
||||
hold = o.toString();
|
||||
}
|
||||
Element elementProp = document.createElement("elementProp");
|
||||
elementProp.setAttribute("name", "ThreadGroup.main_controller");
|
||||
elementProp.setAttribute("elementType", "com.blazemeter.jmeter.control.VirtualUserController");
|
||||
threadGroup.appendChild(elementProp);
|
||||
|
||||
threadGroup.appendChild(createStringProp(document, "ThreadGroup.on_sample_error", "continue"));
|
||||
threadGroup.appendChild(createStringProp(document, "TargetLevel", "2"));
|
||||
threadGroup.appendChild(createStringProp(document, "RampUp", "12"));
|
||||
threadGroup.appendChild(createStringProp(document, "Steps", "2"));
|
||||
threadGroup.appendChild(createStringProp(document, "Hold", "1"));
|
||||
threadGroup.appendChild(createStringProp(document, "TargetLevel", threads));
|
||||
threadGroup.appendChild(createStringProp(document, "RampUp", rampUp));
|
||||
threadGroup.appendChild(createStringProp(document, "Steps", step));
|
||||
threadGroup.appendChild(createStringProp(document, "Hold", hold));
|
||||
threadGroup.appendChild(createStringProp(document, "LogFilename", ""));
|
||||
// bzm - Concurrency Thread Group "Thread Iterations Limit:" 设置为空
|
||||
// threadGroup.appendChild(createStringProp(document, "Iterations", "1"));
|
||||
threadGroup.appendChild(createStringProp(document, "Unit", "S"));
|
||||
}
|
||||
|
||||
private void processIterationThreadGroup(Element threadGroup) {
|
||||
// 检查 threadgroup 后面的hashtree是否为空
|
||||
Node hashTree = threadGroup.getNextSibling();
|
||||
while (!(hashTree instanceof Element)) {
|
||||
hashTree = hashTree.getNextSibling();
|
||||
}
|
||||
if (!hashTree.hasChildNodes()) {
|
||||
MSException.throwException(Translator.get("jmx_content_valid"));
|
||||
}
|
||||
// 重命名 tagName
|
||||
Document document = threadGroup.getOwnerDocument();
|
||||
removeChildren(threadGroup);
|
||||
|
||||
// 选择按照迭代次数处理线程组
|
||||
/*
|
||||
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
|
||||
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
|
||||
<boolProp name="LoopController.continue_forever">false</boolProp>
|
||||
<stringProp name="LoopController.loops">1</stringProp>
|
||||
</elementProp>
|
||||
<stringProp name="ThreadGroup.num_threads">100</stringProp>
|
||||
<stringProp name="ThreadGroup.ramp_time">5</stringProp>
|
||||
<boolProp name="ThreadGroup.scheduler">true</boolProp>
|
||||
<stringProp name="ThreadGroup.duration">10</stringProp>
|
||||
<stringProp name="ThreadGroup.delay"></stringProp>
|
||||
<boolProp name="ThreadGroup.same_user_on_next_iteration">true</boolProp>
|
||||
*/
|
||||
// elementProp
|
||||
Object targetLevels = context.getProperty("TargetLevel");
|
||||
String threads = "10";
|
||||
if (targetLevels instanceof List) {
|
||||
Object o = ((List<?>) targetLevels).get(0);
|
||||
((List<?>) targetLevels).remove(0);
|
||||
threads = o.toString();
|
||||
}
|
||||
Object iterateNum = context.getProperty("iterateNum");
|
||||
String loops = "1";
|
||||
if (iterateNum instanceof List) {
|
||||
Object o = ((List<?>) iterateNum).get(0);
|
||||
((List<?>) iterateNum).remove(0);
|
||||
loops = o.toString();
|
||||
}
|
||||
Object rampUps = context.getProperty("iterateRampUpTime");
|
||||
String rampUp = "10";
|
||||
if (rampUps instanceof List) {
|
||||
Object o = ((List<?>) rampUps).get(0);
|
||||
((List<?>) rampUps).remove(0);
|
||||
rampUp = o.toString();
|
||||
}
|
||||
Element elementProp = document.createElement("elementProp");
|
||||
elementProp.setAttribute("name", "ThreadGroup.main_controller");
|
||||
elementProp.setAttribute("elementType", "LoopController");
|
||||
elementProp.setAttribute("guiclass", "LoopControlPanel");
|
||||
elementProp.setAttribute("testclass", "LoopController");
|
||||
elementProp.setAttribute("testname", "Loop Controller");
|
||||
elementProp.setAttribute("enabled", "true");
|
||||
elementProp.appendChild(createBoolProp(document, "LoopController.continue_forever", false));
|
||||
elementProp.appendChild(createStringProp(document, "LoopController.loops", loops));
|
||||
threadGroup.appendChild(elementProp);
|
||||
|
||||
threadGroup.appendChild(createStringProp(document, "ThreadGroup.on_sample_error", "continue"));
|
||||
threadGroup.appendChild(createStringProp(document, "ThreadGroup.num_threads", threads));
|
||||
threadGroup.appendChild(createStringProp(document, "ThreadGroup.ramp_time", rampUp));
|
||||
threadGroup.appendChild(createBoolProp(document, "ThreadGroup.scheduler", false)); // 不指定执行时间
|
||||
threadGroup.appendChild(createStringProp(document, "Hold", "1"));
|
||||
threadGroup.appendChild(createStringProp(document, "ThreadGroup.duration", "10"));
|
||||
threadGroup.appendChild(createStringProp(document, "ThreadGroup.delay", ""));
|
||||
threadGroup.appendChild(createBoolProp(document, "ThreadGroup.same_user_on_next_iteration", true));
|
||||
}
|
||||
|
||||
|
||||
private void processCheckoutTimer(Element element) {
|
||||
/*
|
||||
<kg.apc.jmeter.timers.VariableThroughputTimer guiclass="kg.apc.jmeter.timers.VariableThroughputTimerGui" testclass="kg.apc.jmeter.timers.VariableThroughputTimer" testname="jp@gc - Throughput Shaping Timer" enabled="true">
|
||||
|
@ -856,25 +966,9 @@ public class JmeterDocumentParser implements DocumentParser {
|
|||
return unit;
|
||||
}
|
||||
|
||||
private void processConcurrencyThreadGroup(Element concurrencyThreadGroup) {
|
||||
String testname = concurrencyThreadGroup.getAttribute("testname");
|
||||
concurrencyThreadGroup.setAttribute("testname", testname + "-" + context.getResourceIndex());
|
||||
if (concurrencyThreadGroup.getChildNodes().getLength() > 0) {
|
||||
final NodeList childNodes = concurrencyThreadGroup.getChildNodes();
|
||||
for (int i = 0; i < childNodes.getLength(); i++) {
|
||||
Node node = childNodes.item(i);
|
||||
if (node instanceof Element) {
|
||||
Element ele = (Element) node;
|
||||
if (invalid(ele)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (nodeNameEquals(ele, STRING_PROP)) {
|
||||
parseStringProp(ele);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void processThreadGroupName(Element threadGroup) {
|
||||
String testname = threadGroup.getAttribute("testname");
|
||||
threadGroup.setAttribute("testname", testname + "-" + context.getResourceIndex());
|
||||
}
|
||||
|
||||
private void processVariableThroughputTimer(Element variableThroughputTimer) {
|
||||
|
|
|
@ -21,45 +21,85 @@
|
|||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.duration')">
|
||||
<el-input-number
|
||||
:disabled="true"
|
||||
:placeholder="$t('load_test.duration')"
|
||||
v-model="threadGroup.duration"
|
||||
:min="1"
|
||||
size="mini"/>
|
||||
<el-form-item>
|
||||
<el-radio-group v-model="threadGroup.threadType">
|
||||
<el-radio label="DURATION">{{ $t('load_test.by_duration') }}</el-radio>
|
||||
<el-radio label="ITERATION">{{ $t('load_test.by_iteration') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.rps_limit')">
|
||||
<el-switch v-model="rpsLimitEnable"/>
|
||||
|
||||
<el-input-number
|
||||
:disabled="true"
|
||||
:placeholder="$t('load_test.input_rps_limit')"
|
||||
v-model="threadGroup.rpsLimit"
|
||||
:min="1"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_within')">
|
||||
<el-input-number
|
||||
:disabled="true"
|
||||
placeholder=""
|
||||
:min="1"
|
||||
:max="threadGroup.duration"
|
||||
v-model="threadGroup.rampUpTime"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_minutes')">
|
||||
<el-input-number
|
||||
:disabled="true"
|
||||
placeholder=""
|
||||
:min="1"
|
||||
:max="Math.min(threadGroup.threadNumber, threadGroup.rampUpTime)"
|
||||
v-model="threadGroup.step"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_times')"/>
|
||||
<div v-if="threadGroup.threadType === 'DURATION'">
|
||||
<el-form-item :label="$t('load_test.duration')">
|
||||
<el-input-number
|
||||
:disabled="true"
|
||||
v-model="threadGroup.duration"
|
||||
:min="1"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.rps_limit')">
|
||||
<el-switch v-model="threadGroup.rpsLimitEnable" @change="calculateTotalChart()"/>
|
||||
|
||||
<el-input-number
|
||||
:disabled="true "
|
||||
v-model="threadGroup.rpsLimit"
|
||||
@change="calculateChart(threadGroup)"
|
||||
:min="1"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_within')">
|
||||
<el-input-number
|
||||
:disabled="true"
|
||||
:min="1"
|
||||
:max="threadGroup.duration"
|
||||
v-model="threadGroup.rampUpTime"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_minutes')">
|
||||
<el-input-number
|
||||
:disabled="true"
|
||||
:min="1"
|
||||
:max="Math.min(threadGroup.threadNumber, threadGroup.rampUpTime)"
|
||||
v-model="threadGroup.step"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_times')"/>
|
||||
</div>
|
||||
<div v-if="threadGroup.threadType === 'ITERATION'">
|
||||
<el-form-item :label="$t('load_test.iterate_num')">
|
||||
<el-input-number
|
||||
:disabled="true"
|
||||
v-model="threadGroup.iterateNum"
|
||||
:min="1"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.rps_limit')">
|
||||
<el-switch v-model="threadGroup.rpsLimitEnable" @change="calculateTotalChart()"/>
|
||||
|
||||
<el-input-number
|
||||
:disabled="true || !threadGroup.rpsLimitEnable"
|
||||
v-model="threadGroup.rpsLimit"
|
||||
@change="calculateChart(threadGroup)"
|
||||
:min="1"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_within')">
|
||||
<el-input-number
|
||||
:disabled="true"
|
||||
:min="1"
|
||||
v-model="threadGroup.iterateRampUp"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_seconds')"/>
|
||||
</div>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<el-col :span="14">
|
||||
|
@ -83,6 +123,10 @@ const STEPS = "Steps";
|
|||
const DURATION = "duration";
|
||||
const RPS_LIMIT = "rpsLimit";
|
||||
const RPS_LIMIT_ENABLE = "rpsLimitEnable";
|
||||
const THREAD_TYPE = "threadType";
|
||||
const ITERATE_NUM = "iterateNum";
|
||||
const ITERATE_RAMP_UP = "iterateRampUpTime";
|
||||
|
||||
const hexToRgba = function (hex, opacity) {
|
||||
return 'rgba(' + parseInt('0x' + hex.slice(1, 3)) + ',' + parseInt('0x' + hex.slice(3, 5)) + ','
|
||||
+ parseInt('0x' + hex.slice(5, 7)) + ',' + opacity + ')';
|
||||
|
@ -128,6 +172,9 @@ export default {
|
|||
case RAMP_UP:
|
||||
this.threadGroups[i].rampUpTime = item.value;
|
||||
break;
|
||||
case ITERATE_RAMP_UP:
|
||||
this.threadGroups[i].iterateRampUp = item.value;
|
||||
break;
|
||||
case DURATION:
|
||||
if (item.unit) {
|
||||
this.threadGroups[i].duration = item.value;
|
||||
|
@ -144,6 +191,12 @@ export default {
|
|||
case RPS_LIMIT_ENABLE:
|
||||
this.threadGroups[i].rpsLimitEnable = item.value;
|
||||
break;
|
||||
case THREAD_TYPE:
|
||||
this.threadGroups[i].threadType = item.value;
|
||||
break;
|
||||
case ITERATE_NUM:
|
||||
this.threadGroups[i].iterateNum = item.value;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -157,6 +210,9 @@ export default {
|
|||
case RAMP_UP:
|
||||
this.threadGroups[0].rampUpTime = d.value;
|
||||
break;
|
||||
case ITERATE_RAMP_UP:
|
||||
this.threadGroups[0].iterateRampUp = d.value;
|
||||
break;
|
||||
case DURATION:
|
||||
if (d.unit) {
|
||||
this.threadGroups[0].duration = d.value;
|
||||
|
@ -173,6 +229,12 @@ export default {
|
|||
case RPS_LIMIT_ENABLE:
|
||||
this.threadGroups[0].rpsLimitEnable = d.value;
|
||||
break;
|
||||
case THREAD_TYPE:
|
||||
this.threadGroups[0].threadType = d.value;
|
||||
break;
|
||||
case ITERATE_NUM:
|
||||
this.threadGroups[0].iterateNum = d.value;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -298,6 +298,9 @@ export default {
|
|||
tg.rampUpTime = tg.rampUpTime || 5;
|
||||
tg.step = tg.step || 5;
|
||||
tg.rpsLimit = tg.rpsLimit || 10;
|
||||
tg.threadType = tg.threadType || 'DURATION';
|
||||
tg.iterateNum = tg.iterateNum || 1;
|
||||
tg.iterateRampUp = tg.iterateRampUp || 10;
|
||||
handler.calculateChart(tg);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -33,45 +33,83 @@
|
|||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.duration')">
|
||||
<el-input-number
|
||||
:disabled="isReadOnly"
|
||||
v-model="threadGroup.duration"
|
||||
:min="1"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
<el-form-item>
|
||||
<el-radio-group v-model="threadGroup.threadType">
|
||||
<el-radio label="DURATION">{{ $t('load_test.by_duration') }}</el-radio>
|
||||
<el-radio label="ITERATION">{{ $t('load_test.by_iteration') }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.rps_limit')">
|
||||
<el-switch v-model="threadGroup.rpsLimitEnable" @change="calculateTotalChart()"/>
|
||||
|
||||
<el-input-number
|
||||
:disabled="isReadOnly || !threadGroup.rpsLimitEnable"
|
||||
v-model="threadGroup.rpsLimit"
|
||||
@change="calculateChart(threadGroup)"
|
||||
:min="1"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_within')">
|
||||
<el-input-number
|
||||
:disabled="isReadOnly"
|
||||
:min="1"
|
||||
:max="threadGroup.duration"
|
||||
v-model="threadGroup.rampUpTime"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_minutes')">
|
||||
<el-input-number
|
||||
:disabled="isReadOnly"
|
||||
:min="1"
|
||||
:max="Math.min(threadGroup.threadNumber, threadGroup.rampUpTime)"
|
||||
v-model="threadGroup.step"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_times')"/>
|
||||
<div v-if="threadGroup.threadType === 'DURATION'">
|
||||
<el-form-item :label="$t('load_test.duration')">
|
||||
<el-input-number
|
||||
:disabled="isReadOnly"
|
||||
v-model="threadGroup.duration"
|
||||
:min="1"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.rps_limit')">
|
||||
<el-switch v-model="threadGroup.rpsLimitEnable" @change="calculateTotalChart()"/>
|
||||
|
||||
<el-input-number
|
||||
:disabled="isReadOnly || !threadGroup.rpsLimitEnable"
|
||||
v-model="threadGroup.rpsLimit"
|
||||
@change="calculateChart(threadGroup)"
|
||||
:min="1"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_within')">
|
||||
<el-input-number
|
||||
:disabled="isReadOnly"
|
||||
:min="1"
|
||||
:max="threadGroup.duration"
|
||||
v-model="threadGroup.rampUpTime"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_minutes')">
|
||||
<el-input-number
|
||||
:disabled="isReadOnly"
|
||||
:min="1"
|
||||
:max="Math.min(threadGroup.threadNumber, threadGroup.rampUpTime)"
|
||||
v-model="threadGroup.step"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_times')"/>
|
||||
</div>
|
||||
<div v-if="threadGroup.threadType === 'ITERATION'">
|
||||
<el-form-item :label="$t('load_test.iterate_num')">
|
||||
<el-input-number
|
||||
:disabled="isReadOnly"
|
||||
v-model="threadGroup.iterateNum"
|
||||
:min="1"
|
||||
@change="calculateChart(threadGroup)"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.rps_limit')">
|
||||
<el-switch v-model="threadGroup.rpsLimitEnable" @change="calculateTotalChart()"/>
|
||||
|
||||
<el-input-number
|
||||
:disabled="isReadOnly || !threadGroup.rpsLimitEnable"
|
||||
v-model="threadGroup.rpsLimit"
|
||||
:min="1"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<br>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_within')">
|
||||
<el-input-number
|
||||
:disabled="isReadOnly"
|
||||
:min="1"
|
||||
v-model="threadGroup.iterateRampUp"
|
||||
size="mini"/>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('load_test.ramp_up_time_seconds')"/>
|
||||
</div>
|
||||
</el-form>
|
||||
</el-col>
|
||||
<el-col :span="14">
|
||||
|
@ -91,11 +129,14 @@ import {findTestPlan, findThreadGroup} from "@/business/components/performance/t
|
|||
|
||||
const TARGET_LEVEL = "TargetLevel";
|
||||
const RAMP_UP = "RampUp";
|
||||
const ITERATE_RAMP_UP = "iterateRampUpTime";
|
||||
const STEPS = "Steps";
|
||||
const DURATION = "duration";
|
||||
const RPS_LIMIT = "rpsLimit";
|
||||
const RPS_LIMIT_ENABLE = "rpsLimitEnable";
|
||||
const HOLD = "Hold";
|
||||
const THREAD_TYPE = "threadType";
|
||||
const ITERATE_NUM = "iterateNum";
|
||||
|
||||
const hexToRgba = function (hex, opacity) {
|
||||
return 'rgba(' + parseInt('0x' + hex.slice(1, 3)) + ',' + parseInt('0x' + hex.slice(3, 5)) + ','
|
||||
|
@ -186,6 +227,9 @@ export default {
|
|||
case RAMP_UP:
|
||||
this.threadGroups[i].rampUpTime = item.value;
|
||||
break;
|
||||
case ITERATE_RAMP_UP:
|
||||
this.threadGroups[i].iterateRampUp = item.value;
|
||||
break;
|
||||
case DURATION:
|
||||
if (item.unit) {
|
||||
this.threadGroups[i].duration = item.value;
|
||||
|
@ -202,9 +246,19 @@ export default {
|
|||
case RPS_LIMIT_ENABLE:
|
||||
this.threadGroups[i].rpsLimitEnable = item.value;
|
||||
break;
|
||||
case THREAD_TYPE:
|
||||
this.threadGroups[i].threadType = item.value;
|
||||
break;
|
||||
case ITERATE_NUM:
|
||||
this.threadGroups[i].iterateNum = item.value;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
//
|
||||
this.$set(this.threadGroups[i], "threadType", this.threadGroups[i].threadType || 'DURATION');
|
||||
this.$set(this.threadGroups[i], "iterateNum", this.threadGroups[i].iterateNum || 1);
|
||||
this.$set(this.threadGroups[i], "iterateRampUp", this.threadGroups[i].iterateRampUp || 10);
|
||||
})
|
||||
this.calculateChart(this.threadGroups[i]);
|
||||
} else {
|
||||
|
@ -215,6 +269,9 @@ export default {
|
|||
case RAMP_UP:
|
||||
this.threadGroups[0].rampUpTime = d.value;
|
||||
break;
|
||||
case ITERATE_RAMP_UP:
|
||||
this.threadGroups[0].iterateRampUp = d.value;
|
||||
break;
|
||||
case DURATION:
|
||||
if (d.unit) {
|
||||
this.threadGroups[0].duration = d.value;
|
||||
|
@ -231,9 +288,18 @@ export default {
|
|||
case RPS_LIMIT_ENABLE:
|
||||
this.threadGroups[0].rpsLimitEnable = d.value;
|
||||
break;
|
||||
case THREAD_TYPE:
|
||||
this.threadGroups[0].threadType = d.value;
|
||||
break;
|
||||
case ITERATE_NUM:
|
||||
this.threadGroups[0].iterateNum = d.value;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this.$set(this.threadGroups[0], "threadType", this.threadGroups[0].threadType || 'DURATION');
|
||||
this.$set(this.threadGroups[0], "iterateNum", this.threadGroups[0].iterateNum || 1);
|
||||
this.$set(this.threadGroups[0], "iterateRampUp", this.threadGroups[0].iterateRampUp || 10);
|
||||
this.calculateChart(this.threadGroups[0]);
|
||||
}
|
||||
}
|
||||
|
@ -461,7 +527,7 @@ export default {
|
|||
|
||||
for (let i = 0; i < this.threadGroups.length; i++) {
|
||||
if (!this.threadGroups[i].threadNumber || !this.threadGroups[i].duration
|
||||
|| !this.threadGroups[i].rampUpTime || !this.threadGroups[i].step) {
|
||||
|| !this.threadGroups[i].rampUpTime || !this.threadGroups[i].step || !this.threadGroups[i].iterateNum) {
|
||||
this.$warning(this.$t('load_test.pressure_config_params_is_empty'));
|
||||
this.$emit('changeActive', '1');
|
||||
return false;
|
||||
|
@ -488,6 +554,9 @@ export default {
|
|||
{key: RPS_LIMIT, value: this.threadGroups[i].rpsLimit},
|
||||
{key: RPS_LIMIT_ENABLE, value: this.threadGroups[i].rpsLimitEnable},
|
||||
{key: HOLD, value: this.threadGroups[i].duration - this.threadGroups[i].rampUpTime},
|
||||
{key: THREAD_TYPE, value: this.threadGroups[i].threadType},
|
||||
{key: ITERATE_NUM, value: this.threadGroups[i].iterateNum},
|
||||
{key: ITERATE_RAMP_UP, value: this.threadGroups[i].iterateRampUp},
|
||||
]);
|
||||
}
|
||||
return result;
|
||||
|
|
|
@ -437,6 +437,10 @@ export default {
|
|||
input_rps_limit: 'Please enter a limit',
|
||||
ramp_up_time_within: 'In',
|
||||
ramp_up_time_minutes: 'seconds, separate',
|
||||
ramp_up_time_seconds: 'seconds add concurrent users',
|
||||
iterate_num: 'Iterations: ',
|
||||
by_iteration: 'By iterations',
|
||||
by_duration: 'By duration',
|
||||
ramp_up_time_times: 'add concurrent users',
|
||||
advanced_config_error: 'Advanced configuration verification failed',
|
||||
domain_bind: 'Domain bind',
|
||||
|
|
|
@ -433,6 +433,10 @@ export default {
|
|||
input_rps_limit: '请输入限制',
|
||||
ramp_up_time_within: '在',
|
||||
ramp_up_time_minutes: '秒内,分',
|
||||
ramp_up_time_seconds: '秒内增加并发用户',
|
||||
iterate_num: '迭代次数 (次): ',
|
||||
by_iteration: '按迭代次数',
|
||||
by_duration: '按持续时间',
|
||||
ramp_up_time_times: '次增加并发用户',
|
||||
advanced_config_error: '高级配置校验失败',
|
||||
domain_bind: '域名绑定',
|
||||
|
|
|
@ -433,6 +433,10 @@ export default {
|
|||
input_rps_limit: '請輸入限制',
|
||||
ramp_up_time_within: '在',
|
||||
ramp_up_time_minutes: '秒內,分',
|
||||
ramp_up_time_seconds: '秒內增加並發用戶',
|
||||
iterate_num: '迭代次數 (次): ',
|
||||
by_iteration: '按迭代次數',
|
||||
by_duration: '按壓測時長',
|
||||
ramp_up_time_times: '次增加並發用戶',
|
||||
advanced_config_error: '高級配置校驗失敗',
|
||||
domain_bind: '域名綁定',
|
||||
|
|
Loading…
Reference in New Issue