Skip to content

Commit

Permalink
test: add drain config tests. (#17724)
Browse files Browse the repository at this point in the history
  • Loading branch information
jrasell authored Jun 26, 2023
1 parent 37df529 commit 09cc4b1
Showing 1 changed file with 137 additions and 0 deletions.
137 changes: 137 additions & 0 deletions nomad/structs/config/drain_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package config

import (
"fmt"
"testing"

"github.com/hashicorp/nomad/ci"
"github.com/hashicorp/nomad/helper/pointer"
"github.com/shoenig/test/must"
)

func TestDrainConfig_Copy(t *testing.T) {
ci.Parallel(t)

testCases := []struct {
name string
inputDrainConfig *DrainConfig
expectedOutput *DrainConfig
}{
{
name: "nil config",
inputDrainConfig: nil,
expectedOutput: nil,
},
{
name: "partial config",
inputDrainConfig: &DrainConfig{
Deadline: pointer.Of("5m"),
IgnoreSystemJobs: nil,
Force: nil,
},
expectedOutput: &DrainConfig{
Deadline: pointer.Of("5m"),
IgnoreSystemJobs: nil,
Force: nil,
},
},
{
name: "full config",
inputDrainConfig: &DrainConfig{
Deadline: pointer.Of("5m"),
IgnoreSystemJobs: pointer.Of(false),
Force: pointer.Of(true),
},
expectedOutput: &DrainConfig{
Deadline: pointer.Of("5m"),
IgnoreSystemJobs: pointer.Of(false),
Force: pointer.Of(true),
},
},
}

for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
actualOutput := tc.inputDrainConfig.Copy()
must.Eq(t, tc.expectedOutput, actualOutput)

if tc.inputDrainConfig != nil {
must.NotEq(t, fmt.Sprintf("%p", tc.inputDrainConfig), fmt.Sprintf("%p", actualOutput))
}
})
}
}

func TestDrainConfig_Merge(t *testing.T) {
ci.Parallel(t)

testCases := []struct {
name string
inputDrainConfig *DrainConfig
mergeDrainConfig *DrainConfig
expectedOutput *DrainConfig
}{
{
name: "nil",
inputDrainConfig: nil,
mergeDrainConfig: nil,
expectedOutput: nil,
},
{
name: "nil input",
inputDrainConfig: nil,
mergeDrainConfig: &DrainConfig{
Deadline: pointer.Of("5m"),
IgnoreSystemJobs: pointer.Of(false),
Force: pointer.Of(true),
},
expectedOutput: &DrainConfig{
Deadline: pointer.Of("5m"),
IgnoreSystemJobs: pointer.Of(false),
Force: pointer.Of(true),
},
},
{
name: "nil merge",
inputDrainConfig: &DrainConfig{
Deadline: pointer.Of("5m"),
IgnoreSystemJobs: pointer.Of(false),
Force: pointer.Of(true),
},
mergeDrainConfig: nil,
expectedOutput: &DrainConfig{
Deadline: pointer.Of("5m"),
IgnoreSystemJobs: pointer.Of(false),
Force: pointer.Of(true),
},
},
{
name: "partial",
inputDrainConfig: &DrainConfig{
Deadline: pointer.Of("5m"),
IgnoreSystemJobs: pointer.Of(false),
Force: nil,
},
mergeDrainConfig: &DrainConfig{
Deadline: nil,
IgnoreSystemJobs: nil,
Force: pointer.Of(true),
},
expectedOutput: &DrainConfig{
Deadline: pointer.Of("5m"),
IgnoreSystemJobs: pointer.Of(false),
Force: pointer.Of(true),
},
},
}

for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
actualOutput := tc.inputDrainConfig.Merge(tc.mergeDrainConfig)
must.Eq(t, tc.expectedOutput, actualOutput)
})
}
}

0 comments on commit 09cc4b1

Please sign in to comment.