mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-04 00:44:27 +00:00
9d174d5927
* new web release * site data update, add /logs to logs endpoints * tests fixed * test * gaz Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
97 lines
2.2 KiB
Go
97 lines
2.2 KiB
Go
package logutil
|
|
|
|
import (
|
|
"bufio"
|
|
"bytes"
|
|
"io"
|
|
"io/ioutil"
|
|
"net"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/prysmaticlabs/prysm/shared/testutil/require"
|
|
)
|
|
|
|
type fakeAddr int
|
|
|
|
var (
|
|
localAddr = fakeAddr(1)
|
|
remoteAddr = fakeAddr(2)
|
|
)
|
|
|
|
func (a fakeAddr) Network() string {
|
|
return "net"
|
|
}
|
|
|
|
func (a fakeAddr) String() string {
|
|
return "str"
|
|
}
|
|
|
|
type fakeNetConn struct {
|
|
io.Reader
|
|
io.Writer
|
|
}
|
|
|
|
func (c fakeNetConn) Close() error { return nil }
|
|
func (c fakeNetConn) LocalAddr() net.Addr { return localAddr }
|
|
func (c fakeNetConn) RemoteAddr() net.Addr { return remoteAddr }
|
|
func (c fakeNetConn) SetDeadline(_ time.Time) error { return nil }
|
|
func (c fakeNetConn) SetReadDeadline(_ time.Time) error { return nil }
|
|
func (c fakeNetConn) SetWriteDeadline(_ time.Time) error { return nil }
|
|
|
|
type testResponseWriter struct {
|
|
brw *bufio.ReadWriter
|
|
http.ResponseWriter
|
|
}
|
|
|
|
func (resp *testResponseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {
|
|
rw := bufio.NewReadWriter(bufio.NewReader(strings.NewReader("")), bufio.NewWriter(&bytes.Buffer{}))
|
|
return fakeNetConn{strings.NewReader(""), resp.brw}, rw, nil
|
|
}
|
|
|
|
func TestLogStreamServer_BackfillsMessages(t *testing.T) {
|
|
ss := NewLogStreamServer()
|
|
msgs := [][]byte{
|
|
[]byte("foo"),
|
|
[]byte("bar"),
|
|
[]byte("buzz"),
|
|
}
|
|
for _, msg := range msgs {
|
|
_, err := ss.Write(msg)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
br := bufio.NewReader(strings.NewReader(""))
|
|
buf := new(bytes.Buffer)
|
|
bw := bufio.NewWriter(buf)
|
|
rw := httptest.NewRecorder()
|
|
resp := &testResponseWriter{
|
|
brw: bufio.NewReadWriter(br, bw),
|
|
ResponseWriter: rw,
|
|
}
|
|
req := &http.Request{
|
|
Method: "GET",
|
|
Host: "localhost",
|
|
Header: http.Header{
|
|
"Upgrade": []string{"websocket"},
|
|
"Connection": []string{"upgrade"},
|
|
"Sec-Websocket-Key": []string{"dGhlIHNhbXBsZSBub25jZQ=="},
|
|
"Sec-Websocket-Version": []string{"13"},
|
|
},
|
|
}
|
|
|
|
ss.Handler(resp, req)
|
|
go ss.sendLogsToClients()
|
|
require.NoError(t, resp.brw.Flush())
|
|
dst, err := ioutil.ReadAll(buf)
|
|
require.NoError(t, err)
|
|
for _, msg := range msgs {
|
|
if !strings.Contains(string(dst), string(msg)) {
|
|
t.Errorf("Stream does contain message %s", msg)
|
|
}
|
|
}
|
|
}
|