| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved.
- // Use of this source code is governed by a BSD-style
- // license that can be found in the LICENSE file.
- package ipnserver_test
- import (
- "context"
- "fmt"
- "path/filepath"
- "strings"
- "testing"
- "tailscale.com/ipn"
- "tailscale.com/ipn/ipnserver"
- "tailscale.com/net/tsdial"
- "tailscale.com/safesocket"
- "tailscale.com/wgengine"
- )
- func TestRunMultipleAccepts(t *testing.T) {
- t.Skipf("TODO(bradfitz): finish this test, once other fires are out")
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
- td := t.TempDir()
- socketPath := filepath.Join(td, "tailscale.sock")
- logf := func(format string, args ...interface{}) {
- format = strings.TrimRight(format, "\n")
- println(fmt.Sprintf(format, args...))
- t.Logf(format, args...)
- }
- s := safesocket.DefaultConnectionStrategy(socketPath)
- connect := func() {
- for i := 1; i <= 2; i++ {
- logf("connect %d ...", i)
- c, err := safesocket.Connect(s)
- if err != nil {
- t.Fatalf("safesocket.Connect: %v\n", err)
- }
- clientToServer := func(b []byte) {
- ipn.WriteMsg(c, b)
- }
- bc := ipn.NewBackendClient(logf, clientToServer)
- prefs := ipn.NewPrefs()
- bc.SetPrefs(prefs)
- c.Close()
- }
- }
- logTriggerTestf := func(format string, args ...interface{}) {
- logf(format, args...)
- if strings.HasPrefix(format, "Listening on ") {
- connect()
- }
- }
- eng, err := wgengine.NewFakeUserspaceEngine(logf, 0)
- if err != nil {
- t.Fatal(err)
- }
- t.Cleanup(eng.Close)
- opts := ipnserver.Options{}
- t.Logf("pre-Run")
- store := new(ipn.MemoryStore)
- ln, _, err := safesocket.Listen(socketPath, 0)
- if err != nil {
- t.Fatal(err)
- }
- defer ln.Close()
- err = ipnserver.Run(ctx, logTriggerTestf, ln, store, nil /* mon */, new(tsdial.Dialer), "dummy_logid", ipnserver.FixedEngine(eng), opts)
- t.Logf("ipnserver.Run = %v", err)
- }
|