Skip to content
File

Blob: tun/client/reload_test.go

go69 lines
1package client
2 
3import (
4 "os"
5 "syscall"
6 "testing"
7 "time"
8 
9 "go.miragespace.co/specter/spec/chord"
10 "go.miragespace.co/specter/spec/mocks"
11 "go.miragespace.co/specter/spec/protocol"
12 
13 "github.com/stretchr/testify/mock"
14 "github.com/stretchr/testify/require"
15 "github.com/zhangyunhao116/skipmap"
16 "go.uber.org/zap/zaptest"
17)
18 
19func TestReloadOnSignal(t *testing.T) {
20 as := require.New(t)
21 logger := zaptest.NewLogger(t)
22 
23 file, err := os.CreateTemp("", "client")
24 as.NoError(err)
25 defer os.Remove(file.Name())
26 
27 ctx := t.Context()
28 
29 token := &protocol.ClientToken{
30 Token: []byte("test"),
31 }
32 cl := &protocol.Node{
33 Id: chord.Random(),
34 }
35 
36 der, cert, key := makeCertificate(as, logger, cl, token, nil)
37 cfg := &Config{
38 path: file.Name(),
39 router: skipmap.NewString[route](),
40 Apex: testApex,
41 Certificate: cert,
42 PrivKey: key,
43 Tunnels: []Tunnel{
44 {
45 Target: "tcp://127.0.0.1:1234",
46 },
47 },
48 }
49 as.NoError(cfg.validate())
50 
51 reload := make(chan os.Signal, 1)
52 
53 m := func(s *mocks.TunnelService, t1 *mocks.MemoryTransport, publishCall *mock.Call) {
54 defaultNoHostnames(s)
55 transportHelper(t1, der)
56 }
57 
58 client, _, assertion := setupClient(t, as, ctx, logger, nil, cfg, reload, m, false, 2)
59 defer assertion()
60 defer client.Close()
61 
62 client.Start(ctx)
63 
64 // send reload signal
65 reload <- syscall.SIGHUP
66 
67 time.Sleep(time.Second)
68}