open-nomad/nomad/structs/alloc_test.go

146 lines
2.8 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package structs
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestAllocServiceRegistrationsRequest_StaleReadSupport(t *testing.T) {
req := &AllocServiceRegistrationsRequest{}
require.True(t, req.IsRead())
}
func Test_Allocation_ServiceProviderNamespace(t *testing.T) {
testCases := []struct {
inputAllocation *Allocation
expectedOutput string
name string
}{
{
inputAllocation: &Allocation{
Job: &Job{
TaskGroups: []*TaskGroup{
{
Name: "test-group",
Services: []*Service{
{
Provider: ServiceProviderConsul,
},
},
},
},
},
TaskGroup: "test-group",
},
expectedOutput: "",
name: "consul task group service",
},
{
inputAllocation: &Allocation{
Job: &Job{
TaskGroups: []*TaskGroup{
{
Name: "test-group",
Tasks: []*Task{
{
Services: []*Service{
{
Provider: ServiceProviderConsul,
},
},
},
},
},
},
},
TaskGroup: "test-group",
},
expectedOutput: "",
name: "consul task service",
},
{
inputAllocation: &Allocation{
Job: &Job{
Namespace: "platform",
TaskGroups: []*TaskGroup{
{
Name: "test-group",
Services: []*Service{
{
Provider: ServiceProviderNomad,
},
},
},
},
},
TaskGroup: "test-group",
},
expectedOutput: "platform",
name: "nomad task group service",
},
{
inputAllocation: &Allocation{
Job: &Job{
Namespace: "platform",
TaskGroups: []*TaskGroup{
{
Name: "test-group",
Tasks: []*Task{
{
Services: []*Service{
{
Provider: ServiceProviderNomad,
},
},
},
},
},
},
},
TaskGroup: "test-group",
},
expectedOutput: "platform",
name: "nomad task service",
},
{
inputAllocation: &Allocation{
Job: &Job{
Namespace: "platform",
TaskGroups: []*TaskGroup{
{
Name: "test-group",
Tasks: []*Task{
{
Name: "task1",
},
{
Name: "task2",
Services: []*Service{
{
Provider: ServiceProviderNomad,
},
},
},
},
},
},
},
TaskGroup: "test-group",
},
expectedOutput: "platform",
name: "multiple tasks with service not in first",
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
actualOutput := tc.inputAllocation.ServiceProviderNamespace()
require.Equal(t, tc.expectedOutput, actualOutput)
})
}
}