···88 "time"
99)
10101111+func init() {
1212+ // Point metadata endpoint to a closed listener so it fails instantly instead of
1313+ // waiting 2s for the real 169.254.169.254 to timeout on non-cloud machines.
1414+ metadataEndpoint = "http://127.0.0.1:1"
1515+}
1616+1117// setupEnv sets environment variables for testing and returns a cleanup function
1218func setupEnv(t *testing.T, vars map[string]string) func() {
1319 // Save original env
+4-1
pkg/hold/metadata.go
···1313 Region string
1414}
15151616+// metadataEndpoint is the cloud metadata service URL. Package-level var for test override.
1717+var metadataEndpoint = "http://169.254.169.254"
1818+1619// DetectCloudMetadata queries the instance metadata service (169.254.169.254)
1720// Currently supports UpCloud. Others can be added via PR.
1821func DetectCloudMetadata(ctx context.Context) (*CloudMetadata, error) {
···32353336// detectUpCloud queries UpCloud's metadata service
3437func detectUpCloud(ctx context.Context) (*CloudMetadata, error) {
3535- req, err := http.NewRequestWithContext(ctx, "GET", "http://169.254.169.254/metadata/v1.json", nil)
3838+ req, err := http.NewRequestWithContext(ctx, "GET", metadataEndpoint+"/metadata/v1.json", nil)
3639 if err != nil {
3740 return nil, err
3841 }