Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MeterSphere
metersphere
提交
a4ee3547
M
metersphere
项目概览
MeterSphere
/
metersphere
上一次同步 3 年多
通知
25
Star
1
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
metersphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a4ee3547
编写于
10月 12, 2020
作者:
S
shiziyuan9527
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
https://github.com/metersphere/metersphere
上级
05c1e619
bb7d3f7b
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
198 addition
and
37 deletion
+198
-37
frontend/src/business/components/api/test/components/ApiScenarioForm.vue
...siness/components/api/test/components/ApiScenarioForm.vue
+5
-0
frontend/src/business/components/api/test/components/environment/EnvironmentEdit.vue
...nents/api/test/components/environment/EnvironmentEdit.vue
+6
-1
frontend/src/business/components/api/test/components/request/ApiTcpRequestForm.vue
...ponents/api/test/components/request/ApiTcpRequestForm.vue
+26
-23
frontend/src/business/components/api/test/components/request/tcp/TcpConfig.vue
.../components/api/test/components/request/tcp/TcpConfig.vue
+115
-0
frontend/src/business/components/api/test/model/EnvironmentModel.js
...rc/business/components/api/test/model/EnvironmentModel.js
+4
-1
frontend/src/business/components/api/test/model/ScenarioModel.js
...d/src/business/components/api/test/model/ScenarioModel.js
+39
-12
frontend/src/i18n/en-US.js
frontend/src/i18n/en-US.js
+1
-0
frontend/src/i18n/zh-CN.js
frontend/src/i18n/zh-CN.js
+1
-0
frontend/src/i18n/zh-TW.js
frontend/src/i18n/zh-TW.js
+1
-0
未找到文件。
frontend/src/business/components/api/test/components/ApiScenarioForm.vue
浏览文件 @
a4ee3547
...
...
@@ -49,6 +49,9 @@
<div
class=
"dubbo-config-title"
>
Consumer
&
Service
</div>
<ms-dubbo-consumer-service
:consumer=
"scenario.dubboConfig.consumerAndService"
:is-read-only=
"isReadOnly"
/>
</el-tab-pane>
<el-tab-pane
:label=
"$t('api_test.environment.tcp_config')"
name=
"tcp"
>
<ms-tcp-config
:config=
"scenario.tcpConfig"
:is-read-only=
"isReadOnly"
/>
</el-tab-pane>
</el-tabs>
<api-environment-config
ref=
"environmentConfig"
@
close=
"environmentConfigClose"
/>
...
...
@@ -68,10 +71,12 @@ import MsDubboConfigCenter from "@/business/components/api/test/components/reque
import
MsDubboConsumerService
from
"
@/business/components/api/test/components/request/dubbo/ConsumerAndService
"
;
import
MsDatabaseConfig
from
"
./request/database/DatabaseConfig
"
;
import
{
parseEnvironment
}
from
"
../model/EnvironmentModel
"
;
import
MsTcpConfig
from
"
@/business/components/api/test/components/request/tcp/TcpConfig
"
;
export
default
{
name
:
"
MsApiScenarioForm
"
,
components
:
{
MsTcpConfig
,
MsDatabaseConfig
,
MsDubboConsumerService
,
MsDubboConfigCenter
,
MsDubboRegistryCenter
,
ApiEnvironmentConfig
,
MsApiScenarioVariables
,
MsApiKeyValue
...
...
frontend/src/business/components/api/test/components/environment/EnvironmentEdit.vue
浏览文件 @
a4ee3547
...
...
@@ -20,6 +20,9 @@
<el-tab-pane
:label=
"$t('api_test.environment.database_config')"
name=
"sql"
>
<ms-database-config
:configs=
"environment.config.databaseConfigs"
/>
</el-tab-pane>
<el-tab-pane
:label=
"$t('api_test.environment.tcp_config')"
name=
"tcp"
>
<ms-tcp-config
:config=
"environment.config.tcpConfig"
/>
</el-tab-pane>
</el-tabs>
<div
class=
"environment-footer"
>
...
...
@@ -35,16 +38,18 @@
import
MsApiScenarioVariables
from
"
../ApiScenarioVariables
"
;
import
MsApiKeyValue
from
"
../ApiKeyValue
"
;
import
MsDialogFooter
from
"
../../../../common/components/MsDialogFooter
"
;
import
{
REQUEST_HEADERS
}
from
"
../../../../../..
/common/js/constants
"
;
import
{
REQUEST_HEADERS
}
from
"
@
/common/js/constants
"
;
import
{
Environment
}
from
"
../../model/EnvironmentModel
"
;
import
MsApiHostTable
from
"
../ApiHostTable
"
;
import
MsDatabaseConfig
from
"
../request/database/DatabaseConfig
"
;
import
MsEnvironmentHttpConfig
from
"
./EnvironmentHttpConfig
"
;
import
MsEnvironmentCommonConfig
from
"
./EnvironmentCommonConfig
"
;
import
MsTcpConfig
from
"
@/business/components/api/test/components/request/tcp/TcpConfig
"
;
export
default
{
name
:
"
EnvironmentEdit
"
,
components
:
{
MsTcpConfig
,
MsEnvironmentCommonConfig
,
MsEnvironmentHttpConfig
,
MsDatabaseConfig
,
MsApiHostTable
,
MsDialogFooter
,
MsApiKeyValue
,
MsApiScenarioVariables
},
...
...
frontend/src/business/components/api/test/components/request/ApiTcpRequestForm.vue
浏览文件 @
a4ee3547
<
template
>
<el-form
class=
"tcp"
:model=
"request"
:rules=
"rules"
ref=
"request"
label-width=
"
120px
"
:disabled=
"isReadOnly"
>
<el-form
class=
"tcp"
:model=
"request"
:rules=
"rules"
ref=
"request"
label-width=
"
auto
"
:disabled=
"isReadOnly"
>
<el-form-item
:label=
"$t('api_test.request.name')"
prop=
"name"
>
<el-input
v-model=
"request.name"
maxlength=
"300"
show-word-limit
/>
...
...
@@ -12,30 +12,43 @@
</el-form-item>
<el-row
:gutter=
"10"
>
<el-col
:span=
"1
2
"
>
<el-col
:span=
"1
6
"
>
<el-form-item
:label=
"$t('api_test.request.tcp.server')"
prop=
"server"
>
<el-input
v-model=
"request.server"
maxlength=
"300"
show-word-limit
/>
</el-form-item>
</el-col>
<el-col
:span=
"
4
"
>
<el-form-item
:label=
"$t('api_test.request.tcp.port')"
prop=
"port"
>
<el-col
:span=
"
8
"
>
<el-form-item
:label=
"$t('api_test.request.tcp.port')"
prop=
"port"
label-width=
"60px"
>
<el-input-number
v-model=
"request.port"
controls-position=
"right"
:min=
"0"
:max=
"65535"
/>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('api_test.request.tcp.connect')"
prop=
"ctimeout"
>
<el-input-number
v-model=
"request.ctimeout"
controls-position=
"right"
:min=
"0"
/>
</el-form-item>
</el-col>
<el-col
:span=
"
4
"
>
<el-col
:span=
"
6
"
>
<el-form-item
:label=
"$t('api_test.request.tcp.response')"
prop=
"timeout"
>
<el-input-number
v-model=
"request.timeout"
controls-position=
"right"
:min=
"0"
/>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('api_test.request.tcp.so_linger')"
prop=
"soLinger"
>
<el-input
v-model=
"request.soLinger"
/>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('api_test.request.tcp.eol_byte')"
prop=
"eolByte"
>
<el-input
v-model=
"request.eolByte"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"
4
"
>
<el-col
:span=
"
6
"
>
<el-form-item>
<el-switch
v-model=
"request.useEnvironment"
...
...
@@ -44,40 +57,30 @@
</el-switch>
</el-form-item>
</el-col>
<el-col
:span=
"
4
"
>
<el-form-item
label-width=
"0"
>
<el-col
:span=
"
6
"
>
<el-form-item>
<el-switch
v-model=
"request.reUseConnection"
:active-text=
"$t('api_test.request.tcp.re_use_connection')"
>
</el-switch>
</el-form-item>
</el-col>
<el-col
:span=
"
4
"
>
<el-form-item
label-width=
"0"
>
<el-col
:span=
"
6
"
>
<el-form-item>
<el-switch
v-model=
"request.closeConnection"
:active-text=
"$t('api_test.request.tcp.close_connection')"
>
</el-switch>
</el-form-item>
</el-col>
<el-col
:span=
"
4
"
>
<el-form-item
label-width=
"0"
>
<el-col
:span=
"
6
"
>
<el-form-item>
<el-switch
v-model=
"request.nodelay"
:active-text=
"$t('api_test.request.tcp.no_delay')"
>
</el-switch>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('api_test.request.tcp.so_linger')"
prop=
"soLinger"
>
<el-input
v-model=
"request.soLinger"
/>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('api_test.request.tcp.eol_byte')"
prop=
"eolByte"
>
<el-input
v-model=
"request.eolByte"
/>
</el-form-item>
</el-col>
</el-row>
<el-form-item
:label=
"$t('api_test.request.tcp.request')"
prop=
"request"
>
...
...
frontend/src/business/components/api/test/components/request/tcp/TcpConfig.vue
0 → 100644
浏览文件 @
a4ee3547
<
template
>
<el-form
class=
"tcp"
:model=
"config"
:rules=
"rules"
ref=
"config"
label-width=
"120px"
:disabled=
"isReadOnly"
size=
"small"
>
<el-form-item
label=
"TCPClient"
prop=
"classname"
>
<el-select
v-model=
"config.classname"
style=
"width: 100%"
>
<el-option
v-for=
"c in classes"
:key=
"c"
:label=
"c"
:value=
"c"
/>
</el-select>
</el-form-item>
<el-row
:gutter=
"10"
>
<el-col
:span=
"16"
>
<el-form-item
:label=
"$t('api_test.request.tcp.server')"
prop=
"server"
>
<el-input
v-model=
"config.server"
maxlength=
"300"
show-word-limit
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
:label=
"$t('api_test.request.tcp.port')"
prop=
"port"
label-width=
"60px"
>
<el-input-number
v-model=
"config.port"
controls-position=
"right"
:min=
"0"
:max=
"65535"
:controls=
"false"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('api_test.request.tcp.connect')"
prop=
"ctimeout"
>
<el-input-number
v-model=
"config.ctimeout"
controls-position=
"right"
:min=
"0"
:step=
"1000"
:controls=
"false"
/>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('api_test.request.tcp.response')"
prop=
"timeout"
>
<el-input-number
v-model=
"config.timeout"
controls-position=
"right"
:min=
"0"
:step=
"1000"
:controls=
"false"
/>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('api_test.request.tcp.so_linger')"
prop=
"soLinger"
>
<el-input
v-model=
"config.soLinger"
/>
</el-form-item>
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('api_test.request.tcp.eol_byte')"
prop=
"eolByte"
>
<el-input
v-model=
"config.eolByte"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"8"
>
<el-form-item>
<el-switch
v-model=
"config.reUseConnection"
:active-text=
"$t('api_test.request.tcp.re_use_connection')"
>
</el-switch>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item>
<el-switch
v-model=
"config.closeConnection"
:active-text=
"$t('api_test.request.tcp.close_connection')"
>
</el-switch>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item>
<el-switch
v-model=
"config.nodelay"
:active-text=
"$t('api_test.request.tcp.no_delay')"
>
</el-switch>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('api_test.request.tcp.username')"
prop=
"username"
>
<el-input
v-model=
"config.username"
maxlength=
"100"
show-word-limit
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('api_test.request.tcp.password')"
prop=
"password"
>
<el-input
v-model=
"config.password"
maxlength=
"30"
show-word-limit
show-password
autocomplete=
"new-password"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</
template
>
<
script
>
import
{
TCPConfig
}
from
"
@/business/components/api/test/model/ScenarioModel
"
;
export
default
{
name
:
"
MsTcpConfig
"
,
props
:
{
config
:
TCPConfig
,
isReadOnly
:
{
type
:
Boolean
,
default
:
false
},
},
data
()
{
return
{
classes
:
TCPConfig
.
CLASSES
,
rules
:
{}
}
},
}
</
script
>
<
style
scoped
>
.tcp
>>>
.el-input-number
{
width
:
100%
;
}
</
style
>
frontend/src/business/components/api/test/model/EnvironmentModel.js
浏览文件 @
a4ee3547
import
{
BaseConfig
,
DatabaseConfig
,
KeyValue
}
from
"
./ScenarioModel
"
;
import
{
TCPConfig
}
from
"
@/business/components/api/test/model/ScenarioModel
"
;
export
class
Environment
extends
BaseConfig
{
constructor
(
options
=
{})
{
...
...
@@ -26,14 +27,17 @@ export class Config extends BaseConfig {
this
.
commonConfig
=
undefined
;
this
.
httpConfig
=
undefined
;
this
.
databaseConfigs
=
[];
this
.
tcpConfig
=
undefined
;
this
.
set
(
options
);
this
.
sets
({
databaseConfigs
:
DatabaseConfig
},
options
);
}
initOptions
(
options
=
{})
{
this
.
commonConfig
=
new
CommonConfig
(
options
.
commonConfig
);
this
.
httpConfig
=
new
HttpConfig
(
options
.
httpConfig
);
options
.
databaseConfigs
=
options
.
databaseConfigs
||
[];
options
.
tcpConfig
=
new
TCPConfig
(
options
.
tcpConfig
);
return
options
;
}
}
...
...
@@ -91,7 +95,6 @@ export class Host extends BaseConfig {
}
/* ---------- Functions ------- */
export
function
compatibleWithEnvironment
(
environment
)
{
...
...
frontend/src/business/components/api/test/model/ScenarioModel.js
浏览文件 @
a4ee3547
...
...
@@ -111,12 +111,16 @@ export const EXTRACT_TYPE = {
export
class
BaseConfig
{
set
(
options
)
{
set
(
options
,
notUndefined
)
{
options
=
this
.
initOptions
(
options
)
for
(
let
name
in
options
)
{
if
(
options
.
hasOwnProperty
(
name
))
{
if
(
!
(
this
[
name
]
instanceof
Array
))
{
this
[
name
]
=
options
[
name
];
if
(
notUndefined
===
true
)
{
this
[
name
]
=
options
[
name
]
===
undefined
?
this
[
name
]
:
options
[
name
];
}
else
{
this
[
name
]
=
options
[
name
];
}
}
}
}
...
...
@@ -219,6 +223,7 @@ export class Scenario extends BaseConfig {
this
.
enableCookieShare
=
false
;
this
.
enable
=
true
;
this
.
databaseConfigs
=
[];
this
.
tcpConfig
=
undefined
;
this
.
set
(
options
);
this
.
sets
({
...
...
@@ -234,6 +239,7 @@ export class Scenario extends BaseConfig {
options
.
requests
=
options
.
requests
||
[
new
RequestFactory
()];
options
.
databaseConfigs
=
options
.
databaseConfigs
||
[];
options
.
dubboConfig
=
new
DubboConfig
(
options
.
dubboConfig
);
options
.
tcpConfig
=
new
TCPConfig
(
options
.
tcpConfig
);
return
options
;
}
...
...
@@ -512,15 +518,12 @@ export class SqlRequest extends Request {
}
}
export
class
TCP
Request
extends
Request
{
export
class
TCP
Config
extends
BaseConfig
{
static
CLASSES
=
[
"
TCPClientImpl
"
,
"
BinaryTCPClientImpl
"
,
"
LengthPrefixedBinaryTCPClientImpl
"
]
constructor
(
options
=
{})
{
super
(
RequestFactory
.
TYPES
.
TCP
,
options
);
this
.
useEnvironment
=
options
.
useEnvironment
;
this
.
debugReport
=
undefined
;
this
.
classname
=
options
.
classname
||
TCPRequest
.
CLASSES
[
0
];
super
();
this
.
classname
=
options
.
classname
||
TCPConfig
.
CLASSES
[
0
];
this
.
server
=
options
.
server
;
this
.
port
=
options
.
port
;
this
.
ctimeout
=
options
.
ctimeout
;
// Connect
...
...
@@ -532,11 +535,22 @@ export class TCPRequest extends Request {
this
.
soLinger
=
options
.
soLinger
;
this
.
eolByte
=
options
.
eolByte
;
this
.
request
=
options
.
request
;
this
.
username
=
options
.
username
;
this
.
password
=
options
.
password
;
}
}
export
class
TCPRequest
extends
Request
{
constructor
(
options
=
{})
{
super
(
RequestFactory
.
TYPES
.
TCP
,
options
);
this
.
useEnvironment
=
options
.
useEnvironment
;
this
.
debugReport
=
undefined
;
//设置TCPConfig的属性
this
.
set
(
new
TCPConfig
(
options
));
this
.
request
=
options
.
request
;
}
isValid
()
{
if
(
this
.
enable
)
{
...
...
@@ -1031,6 +1045,19 @@ class JMXDubboRequest {
}
}
class
JMXTCPRequest
{
constructor
(
request
,
scenario
)
{
let
obj
=
request
.
clone
();
if
(
request
.
useEnvironment
)
{
obj
.
set
(
scenario
.
environment
.
config
.
tcpConfig
,
true
);
return
obj
;
}
obj
.
set
(
scenario
.
tcpConfig
,
true
);
return
obj
;
}
}
class
JMeterTestPlan
extends
Element
{
constructor
()
{
super
(
'
jmeterTestPlan
'
,
{
...
...
@@ -1089,7 +1116,7 @@ class JMXGenerator {
request
.
dataSource
=
scenario
.
databaseConfigMap
.
get
(
request
.
dataSource
);
sampler
=
new
JDBCSampler
(
request
.
name
||
""
,
request
);
}
else
if
(
request
instanceof
TCPRequest
)
{
sampler
=
new
TCPSampler
(
request
.
name
||
""
,
request
);
sampler
=
new
TCPSampler
(
request
.
name
||
""
,
new
JMXTCPRequest
(
request
,
scenario
)
);
}
this
.
addDNSCacheManager
(
sampler
,
scenario
.
environment
,
request
.
useEnvironment
);
...
...
@@ -1165,7 +1192,7 @@ class JMXGenerator {
let
domain
=
environment
.
config
.
httpConfig
.
domain
;
let
validHosts
=
[];
hosts
.
forEach
(
item
=>
{
if
(
item
.
domain
!=
undefined
&&
domain
!
=
undefined
)
{
if
(
item
.
domain
!=
=
undefined
&&
domain
!=
=
undefined
)
{
let
d
=
item
.
domain
.
trim
().
replace
(
"
http://
"
,
""
).
replace
(
"
https://
"
,
""
);
if
(
d
===
domain
.
trim
())
{
item
.
domain
=
d
;
// 域名去掉协议
...
...
frontend/src/i18n/en-US.js
浏览文件 @
a4ee3547
...
...
@@ -436,6 +436,7 @@ export default {
common_config
:
"
Common Config
"
,
http_config
:
"
HTTP Config
"
,
database_config
:
"
Database Config
"
,
tcp_config
:
"
TCP Config
"
,
},
scenario
:
{
scenario
:
"
Scenario
"
,
...
...
frontend/src/i18n/zh-CN.js
浏览文件 @
a4ee3547
...
...
@@ -437,6 +437,7 @@ export default {
common_config
:
"
通用配置
"
,
http_config
:
"
HTTP配置
"
,
database_config
:
"
数据库配置
"
,
tcp_config
:
"
TCP配置
"
,
},
scenario
:
{
scenario
:
"
场景
"
,
...
...
frontend/src/i18n/zh-TW.js
浏览文件 @
a4ee3547
...
...
@@ -437,6 +437,7 @@ export default {
common_config
:
"
通用配置
"
,
http_config
:
"
HTTP配置
"
,
database_config
:
"
數據庫配置
"
,
tcp_config
:
"
TCP配置
"
,
},
scenario
:
{
scenario
:
"
場景
"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录