mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-03 08:37:37 +00:00
7cc32c4dda
* remove unused code * remove defer use in loop * Remove unused methods and constants * gofmt and gaz * nilness check * remove unused args * Add TODO for refactoring subscribeWithBase to remove unused arg. It seems too involved to include in this sweeping PR. https://github.com/prysmaticlabs/prysm/issues/7437 * replace empty slice declaration * Remove unnecessary type conversions * remove redundant type declaration * rename receivers to be consistent * Remove bootnode query tool. It is now obsolete by discv5 * Remove relay node. It is no longer used or supported * Revert "Remove relay node. It is no longer used or supported" This reverts commit 4bd7717334dad85ef4766ed9bc4da711fb5fa810. * Delete unused test directory * Delete unsupported gcp startup script * Delete old k8s script * build fixes * fix build * go mod tidy * revert slasher/db/kv/block_header.go * fix build * remove redundant nil check * combine func args Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> Co-authored-by: Victor Farazdagi <simple.square@gmail.com>
124 lines
3.0 KiB
Go
124 lines
3.0 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"
|
|
logTest "github.com/sirupsen/logrus/hooks/test"
|
|
)
|
|
|
|
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_DisallowsNonLocalhostOrigin(t *testing.T) {
|
|
hook := logTest.NewGlobal()
|
|
ss := NewLogStreamServer()
|
|
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: "externalsource",
|
|
Header: http.Header{
|
|
"Upgrade": []string{"websocket"},
|
|
"Connection": []string{"upgrade"},
|
|
"Sec-Websocket-Key": []string{"dGhlIHNhbXBsZSBub25jZQ=="},
|
|
"Sec-Websocket-Version": []string{"13"},
|
|
},
|
|
}
|
|
ss.Handler(resp, req)
|
|
require.NoError(t, resp.brw.Flush())
|
|
require.LogsContain(t, hook, "origin not allowed")
|
|
}
|
|
|
|
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)
|
|
}
|
|
}
|
|
}
|