fix: quit plugin

This commit is contained in:
徐聪
2022-07-21 18:10:01 +08:00
parent 79fe603a06
commit bdb2d4566d
3 changed files with 18 additions and 21 deletions

View File

@@ -61,6 +61,15 @@ func (b *HRPBoomer) Run(testcases ...ITestCase) {
os.Exit(1) os.Exit(1)
} }
// quit all plugins
defer func() {
if len(pluginMap) > 0 {
for _, plugin := range pluginMap {
plugin.Quit()
}
}
}()
for _, testcase := range testCases { for _, testcase := range testCases {
rendezvousList := initRendezvous(testcase, int64(b.GetSpawnCount())) rendezvousList := initRendezvous(testcase, int64(b.GetSpawnCount()))
task := b.convertBoomerTask(testcase, rendezvousList) task := b.convertBoomerTask(testcase, rendezvousList)
@@ -71,12 +80,6 @@ func (b *HRPBoomer) Run(testcases ...ITestCase) {
} }
func (b *HRPBoomer) Quit() { func (b *HRPBoomer) Quit() {
b.pluginsMutex.Lock()
plugins := b.plugins
b.pluginsMutex.Unlock()
for _, plugin := range plugins {
plugin.Quit()
}
b.Boomer.Quit() b.Boomer.Quit()
} }

View File

@@ -3,10 +3,8 @@ package hrp
import ( import (
"fmt" "fmt"
"os" "os"
"os/signal"
"path/filepath" "path/filepath"
"strings" "strings"
"syscall"
"github.com/httprunner/funplugin" "github.com/httprunner/funplugin"
"github.com/httprunner/funplugin/fungo" "github.com/httprunner/funplugin/fungo"
@@ -79,14 +77,6 @@ func initPlugin(path, venv string, logOn bool) (plugin funplugin.IPlugin, err er
// add plugin instance to plugin map // add plugin instance to plugin map
pluginMap[pluginPath] = plugin pluginMap[pluginPath] = plugin
// catch Interrupt and SIGTERM signals to ensure plugin quitted
c := make(chan os.Signal)
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
go func() {
<-c
plugin.Quit()
}()
// report event for initializing plugin // report event for initializing plugin
event := sdk.EventTracking{ event := sdk.EventTracking{
Category: "InitPlugin", Category: "InitPlugin",

View File

@@ -184,6 +184,15 @@ func (r *HRPRunner) Run(testcases ...ITestCase) error {
return err return err
} }
// quit all plugins
defer func() {
if len(pluginMap) > 0 {
for _, plugin := range pluginMap {
plugin.Quit()
}
}
}()
var runErr error var runErr error
// run testcase one by one // run testcase one by one
for _, testcase := range testCases { for _, testcase := range testCases {
@@ -192,11 +201,6 @@ func (r *HRPRunner) Run(testcases ...ITestCase) error {
log.Error().Err(err).Msg("[Run] init session runner failed") log.Error().Err(err).Msg("[Run] init session runner failed")
return err return err
} }
defer func() {
if sessionRunner.parser.plugin != nil {
sessionRunner.parser.plugin.Quit()
}
}()
for it := sessionRunner.parametersIterator; it.HasNext(); { for it := sessionRunner.parametersIterator; it.HasNext(); {
err = sessionRunner.Start(it.Next()) err = sessionRunner.Start(it.Next())