Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fuzzBackEnd
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
钱炳权
fuzzBackEnd
Commits
deacd8b0
Commit
deacd8b0
authored
Jun 07, 2024
by
钱炳权
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
切面实现aflnet数据库存入成功,解决多线程错误捕获问题
parent
7752009e
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
295 additions
and
59 deletions
+295
-59
FuzzIntegration.java
...c/main/java/com/example/fuzzControll/FuzzIntegration.java
+0
-1
NeedCut.java
.../main/java/com/example/fuzzControll/annotion/NeedCut.java
+15
-0
IntegrationAop.java
...ain/java/com/example/fuzzControll/aop/IntegrationAop.java
+103
-0
SystemConfig.java
...main/java/com/example/fuzzControll/conf/SystemConfig.java
+9
-0
LogicDeleteEnum.java
...a/com/example/fuzzControll/constents/LogicDeleteEnum.java
+29
-0
MissionStateEnum.java
.../com/example/fuzzControll/constents/MissionStateEnum.java
+30
-0
AlfnetController.java
...com/example/fuzzControll/controller/AlfnetController.java
+11
-10
MyExceptionHandler.java
...om/example/fuzzControll/exception/MyExceptionHandler.java
+16
-0
MissionInfo.java
...in/java/com/example/fuzzControll/pojo/vo/MissionInfo.java
+11
-6
AflnetPersistenceService.java
...xample/fuzzControll/service/AflnetPersistenceService.java
+1
-1
AflnetPersistenceServiceImpl.java
...zzControll/service/impl/AflnetPersistenceServiceImpl.java
+4
-4
TestServiceImpl.java
...om/example/fuzzControll/service/impl/TestServiceImpl.java
+11
-9
CmdTools.java
...rc/main/java/com/example/fuzzControll/tools/CmdTools.java
+29
-20
GlobalParameters.java
...java/com/example/fuzzControll/tools/GlobalParameters.java
+8
-0
application.yml
fuzzIntegration/src/main/resources/application.yml
+1
-1
MissionInfoMapper.xml
...tegration/src/main/resources/mapper/MissionInfoMapper.xml
+17
-7
No files found.
fuzzIntegration/src/main/java/com/example/fuzzControll/FuzzIntegration.java
View file @
deacd8b0
...
@@ -7,7 +7,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
...
@@ -7,7 +7,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
import
java.util.Arrays
;
import
java.util.Arrays
;
@SpringBootApplication
@SpringBootApplication
@EnableFeignClients
public
class
FuzzIntegration
{
public
class
FuzzIntegration
{
public
static
void
main
(
String
[]
args
)
{
public
static
void
main
(
String
[]
args
)
{
Arrays
.
stream
(
args
).
forEach
(
System
.
out
::
println
);
Arrays
.
stream
(
args
).
forEach
(
System
.
out
::
println
);
...
...
fuzzIntegration/src/main/java/com/example/fuzzControll/annotion/NeedCut.java
0 → 100644
View file @
deacd8b0
package
com
.
example
.
fuzzControll
.
annotion
;
import
java.lang.annotation.*
;
/**
* 切片标识注解
*/
@Inherited
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
({
ElementType
.
METHOD
})
public
@interface
NeedCut
{
String
name
()
default
""
;
String
moment
()
default
""
;
String
function
()
default
""
;
}
fuzzIntegration/src/main/java/com/example/fuzzControll/aop/IntegrationAop.java
0 → 100644
View file @
deacd8b0
package
com
.
example
.
fuzzControll
.
aop
;
import
com.example.fuzzControll.annotion.NeedCut
;
import
com.example.fuzzControll.constents.LogicDeleteEnum
;
import
com.example.fuzzControll.constents.MissionStateEnum
;
import
com.example.fuzzControll.constents.TableClassEnum
;
import
com.example.fuzzControll.mapper.MissionInfoMapper
;
import
com.example.fuzzControll.pojo.vo.MissionInfo
;
import
com.example.fuzzControll.service.AflnetPersistenceService
;
import
com.example.fuzzControll.tools.GlobalParameters
;
import
lombok.extern.slf4j.Slf4j
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.Signature
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Before
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.core.Ordered
;
import
org.springframework.stereotype.Component
;
import
java.lang.reflect.Method
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
@Aspect
@Component
@Slf4j
public
class
IntegrationAop
implements
Ordered
{
@Pointcut
(
value
=
"@annotation(com.example.fuzzControll.annotion.NeedCut)"
)
private
void
cut
()
{
}
@Before
(
"cut()"
)
private
void
before
(
JoinPoint
point
)
{
List
<
String
>
needProcess
=
Arrays
.
asList
(
"aflnet"
);
Signature
signature
=
point
.
getSignature
();
MethodSignature
methodSignature
=
null
;
if
(!(
signature
instanceof
MethodSignature
))
{
throw
new
IllegalArgumentException
(
"该注解只能用于方法"
);
}
methodSignature
=
(
MethodSignature
)
signature
;
Object
target
=
point
.
getTarget
();
Method
currentMethod
=
null
;
try
{
currentMethod
=
target
.
getClass
().
getMethod
(
methodSignature
.
getName
(),
methodSignature
.
getParameterTypes
());
}
catch
(
NoSuchMethodException
e
)
{
log
.
error
(
"NoSuchMethod!"
);
e
.
printStackTrace
();
throw
new
RuntimeException
(
e
);
}
NeedCut
logotype
=
currentMethod
.
getAnnotation
(
NeedCut
.
class
);
if
(
"before"
.
equals
(
logotype
.
moment
()))
{
//需要进行处理
if
(
"aflnet"
.
equals
(
logotype
.
name
()))
{
//aflnet测试信息存储
int
missionId
=
GlobalParameters
.
missionInfoMapper
.
selectTopMissionId
()
+
1
;
GlobalParameters
.
missionInfoMapper
.
insertMission
(
new
MissionInfo
(
missionId
,
TableClassEnum
.
AFLNET
.
getTableId
(),
new
Date
(),
GlobalParameters
.
aflnetData
.
get
(
"missionName"
),
MissionStateEnum
.
RUNNING
.
getStateCode
(),
0L
));
}
}
}
@Around
(
"cut()"
)
public
Object
around
(
ProceedingJoinPoint
point
)
throws
Throwable
{
Signature
signature
=
point
.
getSignature
();
MethodSignature
methodSignature
=
null
;
if
(!(
signature
instanceof
MethodSignature
))
{
throw
new
IllegalArgumentException
(
"该注解只能用于方法"
);
}
methodSignature
=
(
MethodSignature
)
signature
;
Object
target
=
point
.
getTarget
();
Method
currentMethod
=
target
.
getClass
().
getMethod
(
methodSignature
.
getName
(),
methodSignature
.
getParameterTypes
());
NeedCut
logotype
=
currentMethod
.
getAnnotation
(
NeedCut
.
class
);
// if (datasource != null) {
// DataSourceContextHolder.setDataSourceType(logotype.name());
// log.debug("设置数据源为:" + datasource.name());
// } else {
// DataSourceContextHolder.setDataSourceType(DSEnum.DATA_SOURCE_CORE);
// log.debug("设置数据源为:dataSourceCore");
// }
// try {
return
point
.
proceed
();
// } finally {
// log.debug("清空数据源信息!");
// DataSourceContextHolder.clearDataSourceType();
// }
}
@Override
public
int
getOrder
()
{
return
1
;
}
}
fuzzIntegration/src/main/java/com/example/fuzzControll/conf/SystemConfig.java
0 → 100644
View file @
deacd8b0
package
com
.
example
.
fuzzControll
.
conf
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
@EnableFeignClients
public
class
SystemConfig
{
}
fuzzIntegration/src/main/java/com/example/fuzzControll/constents/LogicDeleteEnum.java
0 → 100644
View file @
deacd8b0
package
com
.
example
.
fuzzControll
.
constents
;
public
enum
LogicDeleteEnum
{
ALIVE
(
"alive"
,
0
),
LOGIC_DELETE
(
"logic_delete"
,
1
);
private
String
name
;
private
int
code
;
LogicDeleteEnum
(
String
name
,
int
code
)
{
this
.
name
=
name
;
this
.
code
=
code
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
int
getCode
()
{
return
code
;
}
public
void
setCode
(
int
code
)
{
this
.
code
=
code
;
}
}
fuzzIntegration/src/main/java/com/example/fuzzControll/constents/MissionStateEnum.java
0 → 100644
View file @
deacd8b0
package
com
.
example
.
fuzzControll
.
constents
;
public
enum
MissionStateEnum
{
DONE
(
"done"
,
1
),
RUNNING
(
"running"
,
2
),
FAILED
(
"failed"
,
3
);
private
String
stateName
;
private
int
stateCode
;
MissionStateEnum
(
String
stateName
,
int
stateCode
)
{
this
.
stateName
=
stateName
;
this
.
stateCode
=
stateCode
;
}
public
String
getStateName
()
{
return
stateName
;
}
public
void
setStateName
(
String
stateName
)
{
this
.
stateName
=
stateName
;
}
public
int
getStateCode
()
{
return
stateCode
;
}
public
void
setStateCode
(
int
stateCode
)
{
this
.
stateCode
=
stateCode
;
}
}
fuzzIntegration/src/main/java/com/example/fuzzControll/controller/AlfnetController.java
View file @
deacd8b0
package
com
.
example
.
fuzzControll
.
controller
;
package
com
.
example
.
fuzzControll
.
controller
;
import
com.example.fuzzControll.exception.AflnetException
;
import
com.example.fuzzControll.exception.*
;
import
com.example.fuzzControll.exception.BaseException
;
import
com.example.fuzzControll.exception.CmdException
;
import
com.example.fuzzControll.exception.MysqlException
;
import
com.example.fuzzControll.pojo.vo.AjaxResult
;
import
com.example.fuzzControll.pojo.vo.AjaxResult
;
import
com.example.fuzzControll.pojo.vo.CmdStartParams
;
import
com.example.fuzzControll.pojo.vo.CmdStartParams
;
import
com.example.fuzzControll.service.TestService
;
import
com.example.fuzzControll.service.TestService
;
...
@@ -33,16 +30,20 @@ public class AlfnetController {
...
@@ -33,16 +30,20 @@ public class AlfnetController {
//todo 捕获子线程错误
//todo 捕获子线程错误
try
{
try
{
GlobalParameters
.
aflnetData
.
put
(
"missionName"
,
cmdStartParams
.
getProtopcol
());
GlobalParameters
.
aflnetData
.
put
(
"missionName"
,
cmdStartParams
.
getProtopcol
());
new
Thread
(
new
Runnable
()
{
Thread
subThread
=
new
Thread
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
service
.
testStart
(
cmdStartParams
);
service
.
testStart
(
cmdStartParams
);
}
}
}).
start
();
});
}
catch
(
Exception
e
)
{
GlobalParameters
.
ThreadState
.
put
(
subThread
,
"start"
);
if
(
e
instanceof
AflnetException
||
e
instanceof
CmdException
)
{
subThread
.
setUncaughtExceptionHandler
(
new
MyExceptionHandler
());
log
.
error
(((
BaseException
)
e
).
getDefaultMessage
());
subThread
.
start
();
subThread
.
join
();
if
(
"error"
.
equals
(
GlobalParameters
.
ThreadState
.
get
(
subThread
)))
{
throw
new
Exception
();
}
}
}
catch
(
Exception
e
)
{
return
AjaxResult
.
error
(
"测试启动失败!"
);
return
AjaxResult
.
error
(
"测试启动失败!"
);
}
}
return
AjaxResult
.
success
(
"测试已启动!"
);
return
AjaxResult
.
success
(
"测试已启动!"
);
...
@@ -58,7 +59,7 @@ public class AlfnetController {
...
@@ -58,7 +59,7 @@ public class AlfnetController {
}
catch
(
AflnetException
e
)
{
}
catch
(
AflnetException
e
)
{
log
.
error
(
e
.
getDefaultMessage
());
log
.
error
(
e
.
getDefaultMessage
());
return
AjaxResult
.
error
(
"测试停止失败!"
);
return
AjaxResult
.
error
(
"测试停止失败!"
);
}
catch
(
MysqlException
e
){
}
catch
(
MysqlException
e
)
{
log
.
error
(
"File backup error: "
+
e
.
getMessage
());
log
.
error
(
"File backup error: "
+
e
.
getMessage
());
}
}
return
AjaxResult
.
success
(
"测试停止成功!"
);
return
AjaxResult
.
success
(
"测试停止成功!"
);
...
...
fuzzIntegration/src/main/java/com/example/fuzzControll/exception/MyExceptionHandler.java
0 → 100644
View file @
deacd8b0
package
com
.
example
.
fuzzControll
.
exception
;
import
com.example.fuzzControll.tools.GlobalParameters
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
MyExceptionHandler
implements
Thread
.
UncaughtExceptionHandler
{
@Override
public
void
uncaughtException
(
Thread
t
,
Throwable
e
)
{
GlobalParameters
.
ThreadState
.
put
(
t
,
"error"
);
}
}
fuzzIntegration/src/main/java/com/example/fuzzControll/pojo/vo/MissionInfo.java
View file @
deacd8b0
...
@@ -11,25 +11,30 @@ public class MissionInfo {
...
@@ -11,25 +11,30 @@ public class MissionInfo {
private
int
id
;
private
int
id
;
private
int
missionId
;
private
int
missionId
;
@JsonIgnore
@JsonIgnore
private
int
tableId
;
//返回数据忽略字段
private
int
tableId
;
//返回数据忽略字段
;aflnet 为1 kitty为2
private
Date
createTime
;
private
Date
createTime
;
private
String
missionName
;
private
String
missionName
;
@JsonIgnore
private
int
state
;
private
Long
runTime
;
private
String
stateName
;
public
MissionInfo
()
{
public
MissionInfo
()
{
}
}
public
MissionInfo
(
int
id
,
int
missionId
,
int
tableId
,
Date
createTime
,
String
missionName
)
{
public
MissionInfo
(
int
missionId
,
int
tableId
,
Date
createTime
,
String
missionName
,
int
state
,
Long
runTime
)
{
this
.
id
=
id
;
this
.
missionId
=
missionId
;
this
.
missionId
=
missionId
;
this
.
tableId
=
tableId
;
this
.
tableId
=
tableId
;
this
.
createTime
=
createTime
;
this
.
createTime
=
createTime
;
this
.
missionName
=
missionName
;
this
.
missionName
=
missionName
;
this
.
state
=
state
;
this
.
runTime
=
runTime
;
}
}
public
MissionInfo
(
int
missionId
,
int
tableId
,
Date
createTime
,
String
mission
Name
)
{
public
MissionInfo
(
int
missionId
,
Date
createTime
,
String
missionName
,
Long
runTime
,
String
state
Name
)
{
this
.
missionId
=
missionId
;
this
.
missionId
=
missionId
;
this
.
tableId
=
tableId
;
this
.
createTime
=
createTime
;
this
.
createTime
=
createTime
;
this
.
missionName
=
missionName
;
this
.
missionName
=
missionName
;
this
.
runTime
=
runTime
;
this
.
stateName
=
stateName
;
}
}
}
}
fuzzIntegration/src/main/java/com/example/fuzzControll/service/AflnetPersistenceService.java
View file @
deacd8b0
package
com
.
example
.
fuzzControll
.
service
;
package
com
.
example
.
fuzzControll
.
service
;
public
interface
AflnetPersistenceService
{
public
interface
AflnetPersistenceService
{
public
int
aflnetResultBackup
(
String
filename
,
String
missionNa
me
);
public
int
aflnetResultBackup
(
String
filename
,
String
missionName
,
int
state
,
int
logicDelete
,
Long
runTi
me
);
public
void
loadInFile
(
int
missionId
,
String
filePath
);
public
void
loadInFile
(
int
missionId
,
String
filePath
);
}
}
fuzzIntegration/src/main/java/com/example/fuzzControll/service/impl/AflnetPersistenceServiceImpl.java
View file @
deacd8b0
...
@@ -29,8 +29,8 @@ public class AflnetPersistenceServiceImpl implements AflnetPersistenceService {
...
@@ -29,8 +29,8 @@ public class AflnetPersistenceServiceImpl implements AflnetPersistenceService {
FileTools
fileTools
=
new
FileTools
();
FileTools
fileTools
=
new
FileTools
();
@Override
@Override
public
int
aflnetResultBackup
(
String
filename
,
String
missionName
)
{
public
int
aflnetResultBackup
(
String
filename
,
String
missionName
,
int
state
,
int
logicDelete
,
Long
runTime
)
{
return
mysqlTransaction
(
filename
,
missionName
);
return
mysqlTransaction
(
filename
,
missionName
,
state
,
logicDelete
,
runTime
);
}
}
@Override
@Override
...
@@ -46,11 +46,11 @@ public class AflnetPersistenceServiceImpl implements AflnetPersistenceService {
...
@@ -46,11 +46,11 @@ public class AflnetPersistenceServiceImpl implements AflnetPersistenceService {
}
}
@Transactional
(
rollbackFor
=
MysqlException
.
class
)
@Transactional
(
rollbackFor
=
MysqlException
.
class
)
public
int
mysqlTransaction
(
String
filename
,
String
missionNa
me
)
{
public
int
mysqlTransaction
(
String
filename
,
String
missionName
,
int
state
,
int
logicDelete
,
Long
runTi
me
)
{
int
topMissionId
=
missionInfoMapper
.
selectTopMissionId
()
+
1
;
//获取最新的missionId
int
topMissionId
=
missionInfoMapper
.
selectTopMissionId
()
+
1
;
//获取最新的missionId
AflnetResult
result
=
new
AflnetResult
(
topMissionId
,
fileTools
.
fileReadAndTranstoBytes
(
aflnetProperties
.
getOutputPath
(),
filename
),
filename
);
AflnetResult
result
=
new
AflnetResult
(
topMissionId
,
fileTools
.
fileReadAndTranstoBytes
(
aflnetProperties
.
getOutputPath
(),
filename
),
filename
);
aflnetMapper
.
aflnetOutputBackup
(
result
);
//存入日志文件
aflnetMapper
.
aflnetOutputBackup
(
result
);
//存入日志文件
missionInfoMapper
.
insertMission
(
new
MissionInfo
(
topMissionId
,
TableClassEnum
.
AFLNET
.
getTableId
(),
new
Date
(),
missionName
));
//插入任务信息
missionInfoMapper
.
insertMission
(
new
MissionInfo
(
topMissionId
,
TableClassEnum
.
AFLNET
.
getTableId
(),
new
Date
(),
missionName
,
state
,
runTime
));
//插入任务信息
return
1
;
return
1
;
}
}
}
}
fuzzIntegration/src/main/java/com/example/fuzzControll/service/impl/TestServiceImpl.java
View file @
deacd8b0
...
@@ -26,7 +26,8 @@ import java.util.concurrent.CountDownLatch;
...
@@ -26,7 +26,8 @@ import java.util.concurrent.CountDownLatch;
@Slf4j
@Slf4j
public
class
TestServiceImpl
implements
TestService
{
public
class
TestServiceImpl
implements
TestService
{
CmdTools
cmdTools
=
new
CmdTools
();
@Autowired
CmdTools
cmdTools
;
@Autowired
@Autowired
AflnetPersistenceService
aflnetPersistenceService
;
AflnetPersistenceService
aflnetPersistenceService
;
...
@@ -40,18 +41,18 @@ public class TestServiceImpl implements TestService {
...
@@ -40,18 +41,18 @@ public class TestServiceImpl implements TestService {
String
cmd
=
cmdTools
.
parse
(
cmdStartParams
);
String
cmd
=
cmdTools
.
parse
(
cmdStartParams
);
Date
date
=
new
Date
();
Date
date
=
new
Date
();
DateFormat
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd-hh-mm-ss-"
);
DateFormat
df
=
new
SimpleDateFormat
(
"yyyy-MM-dd-hh-mm-ss-"
);
String
outputFileName
=
df
.
format
(
date
)
+
cmdStartParams
.
getProtopcol
()+
"-output"
;
String
outputFileName
=
df
.
format
(
date
)
+
cmdStartParams
.
getProtopcol
()
+
"-output"
;
String
finalCmd
=
CmdConstent
.
RUN_AFLNET_BEFORE
+
outputFileName
+
CmdConstent
.
RUN_AFLNET_AFTER
+
cmd
+
aflnetProperties
.
getAflnetPath
()
+
"live555/testProgs/"
+
"testOnDemandRTSPServer 8554"
;
String
finalCmd
=
CmdConstent
.
RUN_AFLNET_BEFORE
+
outputFileName
+
CmdConstent
.
RUN_AFLNET_AFTER
+
cmd
+
aflnetProperties
.
getAflnetPath
()
+
"live555/testProgs/"
+
"testOnDemandRTSPServer 8554"
;
GlobalParameters
.
aflnetData
.
put
(
"aflnetName"
,
outputFileName
);
GlobalParameters
.
aflnetData
.
put
(
"aflnetName"
,
outputFileName
);
log
.
info
(
"The cmd is [{}]"
,
finalCmd
);
log
.
info
(
"The cmd is [{}]"
,
finalCmd
);
cmdTools
.
runProgramCmd
(
finalCmd
,
outputFileName
+
".zip"
);
cmdTools
.
runProgramCmd
(
finalCmd
,
outputFileName
+
".zip"
);
}
}
@Override
@Override
public
void
testStop
()
{
public
void
testStop
()
{
TestControlTools
.
setIsRunning
(
false
);
TestControlTools
.
setIsRunning
(
false
);
GlobalParameters
.
testTimeMessage
.
get
(
"aflnet"
).
put
(
"end"
,
System
.
currentTimeMillis
());
log
.
info
(
"Aflnet has been stopped ! "
);
log
.
info
(
"Aflnet has been stopped ! "
);
try
{
try
{
new
Thread
(
new
Runnable
()
{
new
Thread
(
new
Runnable
()
{
...
@@ -63,16 +64,17 @@ public class TestServiceImpl implements TestService {
...
@@ -63,16 +64,17 @@ public class TestServiceImpl implements TestService {
cmdTools
.
runCmd
(
CmdConstent
.
RUN_ZIP_FILE
+
fileZipName
+
" "
+
fileName
,
"zip file in testStart"
);
cmdTools
.
runCmd
(
CmdConstent
.
RUN_ZIP_FILE
+
fileZipName
+
" "
+
fileName
,
"zip file in testStart"
);
List
<
String
>
files
=
cmdTools
.
runCmd
(
CmdConstent
.
GET_FILE_NAME
+
aflnetProperties
.
getOutputPath
(),
"getSeedFiles"
);
List
<
String
>
files
=
cmdTools
.
runCmd
(
CmdConstent
.
GET_FILE_NAME
+
aflnetProperties
.
getOutputPath
(),
"getSeedFiles"
);
files
.
stream
().
forEach
(
System
.
out
::
println
);
files
.
stream
().
forEach
(
System
.
out
::
println
);
if
(!
files
.
contains
(
fileZipName
))
{
if
(!
files
.
contains
(
fileZipName
))
{
log
.
error
(
"File zip error!"
);
log
.
error
(
"File zip error!"
);
}
}
while
(
files
.
contains
(
fileZipName
)
&&
flag
==
0
)
{
//当前存在压缩包才存入
while
(
files
.
contains
(
fileZipName
)
&&
flag
==
0
)
{
//当前存在压缩包才存入
flag
=
aflnetPersistenceService
.
aflnetResultBackup
(
fileZipName
,
GlobalParameters
.
aflnetData
.
get
(
"missionName"
));
flag
=
aflnetPersistenceService
.
aflnetResultBackup
(
fileZipName
,
GlobalParameters
.
aflnetData
.
get
(
"missionName"
),
1
,
0
,
GlobalParameters
.
testTimeMessage
.
get
(
"aflnet"
).
get
(
"end"
)-
GlobalParameters
.
testTimeMessage
.
get
(
"aflnet"
).
get
(
"start"
));
}
}
/*清除生成的文件*/
/*清除生成的文件*/
try
{
try
{
cmdTools
.
runCmd
(
CmdConstent
.
DELETE_FILE
+
fileName
,
"delete file"
);
cmdTools
.
runCmd
(
CmdConstent
.
DELETE_FILE
+
fileName
,
"delete file"
);
cmdTools
.
runCmd
(
CmdConstent
.
DELETE_FILE
+
fileZipName
,
"delete zipFile"
);
cmdTools
.
runCmd
(
CmdConstent
.
DELETE_FILE
+
fileZipName
,
"delete zipFile"
);
}
catch
(
CmdException
e
)
{
}
catch
(
CmdException
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
log
.
error
(
"file delete failed!"
);
log
.
error
(
"file delete failed!"
);
...
...
fuzzIntegration/src/main/java/com/example/fuzzControll/tools/CmdTools.java
View file @
deacd8b0
package
com
.
example
.
fuzzControll
.
tools
;
package
com
.
example
.
fuzzControll
.
tools
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.example.fuzzControll.annotion.NeedCut
;
import
com.example.fuzzControll.conf.AflnetProperties
;
import
com.example.fuzzControll.conf.AflnetProperties
;
import
com.example.fuzzControll.conf.SpringContextUtil
;
import
com.example.fuzzControll.conf.SpringContextUtil
;
import
com.example.fuzzControll.constents.CmdConstent
;
import
com.example.fuzzControll.constents.CmdConstent
;
...
@@ -13,6 +14,7 @@ import com.example.fuzzControll.pojo.vo.*;
...
@@ -13,6 +14,7 @@ import com.example.fuzzControll.pojo.vo.*;
import
com.example.fuzzControll.service.AflnetPersistenceService
;
import
com.example.fuzzControll.service.AflnetPersistenceService
;
import
com.example.fuzzControll.service.impl.websocketClientServiceImpl
;
import
com.example.fuzzControll.service.impl.websocketClientServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.swing.*
;
import
javax.swing.*
;
...
@@ -24,6 +26,7 @@ import java.util.stream.Collectors;
...
@@ -24,6 +26,7 @@ import java.util.stream.Collectors;
//todo need modify
//todo need modify
@Slf4j
@Slf4j
@Component
public
class
CmdTools
{
public
class
CmdTools
{
Boolean
send
=
false
;
Boolean
send
=
false
;
...
@@ -35,12 +38,12 @@ public class CmdTools {
...
@@ -35,12 +38,12 @@ public class CmdTools {
public
List
<
String
>
runCmd
(
String
cmd
,
String
caller
)
throws
CmdException
{
public
List
<
String
>
runCmd
(
String
cmd
,
String
caller
)
throws
CmdException
{
List
<
String
>
result
=
new
ArrayList
<
String
>();
List
<
String
>
result
=
new
ArrayList
<
String
>();
try
{
try
{
log
.
info
(
caller
+
" is running!"
);
log
.
info
(
caller
+
" is running!"
);
Process
process
=
Runtime
.
getRuntime
().
exec
(
cmd
);
Process
process
=
Runtime
.
getRuntime
().
exec
(
cmd
);
printMessage
(
process
.
getInputStream
(),
result
);
printMessage
(
process
.
getInputStream
(),
result
);
printMessage
(
process
.
getErrorStream
(),
new
ArrayList
<
String
>());
printMessage
(
process
.
getErrorStream
(),
new
ArrayList
<
String
>());
process
.
waitFor
();
process
.
waitFor
();
log
.
info
(
caller
+
" end!"
);
log
.
info
(
caller
+
" end!"
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
e
.
printStackTrace
();
throw
new
CmdException
(
caller
+
" run cmd failed!"
);
throw
new
CmdException
(
caller
+
" run cmd failed!"
);
...
@@ -54,6 +57,7 @@ public class CmdTools {
...
@@ -54,6 +57,7 @@ public class CmdTools {
* 运行需要后台运行cmd
* 运行需要后台运行cmd
* 通过websocket返回数据
* 通过websocket返回数据
*/
*/
@NeedCut
(
name
=
"aflnet"
,
moment
=
"before"
,
function
=
"backup"
)
public
void
runProgramCmd
(
String
cmd
,
String
outputFileName
)
throws
AflnetException
{
public
void
runProgramCmd
(
String
cmd
,
String
outputFileName
)
throws
AflnetException
{
try
{
try
{
Process
process
=
Runtime
.
getRuntime
().
exec
(
cmd
);
Process
process
=
Runtime
.
getRuntime
().
exec
(
cmd
);
...
@@ -62,7 +66,7 @@ public class CmdTools {
...
@@ -62,7 +66,7 @@ public class CmdTools {
process
.
waitFor
();
process
.
waitFor
();
log
.
info
(
"Aflnet cmd have been run."
);
log
.
info
(
"Aflnet cmd have been run."
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
log
.
error
(
"alfnet run error!:"
+
e
.
getMessage
()
);
throw
new
AflnetException
(
"Aflnet run error"
);
throw
new
AflnetException
(
"Aflnet run error"
);
}
}
}
}
...
@@ -76,6 +80,7 @@ public class CmdTools {
...
@@ -76,6 +80,7 @@ public class CmdTools {
List
<
String
>
out
=
Collections
.
synchronizedList
(
new
ArrayList
<
String
>());
List
<
String
>
out
=
Collections
.
synchronizedList
(
new
ArrayList
<
String
>());
List
<
String
>
error
=
Collections
.
synchronizedList
(
new
ArrayList
<
String
>());
List
<
String
>
error
=
Collections
.
synchronizedList
(
new
ArrayList
<
String
>());
try
{
try
{
GlobalParameters
.
testTimeMessage
.
get
(
"kitty"
).
put
(
"start"
,
System
.
currentTimeMillis
());
Process
process
=
Runtime
.
getRuntime
().
exec
(
cmd
);
Process
process
=
Runtime
.
getRuntime
().
exec
(
cmd
);
printMessageByProgramCmd
(
process
.
getInputStream
(),
out
);
printMessageByProgramCmd
(
process
.
getInputStream
(),
out
);
printMessageByProgramCmd
(
process
.
getErrorStream
(),
error
);
printMessageByProgramCmd
(
process
.
getErrorStream
(),
error
);
...
@@ -92,6 +97,7 @@ public class CmdTools {
...
@@ -92,6 +97,7 @@ public class CmdTools {
/*新开一个线程存入数据*/
/*新开一个线程存入数据*/
List
<
String
>
finalOut
=
out
;
List
<
String
>
finalOut
=
out
;
List
<
String
>
finalError
=
error
;
List
<
String
>
finalError
=
error
;
GlobalParameters
.
testTimeMessage
.
get
(
"kitty"
).
put
(
"end"
,
System
.
currentTimeMillis
());
new
Thread
(
new
Runnable
()
{
new
Thread
(
new
Runnable
()
{
@Override
@Override
public
void
run
()
{
public
void
run
()
{
...
@@ -164,11 +170,13 @@ public class CmdTools {
...
@@ -164,11 +170,13 @@ public class CmdTools {
if
(
line
.
contains
(
"All set and ready to roll!"
)
||
line
.
contains
(
"american fuzzy"
)
||
line
.
contains
(
"process timing overall results"
))
{
if
(
line
.
contains
(
"All set and ready to roll!"
)
||
line
.
contains
(
"american fuzzy"
)
||
line
.
contains
(
"process timing overall results"
))
{
show
=
false
;
show
=
false
;
}
else
if
(
line
.
contains
(
"PROGRAM ABORT"
))
{
}
else
if
(
line
.
contains
(
"PROGRAM ABORT"
))
{
log
.
error
(
"Aflnet run failed !"
);
throw
new
AflnetException
(
"Aflnet run failed !"
);
throw
new
AflnetException
(
"Aflnet run failed !"
);
}
}
if
(
show
)
{
if
(
show
)
{
log
.
info
(
line
);
log
.
info
(
line
);
}
}
GlobalParameters
.
testTimeMessage
.
get
(
"aflnet"
).
put
(
"start"
,
System
.
currentTimeMillis
());
if
(
line
.
contains
(
"run time"
))
{
if
(
line
.
contains
(
"run time"
))
{
send
=
false
;
send
=
false
;
int
run_time
=
line
.
indexOf
(
":"
);
int
run_time
=
line
.
indexOf
(
":"
);
...
@@ -264,37 +272,37 @@ public class CmdTools {
...
@@ -264,37 +272,37 @@ public class CmdTools {
}
}
StringBuilder
cmd
=
new
StringBuilder
();
StringBuilder
cmd
=
new
StringBuilder
();
if
(
cmdStartParams
.
getNetinfo
()
!=
""
&&
cmdStartParams
.
getNetinfo
()
!=
null
)
{
if
(
cmdStartParams
.
getNetinfo
()
!=
""
&&
cmdStartParams
.
getNetinfo
()
!=
null
)
{
cmd
.
append
(
" -N "
+
cmdStartParams
.
getNetinfo
()+
" "
);
cmd
.
append
(
" -N "
+
cmdStartParams
.
getNetinfo
()
+
" "
);
}
else
{
}
else
{
log
.
error
(
"There is no netinfo !"
);
log
.
error
(
"There is no netinfo !"
);
throw
new
AflnetException
(
"There is no netinfo !"
);
throw
new
AflnetException
(
"There is no netinfo !"
);
}
}
if
(
cmdStartParams
.
getProtopcol
()
!=
""
)
{
if
(
cmdStartParams
.
getProtopcol
()
!=
""
)
{
cmd
.
append
(
" -P "
+
cmdStartParams
.
getProtopcol
()+
" "
);
cmd
.
append
(
" -P "
+
cmdStartParams
.
getProtopcol
()
+
" "
);
}
}
if
(
cmdStartParams
.
getWaiting
()
!=
0
)
{
if
(
cmdStartParams
.
getWaiting
()
!=
0
)
{
cmd
.
append
(
" -D "
+
cmdStartParams
.
getWaiting
()+
" "
);
cmd
.
append
(
" -D "
+
cmdStartParams
.
getWaiting
()
+
" "
);
}
}
if
(
cmdStartParams
.
getNsname
()
!=
""
)
{
if
(
cmdStartParams
.
getNsname
()
!=
""
)
{
cmd
.
append
(
" -e "
+
cmdStartParams
.
getNsname
()+
" "
);
cmd
.
append
(
" -e "
+
cmdStartParams
.
getNsname
()
+
" "
);
}
}
if
(
cmdStartParams
.
getKill
())
{
if
(
cmdStartParams
.
getKill
())
{
cmd
.
append
(
" -K "
);
cmd
.
append
(
" -K "
);
}
}
if
(
cmdStartParams
.
getAwareMode
())
{
if
(
cmdStartParams
.
getAwareMode
())
{
cmd
.
append
(
" -E "
+
" "
);
cmd
.
append
(
" -E "
+
" "
);
}
}
if
(
cmdStartParams
.
getRegionMutationOperators
())
{
if
(
cmdStartParams
.
getRegionMutationOperators
())
{
cmd
.
append
(
" -R "
+
" "
);
cmd
.
append
(
" -R "
+
" "
);
}
}
if
(
cmdStartParams
.
getFalseNegativeMode
())
{
if
(
cmdStartParams
.
getFalseNegativeMode
())
{
cmd
.
append
(
" -F "
+
" "
);
cmd
.
append
(
" -F "
+
" "
);
}
}
if
(
cmdStartParams
.
getScript
()
!=
""
)
{
if
(
cmdStartParams
.
getScript
()
!=
""
)
{
cmd
.
append
(
" -c "
+
cmdStartParams
.
getScript
()+
" "
);
cmd
.
append
(
" -c "
+
cmdStartParams
.
getScript
()
+
" "
);
}
}
if
(
cmdStartParams
.
getStateSelectionAlgo
()
!=
0
)
{
if
(
cmdStartParams
.
getStateSelectionAlgo
()
!=
0
)
{
cmd
.
append
(
" -q "
+
cmdStartParams
.
getStateSelectionAlgo
()+
" "
);
cmd
.
append
(
" -q "
+
cmdStartParams
.
getStateSelectionAlgo
()
+
" "
);
}
}
if
(
cmdStartParams
.
getSeedSelectionAlgo
()
!=
0
)
{
if
(
cmdStartParams
.
getSeedSelectionAlgo
()
!=
0
)
{
cmd
.
append
(
" -s "
+
cmdStartParams
.
getSeedSelectionAlgo
()
+
" "
);
cmd
.
append
(
" -s "
+
cmdStartParams
.
getSeedSelectionAlgo
()
+
" "
);
...
@@ -313,13 +321,13 @@ public class CmdTools {
...
@@ -313,13 +321,13 @@ public class CmdTools {
e
.
printStackTrace
();
e
.
printStackTrace
();
log
.
error
(
"kitty backup error!"
);
log
.
error
(
"kitty backup error!"
);
}
}
/*kitty的协议模板方法的日志和数据包文件存入数据库*/
//
/*kitty的协议模板方法的日志和数据包文件存入数据库*/
if
(
caller
.
equals
(
"protocolTemplate"
))
{
//
if (caller.equals("protocolTemplate")) {
// GlobalParameters.kittyFuzzPersistenceService.KittyPackagesBackup(missionId);
//
//
GlobalParameters.kittyFuzzPersistenceService.KittyPackagesBackup(missionId);
GlobalParameters
.
missionInfoMapper
.
insertMission
(
new
MissionInfo
(
missionId
,
2
,
new
Date
(),
missionName
));
// GlobalParameters.missionInfoMapper.insertMission(new MissionInfo(missionId, 2, new Date(), missionName,
));
}
else
{
//
} else {
/*存入missionInfo信息*/
//
/*存入missionInfo信息*/
GlobalParameters
.
missionInfoMapper
.
insertMission
(
new
MissionInfo
(
missionId
,
3
,
new
Date
(),
missionName
));
//
GlobalParameters.missionInfoMapper.insertMission(new MissionInfo(missionId, 3, new Date(), missionName));
}
//
}
}
}
}
}
\ No newline at end of file
fuzzIntegration/src/main/java/com/example/fuzzControll/tools/GlobalParameters.java
View file @
deacd8b0
...
@@ -18,4 +18,12 @@ public class GlobalParameters {
...
@@ -18,4 +18,12 @@ public class GlobalParameters {
public
static
AflnetProperties
aflnetProperties
=
(
AflnetProperties
)
SpringContextUtil
.
getBean
(
"AflnetProperties"
);
public
static
AflnetProperties
aflnetProperties
=
(
AflnetProperties
)
SpringContextUtil
.
getBean
(
"AflnetProperties"
);
public
static
AflnetPersistenceService
aflnetPersistenceService
=
(
AflnetPersistenceService
)
SpringContextUtil
.
getBean
(
"AflnetPersistenceService"
);
public
static
AflnetPersistenceService
aflnetPersistenceService
=
(
AflnetPersistenceService
)
SpringContextUtil
.
getBean
(
"AflnetPersistenceService"
);
public
static
MissionInfoMapper
missionInfoMapper
=
(
MissionInfoMapper
)
SpringContextUtil
.
getBean
(
"MissionInfoMapper"
);
public
static
MissionInfoMapper
missionInfoMapper
=
(
MissionInfoMapper
)
SpringContextUtil
.
getBean
(
"MissionInfoMapper"
);
/**
* 系统全局测试时间参数
*/
public
static
ConcurrentHashMap
<
String
,
ConcurrentHashMap
<
String
,
Long
>>
testTimeMessage
=
new
ConcurrentHashMap
<>();
/**
* 多线程异常控制
*/
public
static
ConcurrentHashMap
<
Thread
,
String
>
ThreadState
=
new
ConcurrentHashMap
<>();
}
}
fuzzIntegration/src/main/resources/application.yml
View file @
deacd8b0
...
@@ -5,6 +5,6 @@ spring:
...
@@ -5,6 +5,6 @@ spring:
active
:
dev
#默认为开发环境
active
:
dev
#默认为开发环境
server
:
server
:
port
:
810
4
port
:
810
3
fuzzIntegration/src/main/resources/mapper/MissionInfoMapper.xml
View file @
deacd8b0
...
@@ -4,25 +4,35 @@
...
@@ -4,25 +4,35 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.example.fuzzControll.mapper.MissionInfoMapper"
>
<mapper
namespace=
"com.example.fuzzControll.mapper.MissionInfoMapper"
>
<resultMap
type=
"com.example.fuzzControll.pojo.vo.MissionInfo"
id=
"MissionInfo"
>
<resultMap
type=
"com.example.fuzzControll.pojo.vo.MissionInfo"
id=
"MissionInfo
InDataBase
"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"id"
column=
"id"
/>
<result
property=
"missionId"
column=
"missionId"
/>
<result
property=
"missionId"
column=
"missionId"
/>
<result
property=
"tableId"
column=
"tableId"
/>
<result
property=
"tableId"
column=
"tableId"
/>
<result
property=
"createTime"
column=
"createTime"
/>
<result
property=
"createTime"
column=
"createTime"
/>
<result
property=
"missionName"
column=
"missionName"
/>
<result
property=
"missionName"
column=
"missionName"
/>
<result
property=
"state"
column=
"state"
/>
<result
property=
"runTime"
column=
"runTime"
/>
</resultMap>
<resultMap
type=
"com.example.fuzzControll.pojo.vo.MissionInfo"
id=
"MissionInfoInVo"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"missionId"
column=
"missionId"
/>
<result
property=
"createTime"
column=
"createTime"
/>
<result
property=
"missionName"
column=
"missionName"
/>
<result
property=
"stateName"
column=
"state"
/>
<result
property=
"runTime"
column=
"runTime"
/>
</resultMap>
</resultMap>
<sql
id=
"selectMissionInfo"
>
<sql
id=
"selectMissionInfo"
>
select id, missionId,
tableId, createTime,missionNa
me from missionIdInfo
select id, missionId,
createTime,missionName ,state,runTi
me from missionIdInfo
</sql>
</sql>
<insert
id=
"insertMission"
>
<insert
id=
"insertMission"
>
insert into missionIdInfo(missionId,tableId, createTime,missionName) values(#{missionId}, #{tableId},#{createTime}, #{missionName})
insert into missionIdInfo(missionId, tableId, createTime, missionName, state, runTime)
values (#{missionId}, #{tableId}, #{createTime}, #{missionName}, #{state}, #{runTime})
</insert>
</insert>
<select
id=
"selectByMissionId"
resultMap=
"MissionInfo"
>
<select
id=
"selectByMissionId"
resultMap=
"MissionInfo
InVo
"
>
<include
refid=
"selectMissionInfo"
/>
<include
refid=
"selectMissionInfo"
/>
where
missionId = #{missionId}
and
missionId = #{missionId}
</select>
</select>
<select
id=
"selectMissionInfoList"
result
Type=
"com.example.fuzzControll.pojo.vo.MissionInf
o"
>
<select
id=
"selectMissionInfoList"
result
Map=
"MissionInfoInV
o"
>
<include
refid=
"selectMissionInfo"
/>
<include
refid=
"selectMissionInfo"
/>
</select>
</select>
<select
id=
"selectTopMissionId"
resultType=
"java.lang.Integer"
>
<select
id=
"selectTopMissionId"
resultType=
"java.lang.Integer"
>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment