91 lines
2.7 KiB
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())
|
|
}
|