package gin_test

import (
	"fmt"
	"net/http"
	"os"
	"os/signal"
	"syscall"
	"testing"

	"go_dreamfactory/lego/sys/gin"
	"go_dreamfactory/lego/sys/gin/engine"
	"go_dreamfactory/lego/sys/log"
)

func Test_sys(t *testing.T) {
	if err := log.OnInit(nil, log.SetFileName("test")); err != nil {
		fmt.Printf("log init err:%v", err)
		return
	}
	if sys, err := gin.NewSys(); err != nil {
		fmt.Printf("gin init err:%v", err)
	} else {
		sys.GET("/test", func(c *engine.Context) {
			c.JSON(http.StatusOK, "hello")
		})
	}

	//监听外部关闭服务信号
	c := make(chan os.Signal, 1)
	//添加进程结束信号
	signal.Notify(c,
		os.Interrupt,    //退出信号 ctrl+c退出
		syscall.SIGHUP,  //终端控制进程结束(终端连接断开)
		syscall.SIGINT,  //用户发送INTR字符(Ctrl+C)触发
		syscall.SIGTERM, //结束程序(可以被捕获、阻塞或忽略)
		syscall.SIGQUIT) //用户发送QUIT字符(Ctrl+/)触发
	select {
	case sig := <-c:
		fmt.Println("关闭 signal\n", sig)
	}
}
