feat(config): enable or disable httpd server. (#262)

This commit is contained in:
Bo-Yi Wu 2017-07-27 11:19:36 +08:00 committed by GitHub
parent ac7bd0afd3
commit 00ff0248a2
7 changed files with 25 additions and 0 deletions

View File

@ -69,6 +69,7 @@ See the [YAML config example](config/config.yml):
[embedmd]:# (config/config.yml yaml)
```yaml
core:
enabled: true # enabale httpd server
port: "8088" # ignore this port number if auto_tls is enabled (listen 443).
worker_num: 0 # default worker number is runtime.NumCPU()
queue_num: 0 # default queue number is 8192

View File

@ -20,6 +20,7 @@ type ConfYaml struct {
// SectionCore is sub section of config.
type SectionCore struct {
Enabled bool `yaml:"enabled"`
Port string `yaml:"port"`
MaxNotification int64 `yaml:"max_notification"`
WorkerNum int64 `yaml:"worker_num"`
@ -128,6 +129,7 @@ func BuildDefaultPushConf() ConfYaml {
// Core
conf.Core.Port = "8088"
conf.Core.Enabled = true
conf.Core.WorkerNum = int64(runtime.NumCPU())
conf.Core.QueueNum = int64(8192)
conf.Core.Mode = "release"

View File

@ -1,4 +1,5 @@
core:
enabled: true # enabale httpd server
port: "8088" # ignore this port number if auto_tls is enabled (listen 443).
worker_num: 0 # default worker number is runtime.NumCPU()
queue_num: 0 # default queue number is 8192

View File

@ -56,6 +56,7 @@ func (suite *ConfigTestSuite) SetupTest() {
func (suite *ConfigTestSuite) TestValidateConfDefault() {
// Core
assert.Equal(suite.T(), "8088", suite.ConfGorushDefault.Core.Port)
assert.Equal(suite.T(), true, suite.ConfGorushDefault.Core.Enabled)
assert.Equal(suite.T(), int64(runtime.NumCPU()), suite.ConfGorushDefault.Core.WorkerNum)
assert.Equal(suite.T(), int64(8192), suite.ConfGorushDefault.Core.QueueNum)
assert.Equal(suite.T(), "release", suite.ConfGorushDefault.Core.Mode)
@ -120,6 +121,7 @@ func (suite *ConfigTestSuite) TestValidateConfDefault() {
func (suite *ConfigTestSuite) TestValidateConf() {
// Core
assert.Equal(suite.T(), "8088", suite.ConfGorush.Core.Port)
assert.Equal(suite.T(), true, suite.ConfGorush.Core.Enabled)
assert.Equal(suite.T(), int64(runtime.NumCPU()), suite.ConfGorush.Core.WorkerNum)
assert.Equal(suite.T(), int64(8192), suite.ConfGorush.Core.QueueNum)
assert.Equal(suite.T(), "release", suite.ConfGorush.Core.Mode)

View File

@ -255,3 +255,12 @@ func TestMetricsHandler(t *testing.T) {
assert.Equal(t, http.StatusOK, r.Code)
})
}
func TestDisabledHTTPServer(t *testing.T) {
initTest()
PushConf.Core.Enabled = false
err := RunHTTPServer()
PushConf.Core.Enabled = true
assert.Nil(t, err)
}

View File

@ -11,6 +11,11 @@ import (
// RunHTTPServer provide run http or https protocol.
func RunHTTPServer() (err error) {
if !PushConf.Core.Enabled {
LogAccess.Debug("httpd server is disabled.")
return nil
}
LogAccess.Debug("HTTPD server is running on " + PushConf.Core.Port + " port.")
if PushConf.Core.AutoTLS.Enabled {
err = gracehttp.Serve(autoTLSServer())

View File

@ -8,6 +8,11 @@ import (
// RunHTTPServer provide run http or https protocol.
func RunHTTPServer() (err error) {
if !PushConf.Core.Enabled {
LogAccess.Debug("httpd server is disabled.")
return nil
}
if PushConf.Core.AutoTLS.Enabled {
s := autoTLSServer()
err = s.ListenAndServeTLS("", "")