From 1e3d57027e7e11f1c2cb230bde9bd3c38da1003c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E8=81=AA?= Date: Thu, 21 Jul 2022 18:10:01 +0800 Subject: [PATCH] fix: quit plugin --- hrp/boomer.go | 15 +++++++++------ hrp/plugin.go | 10 ---------- hrp/runner.go | 14 +++++++++----- 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/hrp/boomer.go b/hrp/boomer.go index 4c2bcebe..c44448f2 100644 --- a/hrp/boomer.go +++ b/hrp/boomer.go @@ -61,6 +61,15 @@ func (b *HRPBoomer) Run(testcases ...ITestCase) { os.Exit(1) } + // quit all plugins + defer func() { + if len(pluginMap) > 0 { + for _, plugin := range pluginMap { + plugin.Quit() + } + } + }() + for _, testcase := range testCases { rendezvousList := initRendezvous(testcase, int64(b.GetSpawnCount())) task := b.convertBoomerTask(testcase, rendezvousList) @@ -71,12 +80,6 @@ func (b *HRPBoomer) Run(testcases ...ITestCase) { } func (b *HRPBoomer) Quit() { - b.pluginsMutex.Lock() - plugins := b.plugins - b.pluginsMutex.Unlock() - for _, plugin := range plugins { - plugin.Quit() - } b.Boomer.Quit() } diff --git a/hrp/plugin.go b/hrp/plugin.go index 9ab2017e..ff8252b5 100644 --- a/hrp/plugin.go +++ b/hrp/plugin.go @@ -3,10 +3,8 @@ package hrp import ( "fmt" "os" - "os/signal" "path/filepath" "strings" - "syscall" "github.com/httprunner/funplugin" "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 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 event := sdk.EventTracking{ Category: "InitPlugin", diff --git a/hrp/runner.go b/hrp/runner.go index 3442b978..694d0cc9 100644 --- a/hrp/runner.go +++ b/hrp/runner.go @@ -184,6 +184,15 @@ func (r *HRPRunner) Run(testcases ...ITestCase) error { return err } + // quit all plugins + defer func() { + if len(pluginMap) > 0 { + for _, plugin := range pluginMap { + plugin.Quit() + } + } + }() + var runErr error // run testcase one by one 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") return err } - defer func() { - if sessionRunner.parser.plugin != nil { - sessionRunner.parser.plugin.Quit() - } - }() for it := sessionRunner.parametersIterator; it.HasNext(); { err = sessionRunner.Start(it.Next())