func Test_strategy_registry_enable_api_server(t *testing.T) {
	logging.SetLevel("info")
	config.CORE_CONF_FILEPATH, _ = filepath.Abs("./test/core_config_registry_enable_api.yml")
	//	config.CONF_FILEPATH, _ = filepath.Abs("./test/config.yml")
	err := config.LoadCoreConfig()
	if err != nil || config.CoreConf.Enable_http_api != true {
		t.Error("CoreConf.EnableHTTPAPI != true, err: %v", err)
		return
	}

	Stop() // stop if already exists while test all cases
	Start()

	//	resp, err := http.Get("http://localhost:3031/sys_info")
	hResp, err := goreq.Request{
		Method:      "Get",
		Uri:         "http://localhost:3031/sys_info",
		Accept:      "application/json",
		ContentType: "application/json",
		UserAgent:   "hickwall",
		Timeout:     100 * time.Millisecond,
	}.Do()
	if err != nil {
		t.Errorf("api server doesn't work. %v", err)
		return
	}
	defer hResp.Body.Close()
	t.Log(hResp)

}
func Test_strategy_registry_disable_api_server(t *testing.T) {
	config.CORE_CONF_FILEPATH, _ = filepath.Abs("./test/core_config_registry_disable_api.yml")
	err := config.LoadCoreConfig()
	if err != nil || config.CoreConf.Enable_http_api != false {
		t.Error("CoreConf.EnableHTTPAPI != false, err: %v, %v", err, config.CoreConf.Enable_http_api)
		return
	}

	Stop() // stop if already exists while test all cases
	Start()

	//	resp, err := http.Get("http://localhost:3031/sys_info")
	hResp, err := goreq.Request{
		Method:      "Get",
		Uri:         "http://localhost:3034/sys_info", // use disabled api port 3034
		Accept:      "application/json",
		ContentType: "application/json",
		UserAgent:   "hickwall",
		Timeout:     100 * time.Millisecond,
	}.Do()
	if err == nil {
		t.Error("api server still working.")
		defer hResp.Body.Close()
	}
}
// this is the entry point of long running daemon
func run(isDebug bool, daemon bool) {
	if !config.IsCoreConfigLoaded() {
		err := config.LoadCoreConfig()
		if err != nil {
			logging.Critical("Failed to load core config: ", err)
			return
		}
	}

	go func() {
	loop:
		rss_mb := float64(gs.GetCurrentRSS()) / 1024 / 1024 // Mb
		logging.Tracef("current rss: %f", rss_mb)
		if rss_mb > float64(config.CoreConf.Rss_limit_mb) {
			logging.Criticalf("Suicide. CurrentRSS above limit: %f >= %d Mb", rss_mb, config.CoreConf.Rss_limit_mb)
			os.Exit(1)
		}
		next := time.After(time.Second)
		<-next
		goto loop
	}()

	if daemon {
		runService(isDebug)
	} else {
		runWithoutService()
	}
}