|
1 | 1 | package tests
|
2 | 2 |
|
3 | 3 | import (
|
4 |
| - "context" |
5 |
| - "io" |
6 |
| - "log/slog" |
7 |
| - "net/http" |
8 |
| - "os" |
9 |
| - "os/signal" |
10 |
| - "sync" |
11 |
| - "syscall" |
12 |
| - "testing" |
13 |
| - "time" |
14 |
| - |
15 |
| - "github.com/roadrunner-server/config/v5" |
16 |
| - "github.com/roadrunner-server/endure/v2" |
17 |
| - "github.com/roadrunner-server/logger/v5" |
18 |
| - "github.com/roadrunner-server/server/v5" |
19 |
| - "github.com/roadrunner-server/status/v5" |
20 |
| - "github.com/stretchr/testify/require" |
21 |
| - rrtemporal "github.com/temporalio/roadrunner-temporal/v5" |
22 |
| - |
23 |
| - "github.com/stretchr/testify/assert" |
| 4 | + "context" |
| 5 | + "io" |
| 6 | + "log/slog" |
| 7 | + "net/http" |
| 8 | + "os" |
| 9 | + "os/signal" |
| 10 | + "sync" |
| 11 | + "syscall" |
| 12 | + "testing" |
| 13 | + "time" |
| 14 | + |
| 15 | + "github.com/roadrunner-server/config/v5" |
| 16 | + "github.com/roadrunner-server/endure/v2" |
| 17 | + "github.com/roadrunner-server/logger/v5" |
| 18 | + "github.com/roadrunner-server/server/v5" |
| 19 | + "github.com/roadrunner-server/status/v5" |
| 20 | + "github.com/stretchr/testify/require" |
| 21 | + rrtemporal "github.com/temporalio/roadrunner-temporal/v5" |
| 22 | + |
| 23 | + "github.com/stretchr/testify/assert" |
24 | 24 | )
|
25 | 25 |
|
26 | 26 | func TestTemporalCheckStatus(t *testing.T) {
|
27 |
| - cont := endure.New(slog.LevelDebug) |
28 |
| - |
29 |
| - cfg := &config.Plugin{ |
30 |
| - Version: "2023.3.0", |
31 |
| - Path: "../configs/.rr-status.yaml", |
32 |
| - } |
33 |
| - |
34 |
| - err := cont.RegisterAll( |
35 |
| - cfg, |
36 |
| - &status.Plugin{}, |
37 |
| - &logger.Plugin{}, |
38 |
| - &rrtemporal.Plugin{}, |
39 |
| - &server.Plugin{}, |
40 |
| - ) |
41 |
| - assert.NoError(t, err) |
42 |
| - |
43 |
| - err = cont.Init() |
44 |
| - if err != nil { |
45 |
| - t.Fatal(err) |
46 |
| - } |
47 |
| - |
48 |
| - ch, err := cont.Serve() |
49 |
| - assert.NoError(t, err) |
50 |
| - |
51 |
| - sig := make(chan os.Signal, 1) |
52 |
| - signal.Notify(sig, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) |
53 |
| - |
54 |
| - wg := &sync.WaitGroup{} |
55 |
| - wg.Add(1) |
56 |
| - |
57 |
| - stopCh := make(chan struct{}, 1) |
58 |
| - |
59 |
| - go func() { |
60 |
| - defer wg.Done() |
61 |
| - for { |
62 |
| - select { |
63 |
| - case e := <-ch: |
64 |
| - assert.Fail(t, "error", e.Error.Error()) |
65 |
| - err = cont.Stop() |
66 |
| - if err != nil { |
67 |
| - assert.FailNow(t, "error", err.Error()) |
68 |
| - } |
69 |
| - case <-sig: |
70 |
| - err = cont.Stop() |
71 |
| - if err != nil { |
72 |
| - assert.FailNow(t, "error", err.Error()) |
73 |
| - } |
74 |
| - return |
75 |
| - case <-stopCh: |
76 |
| - err = cont.Stop() |
77 |
| - if err != nil { |
78 |
| - assert.FailNow(t, "error", err.Error()) |
79 |
| - } |
80 |
| - return |
81 |
| - } |
82 |
| - } |
83 |
| - }() |
84 |
| - |
85 |
| - time.Sleep(time.Second) |
86 |
| - |
87 |
| - client := &http.Client{ |
88 |
| - Timeout: time.Second * 10, |
89 |
| - } |
90 |
| - req, err := http.NewRequestWithContext(context.Background(), http.MethodGet, "http://127.0.0.1:35544/health?plugin=temporal", nil) |
91 |
| - require.NoError(t, err) |
92 |
| - |
93 |
| - resp, err := client.Do(req) |
94 |
| - require.NoError(t, err) |
95 |
| - require.NotNil(t, resp) |
96 |
| - |
97 |
| - body, _ := io.ReadAll(resp.Body) |
98 |
| - assert.Equal(t, "[{\"plugin_name\":\"temporal\",\"error_message\":\"\",\"status_code\":200}]", string(body)) |
99 |
| - assert.Equal(t, http.StatusOK, resp.StatusCode) |
100 |
| - _ = resp.Body.Close() |
101 |
| - |
102 |
| - req, err = http.NewRequestWithContext(context.Background(), http.MethodGet, "http://127.0.0.1:35544/ready?plugin=temporal", nil) |
103 |
| - require.NoError(t, err) |
104 |
| - |
105 |
| - resp, err = client.Do(req) |
106 |
| - require.NoError(t, err) |
107 |
| - require.NotNil(t, resp) |
108 |
| - |
109 |
| - body, _ = io.ReadAll(resp.Body) |
110 |
| - assert.Equal(t, "[{\"plugin_name\":\"temporal\",\"error_message\":\"\",\"status_code\":200}]", string(body)) |
111 |
| - assert.Equal(t, http.StatusOK, resp.StatusCode) |
112 |
| - _ = resp.Body.Close() |
113 |
| - |
114 |
| - stopCh <- struct{}{} |
115 |
| - |
116 |
| - wg.Wait() |
| 27 | + cont := endure.New(slog.LevelDebug) |
| 28 | + |
| 29 | + cfg := &config.Plugin{ |
| 30 | + Version: "2023.3.0", |
| 31 | + Path: "../configs/.rr-status.yaml", |
| 32 | + } |
| 33 | + |
| 34 | + err := cont.RegisterAll( |
| 35 | + cfg, |
| 36 | + &status.Plugin{}, |
| 37 | + &logger.Plugin{}, |
| 38 | + &rrtemporal.Plugin{}, |
| 39 | + &server.Plugin{}, |
| 40 | + ) |
| 41 | + assert.NoError(t, err) |
| 42 | + |
| 43 | + err = cont.Init() |
| 44 | + if err != nil { |
| 45 | + t.Fatal(err) |
| 46 | + } |
| 47 | + |
| 48 | + ch, err := cont.Serve() |
| 49 | + assert.NoError(t, err) |
| 50 | + |
| 51 | + sig := make(chan os.Signal, 1) |
| 52 | + signal.Notify(sig, os.Interrupt, syscall.SIGINT, syscall.SIGTERM) |
| 53 | + |
| 54 | + wg := &sync.WaitGroup{} |
| 55 | + wg.Add(1) |
| 56 | + |
| 57 | + stopCh := make(chan struct{}, 1) |
| 58 | + |
| 59 | + go func() { |
| 60 | + defer wg.Done() |
| 61 | + for { |
| 62 | + select { |
| 63 | + case e := <-ch: |
| 64 | + assert.Fail(t, "error", e.Error.Error()) |
| 65 | + err = cont.Stop() |
| 66 | + if err != nil { |
| 67 | + assert.FailNow(t, "error", err.Error()) |
| 68 | + } |
| 69 | + case <-sig: |
| 70 | + err = cont.Stop() |
| 71 | + if err != nil { |
| 72 | + assert.FailNow(t, "error", err.Error()) |
| 73 | + } |
| 74 | + return |
| 75 | + case <-stopCh: |
| 76 | + err = cont.Stop() |
| 77 | + if err != nil { |
| 78 | + assert.FailNow(t, "error", err.Error()) |
| 79 | + } |
| 80 | + return |
| 81 | + } |
| 82 | + } |
| 83 | + }() |
| 84 | + |
| 85 | + time.Sleep(time.Second) |
| 86 | + |
| 87 | + client := &http.Client{ |
| 88 | + Timeout: time.Second * 10, |
| 89 | + } |
| 90 | + req, err := http.NewRequestWithContext(context.Background(), http.MethodGet, "http://127.0.0.1:35544/health?plugin=temporal", nil) |
| 91 | + require.NoError(t, err) |
| 92 | + |
| 93 | + resp, err := client.Do(req) |
| 94 | + require.NoError(t, err) |
| 95 | + require.NotNil(t, resp) |
| 96 | + |
| 97 | + body, _ := io.ReadAll(resp.Body) |
| 98 | + assert.Equal(t, "[{\"plugin_name\":\"temporal\",\"error_message\":\"\",\"status_code\":200}]", string(body)) |
| 99 | + assert.Equal(t, http.StatusOK, resp.StatusCode) |
| 100 | + _ = resp.Body.Close() |
| 101 | + |
| 102 | + req, err = http.NewRequestWithContext(context.Background(), http.MethodGet, "http://127.0.0.1:35544/ready?plugin=temporal", nil) |
| 103 | + require.NoError(t, err) |
| 104 | + |
| 105 | + resp, err = client.Do(req) |
| 106 | + require.NoError(t, err) |
| 107 | + require.NotNil(t, resp) |
| 108 | + |
| 109 | + body, _ = io.ReadAll(resp.Body) |
| 110 | + assert.Equal(t, "[{\"plugin_name\":\"temporal\",\"error_message\":\"\",\"status_code\":200}]", string(body)) |
| 111 | + assert.Equal(t, http.StatusOK, resp.StatusCode) |
| 112 | + _ = resp.Body.Close() |
| 113 | + |
| 114 | + stopCh <- struct{}{} |
| 115 | + |
| 116 | + wg.Wait() |
117 | 117 | }
|
0 commit comments