(t *testing.T)
| 233 | } |
| 234 | |
| 235 | func handleTestSubprocess(t *testing.T) { |
| 236 | // Find the specific topology. |
| 237 | var topo integration.TestTopology |
| 238 | for _, t := range topologies { |
| 239 | if t.Name == *testID { |
| 240 | topo = t |
| 241 | break |
| 242 | } |
| 243 | } |
| 244 | require.NotEmptyf(t, topo.Name, "unknown test topology %q", *testID) |
| 245 | require.Contains(t, []string{"server", "stun", "client"}, *role, "unknown role %q", *role) |
| 246 | |
| 247 | testName := topo.Name + "/" |
| 248 | switch *role { |
| 249 | case "server": |
| 250 | testName += "server" |
| 251 | case "stun": |
| 252 | testName += fmt.Sprintf("stun%d", *stunNumber) |
| 253 | case "client": |
| 254 | testName += *clientName |
| 255 | default: |
| 256 | t.Fatalf("unknown role %q", *role) |
| 257 | } |
| 258 | |
| 259 | t.Run(testName, func(t *testing.T) { |
| 260 | logger := testutil.Logger(t) |
| 261 | switch *role { |
| 262 | case "server": |
| 263 | logger = logger.Named("server") |
| 264 | topo.Server.StartServer(t, logger, *serverListenAddr) |
| 265 | // no exit |
| 266 | |
| 267 | case "stun": |
| 268 | launchSTUNServer(t, *stunListenAddr) |
| 269 | // no exit |
| 270 | |
| 271 | case "client": |
| 272 | logger = logger.Named(*clientName) |
| 273 | if *clientNumber != int(integration.ClientNumber1) && *clientNumber != int(integration.ClientNumber2) { |
| 274 | t.Fatalf("invalid client number %d", clientNumber) |
| 275 | } |
| 276 | me, peer := integration.Client1, integration.Client2 |
| 277 | if *clientNumber == int(integration.ClientNumber2) { |
| 278 | me, peer = peer, me |
| 279 | } |
| 280 | |
| 281 | serverURL, err := url.Parse(*clientServerURL) |
| 282 | require.NoErrorf(t, err, "parse server url %q", *clientServerURL) |
| 283 | |
| 284 | // Load the DERP map. |
| 285 | var derpMap tailcfg.DERPMap |
| 286 | derpMapPath := *clientDERPMapPath |
| 287 | f, err := os.Open(derpMapPath) |
| 288 | require.NoErrorf(t, err, "open DERP map %q", derpMapPath) |
| 289 | err = json.NewDecoder(f).Decode(&derpMap) |
| 290 | _ = f.Close() |
| 291 | require.NoErrorf(t, err, "decode DERP map %q", derpMapPath) |
| 292 |
no test coverage detected