mirror of
https://github.com/status-im/consul.git
synced 2025-01-10 05:45:46 +00:00
b8b37c2357
Ensure nothing in the troubleshoot go module depends on consul's top level module. This is so we can import troubleshoot into consul-k8s and not import all of consul. * turns troubleshoot into a go module [authored by @curtbushko] * gets the envoy protos into the troubleshoot module [authored by @curtbushko] * adds a new go module `envoyextensions` which has xdscommon and extensioncommon folders that both the xds package and the troubleshoot package can import * adds testing and linting for the new go modules * moves the unit tests in `troubleshoot/validateupstream` that depend on proxycfg/xds into the xds package, with a comment describing why those tests cannot be in the troubleshoot package * fixes all the imports everywhere as a result of these changes Co-authored-by: Curt Bushko <cbushko@gmail.com>
45 lines
1.4 KiB
Go
45 lines
1.4 KiB
Go
package troubleshoot
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"testing"
|
|
|
|
envoy_admin_v3 "github.com/envoyproxy/go-control-plane/envoy/admin/v3"
|
|
"github.com/hashicorp/consul/envoyextensions/xdscommon"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// A majority of unit tests for validateupstream.go are in the agent/xds/validateupstream-test package due to internal
|
|
// Consul dependencies that shouldn't be imported into the troubleshoot module. The tests that are here don't require
|
|
// internal consul packages.
|
|
|
|
func TestValidateFromJSON(t *testing.T) {
|
|
indexedResources := getConfig(t)
|
|
clusters := getClusters(t)
|
|
err := Validate(indexedResources, "backend", "", true, clusters)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
// TODO: Manually inspect the config and clusters files and hardcode the list of expected resource names for higher
|
|
// confidence in these functions.
|
|
func getConfig(t *testing.T) *xdscommon.IndexedResources {
|
|
file, err := os.Open("testdata/config.json")
|
|
require.NoError(t, err)
|
|
jsonBytes, err := io.ReadAll(file)
|
|
require.NoError(t, err)
|
|
indexedResources, err := ParseConfigDump(jsonBytes)
|
|
require.NoError(t, err)
|
|
return indexedResources
|
|
}
|
|
|
|
func getClusters(t *testing.T) *envoy_admin_v3.Clusters {
|
|
file, err := os.Open("testdata/clusters.json")
|
|
require.NoError(t, err)
|
|
jsonBytes, err := io.ReadAll(file)
|
|
require.NoError(t, err)
|
|
clusters, err := ParseClusters(jsonBytes)
|
|
require.NoError(t, err)
|
|
return clusters
|
|
}
|