blob: d48e10d68daa512fcea54981e71c353c1b5ac9e6 [file] [log] [blame]
// Copyright 2023 CeresDB Project Authors. Licensed under Apache-2.0.
package manager_test
import (
"context"
"testing"
"github.com/CeresDB/ceresmeta/server/coordinator"
"github.com/CeresDB/ceresmeta/server/coordinator/procedure"
"github.com/CeresDB/ceresmeta/server/coordinator/procedure/test"
"github.com/CeresDB/ceresmeta/server/coordinator/scheduler/manager"
"github.com/CeresDB/ceresmeta/server/etcdutil"
"github.com/CeresDB/ceresmeta/server/storage"
"github.com/stretchr/testify/require"
"go.uber.org/zap"
)
func TestSchedulerManager(t *testing.T) {
ctx := context.Background()
re := require.New(t)
// Init dependencies for scheduler manager.
c := test.InitStableCluster(ctx, t)
procedureManager, err := procedure.NewManagerImpl(zap.NewNop(), c.GetMetadata())
re.NoError(err)
dispatch := test.MockDispatch{}
allocator := test.MockIDAllocator{}
s := test.NewTestStorage(t)
f := coordinator.NewFactory(zap.NewNop(), allocator, dispatch, s)
_, client, _ := etcdutil.PrepareEtcdServerAndClient(t)
// Create scheduler manager with enableScheduler equal to false.
schedulerManager := manager.NewManager(zap.NewNop(), procedureManager, f, c.GetMetadata(), client, "/rootPath", false, storage.TopologyTypeStatic, 1)
err = schedulerManager.Start(ctx)
re.NoError(err)
err = schedulerManager.Stop(ctx)
re.NoError(err)
// Create scheduler manager with static topology.
schedulerManager = manager.NewManager(zap.NewNop(), procedureManager, f, c.GetMetadata(), client, "/rootPath", true, storage.TopologyTypeStatic, 1)
err = schedulerManager.Start(ctx)
re.NoError(err)
schedulers := schedulerManager.ListScheduler()
re.Equal(2, len(schedulers))
err = schedulerManager.Stop(ctx)
re.NoError(err)
// Create scheduler manager with dynamic topology.
schedulerManager = manager.NewManager(zap.NewNop(), procedureManager, f, c.GetMetadata(), client, "/rootPath", true, storage.TopologyTypeDynamic, 1)
err = schedulerManager.Start(ctx)
re.NoError(err)
schedulers = schedulerManager.ListScheduler()
re.Equal(2, len(schedulers))
err = schedulerManager.Stop(ctx)
re.NoError(err)
}