Files
netbird/e2e/agentnetwork/main_test.go
Brad Ison 2ecb48ff6f feat(agentnetwork): adopt the settings bootstrap contract in the client and e2e
The REST client gains CreateSettings for the explicit bootstrap POST and
drops the bootstrap-cluster plumbing from provider create and settings
update. The e2e suite bootstraps the shared account's endpoint once in
TestMain instead of riding on the first provider create in each test,
and the settings contract tests cover both endpoint shapes: a labeled
bootstrap beneath a proxy address and a self-addressed (dedicated)
claim, including conflict-on-second-bootstrap and identity immutability
across updates.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-06 18:12:35 +02:00

57 lines
1.6 KiB
Go

//go:build e2e
// Package agentnetwork holds the container-based agent-network e2e suite. A
// single combined server is built and bootstrapped once per package run
// (TestMain) and shared across tests via srv; each test creates and cleans up
// its own resources so order doesn't matter.
package agentnetwork
import (
"context"
"fmt"
"os"
"testing"
"time"
"github.com/netbirdio/netbird/e2e/harness"
"github.com/netbirdio/netbird/shared/management/http/api"
)
// srv is the shared combined server for the package, ready (PAT-authenticated)
// by the time any Test runs.
var srv *harness.Combined
func TestMain(m *testing.M) {
os.Exit(run(m))
}
func run(m *testing.M) int {
// Generous timeout to cover a cold image build on first run.
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Minute)
defer cancel()
var err error
srv, err = harness.StartCombined(ctx)
if err != nil {
fmt.Fprintf(os.Stderr, "e2e: start combined server: %v\n", err)
return 1
}
defer func() { _ = srv.Terminate(context.Background()) }()
if _, err := srv.Bootstrap(ctx); err != nil {
fmt.Fprintf(os.Stderr, "e2e: bootstrap admin PAT: %v\n", err)
return 1
}
// Bootstrap the account's agent-network endpoint once for the package:
// providers no longer have settings side effects, and every data-plane
// test expects the shared account pinned to the combined proxy cluster.
cluster := harness.AgentNetworkCluster
if _, err := srv.CreateSettings(ctx, api.AgentNetworkSettingsCreateRequest{ProxyAddress: &cluster}); err != nil {
fmt.Fprintf(os.Stderr, "e2e: bootstrap agent-network endpoint: %v\n", err)
return 1
}
return m.Run()
}