Files
tidb/pkg/dxf/framework/proto/task_test.go

91 lines
2.7 KiB
Go

// Copyright 2023 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package proto
import (
"testing"
"time"
"github.com/stretchr/testify/require"
)
func TestTaskStep(t *testing.T) {
// make sure we don't change the value of StepInit accidentally
require.Equal(t, int64(-1), int64(StepInit))
require.Equal(t, int64(-2), int64(StepDone))
}
func TestTaskIsDone(t *testing.T) {
cases := []struct {
state TaskState
done bool
}{
{TaskStatePending, false},
{TaskStateRunning, false},
{TaskStateSucceed, true},
{TaskStateReverting, false},
{TaskStateFailed, true},
{TaskStateCancelling, false},
{TaskStatePausing, false},
{TaskStatePaused, false},
{TaskStateReverted, true},
}
for _, c := range cases {
require.Equal(t, c.done, (&Task{TaskBase: TaskBase{State: c.state}}).IsDone())
}
}
func TestTaskCompare(t *testing.T) {
taskA := Task{TaskBase: TaskBase{
ID: 100,
Priority: NormalPriority,
CreateTime: time.Date(2023, time.December, 5, 15, 53, 30, 0, time.UTC),
}}
taskB := taskA
require.Equal(t, 0, taskA.CompareTask(&taskB))
taskB.Priority = 100
require.Greater(t, taskA.CompareTask(&taskB), 0)
taskB.Priority = taskA.Priority + 100
require.Less(t, taskA.CompareTask(&taskB), 0)
taskB.Priority = taskA.Priority
taskB.CreateTime = time.Date(2023, time.December, 5, 15, 53, 10, 0, time.UTC)
require.Greater(t, taskA.CompareTask(&taskB), 0)
taskB.CreateTime = time.Date(2023, time.December, 5, 15, 53, 40, 0, time.UTC)
require.Less(t, taskA.CompareTask(&taskB), 0)
taskB.CreateTime = taskA.CreateTime
taskB.ID = taskA.ID - 10
require.Greater(t, taskA.CompareTask(&taskB), 0)
taskB.ID = taskA.ID + 10
require.Less(t, taskA.CompareTask(&taskB), 0)
}
func TestTaskBaseGetRuntimeSlots(t *testing.T) {
task := TaskBase{RequiredSlots: 4, Step: StepOne}
require.Equal(t, 4, task.GetRuntimeSlots())
task.ExtraParams.MaxRuntimeSlots = 2
for _, step := range []Step{StepOne, StepTwo} {
task.Step = step
require.Equal(t, 2, task.GetRuntimeSlots())
}
task.ExtraParams.TargetSteps = []Step{StepOne}
task.Step = StepOne
require.Equal(t, 2, task.GetRuntimeSlots())
task.Step = StepTwo
require.Equal(t, 4, task.GetRuntimeSlots())
}