package threadpool import ( "log/slog" "testing" "queryorchestration/internal/serviceconfig/logger" "github.com/stretchr/testify/assert" ) func TestSetThreadPool(t *testing.T) { cfg := &ThreadPoolConfig{} l := &logger.TestLogger{ T: t, } sl := slog.New(l) cfg.StartThreadPool(sl) assert.Equal(t, 120, cfg.MonitorInterval) assert.LessOrEqual(t, 10, cfg.MaxWorkers) assert.NotNil(t, cfg.pool) } func TestStopAndWait(t *testing.T) { cfg := &ThreadPoolConfig{} l := &logger.TestLogger{ T: t, } sl := slog.New(l) cfg.MonitorInterval = 1 cfg.StartThreadPool(sl) assert.Equal(t, 1, cfg.MonitorInterval) assert.LessOrEqual(t, 10, cfg.MaxWorkers) assert.NotNil(t, cfg.pool) pool := cfg.GetThreadPool() for i := range 2 { index := i pool.Submit(func() { sl.Info("new thread", "index", index) }) } cfg.ThreadPoolStopAndWait() } func TestGetMaxWorkers(t *testing.T) { cfg := ThreadPoolConfig{} assert.Equal(t, 0, cfg.GetMaxWorkers()) cfg.MaxWorkers = 100 assert.Equal(t, 100, cfg.GetMaxWorkers()) } func TestGetMonitorInterval(t *testing.T) { cfg := ThreadPoolConfig{} assert.Equal(t, 0, cfg.GetThreadMonitorInterval()) cfg.MonitorInterval = 100 assert.Equal(t, 100, cfg.GetThreadMonitorInterval()) }