mirror of https://github.com/hashicorp/consul
55 lines
1.7 KiB
Go
55 lines
1.7 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package catalogtest
|
|
|
|
import (
|
|
"testing"
|
|
|
|
svctest "github.com/hashicorp/consul/agent/grpc-external/services/resource/testing"
|
|
"github.com/hashicorp/consul/internal/catalog"
|
|
"github.com/hashicorp/consul/internal/catalog/internal/controllers"
|
|
"github.com/hashicorp/consul/internal/controller"
|
|
"github.com/hashicorp/consul/internal/resource/reaper"
|
|
rtest "github.com/hashicorp/consul/internal/resource/resourcetest"
|
|
"github.com/hashicorp/consul/proto-public/pbresource"
|
|
"github.com/hashicorp/consul/sdk/testutil"
|
|
)
|
|
|
|
var (
|
|
clientOpts = rtest.ConfigureTestCLIFlags()
|
|
)
|
|
|
|
func runInMemResourceServiceAndControllers(t *testing.T, deps controllers.Dependencies) pbresource.ResourceServiceClient {
|
|
t.Helper()
|
|
|
|
ctx := testutil.TestContext(t)
|
|
|
|
// Create the in-mem resource service
|
|
client := svctest.NewResourceServiceBuilder().
|
|
WithRegisterFns(catalog.RegisterTypes).
|
|
Run(t)
|
|
|
|
// Setup/Run the controller manager
|
|
mgr := controller.NewManager(client, testutil.Logger(t))
|
|
catalog.RegisterControllers(mgr, deps)
|
|
|
|
// We also depend on the reaper to take care of cleaning up owned health statuses and
|
|
// service endpoints so we must enable that controller as well
|
|
reaper.RegisterControllers(mgr)
|
|
mgr.SetRaftLeader(true)
|
|
go mgr.Run(ctx)
|
|
|
|
return client
|
|
}
|
|
|
|
func TestControllers_Integration(t *testing.T) {
|
|
client := runInMemResourceServiceAndControllers(t, catalog.DefaultControllerDependencies())
|
|
RunCatalogV2Beta1IntegrationTest(t, client, clientOpts.ClientOptions(t)...)
|
|
}
|
|
|
|
func TestControllers_Lifecycle(t *testing.T) {
|
|
client := runInMemResourceServiceAndControllers(t, catalog.DefaultControllerDependencies())
|
|
RunCatalogV2Beta1LifecycleIntegrationTest(t, client, clientOpts.ClientOptions(t)...)
|
|
}
|