metropolis/*: confine etcd output in tests
The etcd test cluster logic produces some very chatty logs that end up
in stdout.
This confines the etcd logs themselves, as well as gRPC logs that the
test logic also always enables by default.
Change-Id: I1070f14b20e870865b510ae24015402c0469ceff
Reviewed-on: https://review.monogon.dev/c/monogon/+/1487
Reviewed-by: Leopold Schabel <leo@monogon.tech>
Tested-by: Jenkins CI
diff --git a/metropolis/pkg/event/etcd/BUILD.bazel b/metropolis/pkg/event/etcd/BUILD.bazel
index 51ad5c1..37df147 100644
--- a/metropolis/pkg/event/etcd/BUILD.bazel
+++ b/metropolis/pkg/event/etcd/BUILD.bazel
@@ -20,10 +20,13 @@
deps = [
"//metropolis/node/core/consensus/client",
"//metropolis/pkg/event",
+ "//metropolis/pkg/logtree",
"@io_etcd_go_etcd_api_v3//v3rpc/rpctypes",
"@io_etcd_go_etcd_client_pkg_v3//testutil",
"@io_etcd_go_etcd_client_v3//:client",
"@io_etcd_go_etcd_tests_v3//integration",
"@org_golang_google_grpc//codes",
+ "@org_golang_google_grpc//grpclog",
+ "@org_uber_go_zap//:zap",
],
)
diff --git a/metropolis/pkg/event/etcd/etcd_test.go b/metropolis/pkg/event/etcd/etcd_test.go
index 81aee51..e7e1227 100644
--- a/metropolis/pkg/event/etcd/etcd_test.go
+++ b/metropolis/pkg/event/etcd/etcd_test.go
@@ -16,10 +16,13 @@
"go.etcd.io/etcd/client/pkg/v3/testutil"
clientv3 "go.etcd.io/etcd/client/v3"
"go.etcd.io/etcd/tests/v3/integration"
+ "go.uber.org/zap"
"google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
"source.monogon.dev/metropolis/node/core/consensus/client"
"source.monogon.dev/metropolis/pkg/event"
+ "source.monogon.dev/metropolis/pkg/logtree"
)
var (
@@ -29,14 +32,22 @@
// TestMain brings up a 3 node etcd cluster for tests to use.
func TestMain(m *testing.M) {
+ // This logtree's data is not output anywhere.
+ lt := logtree.New()
+
cfg := integration.ClusterConfig{
Size: 3,
GRPCKeepAliveMinTime: time.Millisecond,
+ LoggerBuilder: func(memberName string) *zap.Logger {
+ dn := logtree.DN("etcd." + memberName)
+ return logtree.Zapify(lt.MustLeveledFor(dn), zap.WarnLevel)
+ },
}
tb, cancel := testutil.NewTestingTBProthesis("curator")
defer cancel()
flag.Parse()
integration.BeforeTestExternal(tb)
+ grpclog.SetLoggerV2(logtree.GRPCify(lt.MustLeveledFor("grpc")))
cluster = integration.NewClusterV3(tb, &cfg)
endpoints = make([]string, 3)
for i := range endpoints {
diff --git a/metropolis/pkg/pki/BUILD.bazel b/metropolis/pkg/pki/BUILD.bazel
index ec3babe..97e7fb1 100644
--- a/metropolis/pkg/pki/BUILD.bazel
+++ b/metropolis/pkg/pki/BUILD.bazel
@@ -28,7 +28,9 @@
embed = [":pki"],
deps = [
"//metropolis/node/core/consensus/client",
+ "//metropolis/pkg/logtree",
"@io_etcd_go_etcd_client_pkg_v3//testutil",
"@io_etcd_go_etcd_tests_v3//integration",
+ "@org_uber_go_zap//:zap",
],
)
diff --git a/metropolis/pkg/pki/certificate_test.go b/metropolis/pkg/pki/certificate_test.go
index d38b559..19baf94 100644
--- a/metropolis/pkg/pki/certificate_test.go
+++ b/metropolis/pkg/pki/certificate_test.go
@@ -10,15 +10,24 @@
"go.etcd.io/etcd/client/pkg/v3/testutil"
"go.etcd.io/etcd/tests/v3/integration"
+ "go.uber.org/zap"
+
+ "source.monogon.dev/metropolis/pkg/logtree"
)
// TestManaged ensures Managed Certificates work, including re-ensuring
// certificates with the same data and issuing subordinate certificates.
func TestManaged(t *testing.T) {
+ lt := logtree.New()
+ logtree.PipeAllToTest(t, lt)
tb, cancel := testutil.NewTestingTBProthesis("pki-managed")
defer cancel()
cluster := integration.NewClusterV3(tb, &integration.ClusterConfig{
Size: 1,
+ LoggerBuilder: func(memberName string) *zap.Logger {
+ dn := logtree.DN("etcd." + memberName)
+ return logtree.Zapify(lt.MustLeveledFor(dn), zap.WarnLevel)
+ },
})
cl := cluster.Client(0)
defer cluster.Terminate(tb)
@@ -103,10 +112,16 @@
// re-Ensuring certificates with the same public key, and attempting to re-issue
// the same certificate with a different public key (which should fail).
func TestExternal(t *testing.T) {
+ lt := logtree.New()
+ logtree.PipeAllToTest(t, lt)
tb, cancel := testutil.NewTestingTBProthesis("pki-managed")
defer cancel()
cluster := integration.NewClusterV3(tb, &integration.ClusterConfig{
Size: 1,
+ LoggerBuilder: func(memberName string) *zap.Logger {
+ dn := logtree.DN("etcd." + memberName)
+ return logtree.Zapify(lt.MustLeveledFor(dn), zap.WarnLevel)
+ },
})
cl := cluster.Client(0)
defer cluster.Terminate(tb)