diff options
author | Pierre de La Morinerie <kemenaran@gmail.com> | 2018-02-12 22:16:32 +0530 |
---|---|---|
committer | Christopher Speller <crspeller@gmail.com> | 2018-02-12 08:46:32 -0800 |
commit | 07fd7aeeb8eb2b198b01b713a4ab57f6352faef2 (patch) | |
tree | 002eb93e9258b91553f3784629a1acdff6f6fc49 /cmd/platform/server.go | |
parent | 3e0c3eff9f2ddec241cdb3f7a91230fd7c51a5f6 (diff) | |
download | chat-07fd7aeeb8eb2b198b01b713a4ab57f6352faef2.tar.gz chat-07fd7aeeb8eb2b198b01b713a4ab57f6352faef2.tar.bz2 chat-07fd7aeeb8eb2b198b01b713a4ab57f6352faef2.zip |
Add tests for the `platform server` command (#8231)
* Cleanup app state on initialization error
When returning an initialization error, the app state was not cleaned
up. This is especially visible during tests, as `appCount` is not
decremented, and makes the new app initialization fail.
* Test the `platform server` command
As the `platform server` command only exits when interrupted by
a signal, it is not possible to test it as the other cobra
commands. Instead we directly test the actual command function.
The internal command handler is slighly refactored to take
a channel in argument, and registers it as the signal handler.
Nothing very different—except than controlling this channel
from the outside allows the test to send the system signal
itself, thus preventing the server to run forever.
Diffstat (limited to 'cmd/platform/server.go')
-rw-r--r-- | cmd/platform/server.go | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/cmd/platform/server.go b/cmd/platform/server.go index a8a6e8923..1b411cf20 100644 --- a/cmd/platform/server.go +++ b/cmd/platform/server.go @@ -42,10 +42,11 @@ func runServerCmd(cmd *cobra.Command, args []string) error { disableConfigWatch, _ := cmd.Flags().GetBool("disableconfigwatch") - return runServer(config, disableConfigWatch) + interruptChan := make(chan os.Signal, 1) + return runServer(config, disableConfigWatch, interruptChan) } -func runServer(configFileLocation string, disableConfigWatch bool) error { +func runServer(configFileLocation string, disableConfigWatch bool, interruptChan chan os.Signal) error { options := []app.Option{app.ConfigFile(configFileLocation)} if disableConfigWatch { options = append(options, app.DisableConfigWatch) @@ -165,9 +166,8 @@ func runServer(configFileLocation string, disableConfigWatch bool) error { // wait for kill signal before attempting to gracefully shutdown // the running service - c := make(chan os.Signal, 1) - signal.Notify(c, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) - <-c + signal.Notify(interruptChan, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) + <-interruptChan if a.Cluster != nil { a.Cluster.StopInterNodeCommunication() |