summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbricelalu <[email protected]>2021-04-03 22:28:30 +0200
committerbricelalu <[email protected]>2021-04-03 22:28:30 +0200
commit22797c86a9c346037adc349a89d51ecdb22e5550 (patch)
tree84fab02d36a634c612e0b62c07d64578dcb35cda
parent0744265c45840ff7f3f5802f0f5d9073939e707c (diff)
Update test for Logger 'raw' mode
-rw-r--r--tests/plugins/logger/configs/.rr-raw-mode.yaml13
-rw-r--r--tests/plugins/logger/logger_test.go66
-rw-r--r--tests/raw-error.php30
3 files changed, 79 insertions, 30 deletions
diff --git a/tests/plugins/logger/configs/.rr-raw-mode.yaml b/tests/plugins/logger/configs/.rr-raw-mode.yaml
index 77bd2f59..0e62ab95 100644
--- a/tests/plugins/logger/configs/.rr-raw-mode.yaml
+++ b/tests/plugins/logger/configs/.rr-raw-mode.yaml
@@ -1,2 +1,15 @@
+server:
+ command: "php ../../raw-error.php"
+ relay: "pipes"
+
+http:
+ address: 127.0.0.1:34999
+ maxRequestSize: 1024
+ pool:
+ numWorkers: 1
+ maxJobs: 0
+ allocateTimeout: 10s
+ destroyTimeout: 10s
+
logs:
mode: raw \ No newline at end of file
diff --git a/tests/plugins/logger/logger_test.go b/tests/plugins/logger/logger_test.go
index a1bc0f4d..f212cc8a 100644
--- a/tests/plugins/logger/logger_test.go
+++ b/tests/plugins/logger/logger_test.go
@@ -4,6 +4,7 @@ import (
"os"
"os/signal"
"sync"
+ "syscall"
"testing"
"github.com/kami-zh/go-capturer"
@@ -76,57 +77,62 @@ func TestLogger(t *testing.T) {
wg.Wait()
}
-func TestLoggerRawMode(t *testing.T) {
+func TestLoggerRawErr(t *testing.T) {
out := capturer.CaptureOutput(func() {
- container, err := endure.NewContainer(nil, endure.RetryOnFail(true), endure.SetLogLevel(endure.ErrorLevel))
- if err != nil {
- t.Fatal(err)
- }
+ cont, err := endure.NewContainer(nil, endure.SetLogLevel(endure.ErrorLevel))
+ assert.NoError(t, err)
+
// config plugin
- vp := &config.Viper{}
- vp.Path = "configs/.rr-raw-mode.yaml"
- vp.Prefix = "rr"
+ cfg := &config.Viper{}
+ cfg.Path = "configs/.rr-raw-mode.yaml"
+ cfg.Prefix = "rr"
- err = container.RegisterAll(
- vp,
- &Plugin{},
+ err = cont.RegisterAll(
+ cfg,
&logger.ZapLogger{},
+ &server.Plugin{},
+ &http.Plugin{},
)
assert.NoError(t, err)
- err = container.Init()
- if err != nil {
- t.Fatal(err)
- }
-
- errCh, err := container.Serve()
+ err = cont.Init()
if err != nil {
t.Fatal(err)
}
- // stop by CTRL+C
- c := make(chan os.Signal, 1)
- signal.Notify(c, os.Interrupt)
+ ch, err := cont.Serve()
+ assert.NoError(t, err)
- stopCh := make(chan struct{}, 1)
+ sig := make(chan os.Signal, 1)
+ signal.Notify(sig, os.Interrupt, syscall.SIGINT, syscall.SIGTERM)
wg := &sync.WaitGroup{}
wg.Add(1)
+ stopCh := make(chan struct{}, 1)
+
go func() {
defer wg.Done()
for {
select {
- case e := <-errCh:
- assert.NoError(t, e.Error)
- assert.NoError(t, container.Stop())
- return
- case <-c:
- err = container.Stop()
- assert.NoError(t, err)
+ case e := <-ch:
+ assert.Fail(t, "error", e.Error.Error())
+ err = cont.Stop()
+ if err != nil {
+ assert.FailNow(t, "error", err.Error())
+ }
+ case <-sig:
+ err = cont.Stop()
+ if err != nil {
+ assert.FailNow(t, "error", err.Error())
+ }
return
case <-stopCh:
- assert.NoError(t, container.Stop())
+ // timeout
+ err = cont.Stop()
+ if err != nil {
+ assert.FailNow(t, "error", err.Error())
+ }
return
}
}
@@ -136,7 +142,7 @@ func TestLoggerRawMode(t *testing.T) {
wg.Wait()
})
- assert.Contains(t, out, `{"field": "value"}`)
+ assert.Contains(t, out, "\n{\"field\": \"value\"}\n")
}
func TestLoggerNoConfig(t *testing.T) {
diff --git a/tests/raw-error.php b/tests/raw-error.php
new file mode 100644
index 00000000..e8ca328b
--- /dev/null
+++ b/tests/raw-error.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * @var Goridge\RelayInterface $relay
+ */
+use Spiral\Goridge;
+use Spiral\RoadRunner;
+
+ini_set('display_errors', 'stderr');
+require __DIR__ . "/vendor/autoload.php";
+
+$worker = new RoadRunner\Worker(new Goridge\StreamRelay(STDIN, STDOUT));
+$psr7 = new RoadRunner\Http\PSR7Worker(
+ $worker,
+ new \Nyholm\Psr7\Factory\Psr17Factory(),
+ new \Nyholm\Psr7\Factory\Psr17Factory(),
+ new \Nyholm\Psr7\Factory\Psr17Factory()
+);
+
+error_log('{"field": "value"}');
+
+while ($req = $psr7->waitRequest()) {
+ try {
+ $resp = new \Nyholm\Psr7\Response();
+ $resp->getBody()->write("hello world");
+
+ $psr7->respond($resp);
+ } catch (\Throwable $e) {
+ $psr7->getWorker()->error((string)$e);
+ }
+} \ No newline at end of file