Skip to content
This repository was archived by the owner on Jan 30, 2025. It is now read-only.

Commit 80181ea

Browse files
author
Ivan Mirić
committed
Address some of the review comments in #130
1 parent 4e2e427 commit 80181ea

File tree

5 files changed

+54
-58
lines changed

5 files changed

+54
-58
lines changed

common/frame_session.go

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ type FrameSession struct {
7979

8080
logger *Logger
8181
// logger that will properly serialize RemoteObject instances
82-
loggerObj *logrus.Logger
82+
serializer *logrus.Logger
8383
}
8484

8585
func NewFrameSession(
@@ -88,11 +88,6 @@ func NewFrameSession(
8888
) (*FrameSession, error) {
8989
logger.Debugf("NewFrameSession", "sid:%v tid:%v", session.id, targetID)
9090
state := k6lib.GetState(ctx)
91-
loggerObj := &logrus.Logger{
92-
Out: state.Logger.Out,
93-
Level: state.Logger.Level,
94-
Formatter: &mapAsObjectFormatter{state.Logger.Formatter},
95-
}
9691
fs := FrameSession{
9792
ctx: ctx, // TODO: create cancelable context that can be used to cancel and close all child sessions
9893
session: session,
@@ -108,7 +103,11 @@ func NewFrameSession(
108103
eventCh: make(chan Event),
109104
childSessions: make(map[cdp.FrameID]*FrameSession),
110105
logger: logger,
111-
loggerObj: loggerObj,
106+
serializer: &logrus.Logger{
107+
Out: state.Logger.Out,
108+
Level: state.Logger.Level,
109+
Formatter: &consoleLogFormatter{state.Logger.Formatter},
110+
},
112111
}
113112
var err error
114113
if fs.parent != nil {
@@ -467,14 +466,13 @@ func (fs *FrameSession) navigateFrame(frame *Frame, url, referrer string) (strin
467466
}
468467

469468
func (fs *FrameSession) onConsoleAPICalled(event *runtime.EventConsoleAPICalled) {
470-
state := k6lib.GetState(fs.ctx)
471469
// TODO: switch to using browser logger instead of directly outputting to k6 logging system
472-
l := fs.loggerObj.
470+
l := fs.serializer.
473471
WithTime(event.Timestamp.Time()).
474472
WithField("source", "browser-console-api")
475473

476-
if state.Group.Path != "" {
477-
l = l.WithField("group", state.Group.Path)
474+
if s := k6lib.GetState(fs.ctx); s.Group.Path != "" {
475+
l = l.WithField("group", s.Group.Path)
478476
}
479477

480478
var parsedObjects []interface{}
@@ -490,9 +488,7 @@ func (fs *FrameSession) onConsoleAPICalled(event *runtime.EventConsoleAPICalled)
490488
l = l.WithField("objects", parsedObjects)
491489

492490
switch event.Type {
493-
case "log":
494-
l.Info()
495-
case "info":
491+
case "log", "info":
496492
l.Info()
497493
case "warning":
498494
l.Warn()

common/helper_test.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,19 @@ import (
3838
k6common "go.k6.io/k6/js/common"
3939
)
4040

41-
func newExecCtx() (context.Context, *ExecutionContext, *goja.Runtime) {
41+
func newExecCtx() (*ExecutionContext, context.Context, *goja.Runtime) {
4242
ctx := context.Background()
4343
logger := NewLogger(ctx, logrus.New(), false, nil)
4444
execCtx := NewExecutionContext(ctx, nil, nil, runtime.ExecutionContextID(123456789), logger)
45-
rt := goja.New()
4645

47-
return ctx, execCtx, rt
46+
return execCtx, ctx, goja.New()
4847
}
4948

5049
func TestHelpersConvertArgument(t *testing.T) {
5150
t.Parallel()
5251

5352
t.Run("int64", func(t *testing.T) {
54-
ctx, execCtx, rt := newExecCtx()
53+
execCtx, ctx, rt := newExecCtx()
5554
var value int64 = 777
5655
arg, _ := convertArgument(ctx, execCtx, rt.ToValue(value))
5756

@@ -63,7 +62,7 @@ func TestHelpersConvertArgument(t *testing.T) {
6362
})
6463

6564
t.Run("int64 maxint", func(t *testing.T) {
66-
ctx, execCtx, rt := newExecCtx()
65+
execCtx, ctx, rt := newExecCtx()
6766

6867
var value int64 = math.MaxInt32 + 1
6968
arg, _ := convertArgument(ctx, execCtx, rt.ToValue(value))
@@ -75,7 +74,7 @@ func TestHelpersConvertArgument(t *testing.T) {
7574
})
7675

7776
t.Run("float64", func(t *testing.T) {
78-
ctx, execCtx, rt := newExecCtx()
77+
execCtx, ctx, rt := newExecCtx()
7978

8079
var value float64 = 777.0
8180
arg, _ := convertArgument(ctx, execCtx, rt.ToValue(value))
@@ -88,7 +87,7 @@ func TestHelpersConvertArgument(t *testing.T) {
8887
})
8988

9089
t.Run("float64 unserializable values", func(t *testing.T) {
91-
ctx, execCtx, rt := newExecCtx()
90+
execCtx, ctx, rt := newExecCtx()
9291

9392
unserializableValues := []struct {
9493
value float64
@@ -122,7 +121,7 @@ func TestHelpersConvertArgument(t *testing.T) {
122121
})
123122

124123
t.Run("bool", func(t *testing.T) {
125-
ctx, execCtx, rt := newExecCtx()
124+
execCtx, ctx, rt := newExecCtx()
126125

127126
var value bool = true
128127
arg, _ := convertArgument(ctx, execCtx, rt.ToValue(value))
@@ -135,7 +134,7 @@ func TestHelpersConvertArgument(t *testing.T) {
135134
})
136135

137136
t.Run("string", func(t *testing.T) {
138-
ctx, execCtx, rt := newExecCtx()
137+
execCtx, ctx, rt := newExecCtx()
139138
var value string = "hello world"
140139
arg, _ := convertArgument(ctx, execCtx, rt.ToValue(value))
141140

@@ -147,7 +146,7 @@ func TestHelpersConvertArgument(t *testing.T) {
147146
})
148147

149148
t.Run("*BaseJSHandle", func(t *testing.T) {
150-
ctx, execCtx, rt := newExecCtx()
149+
execCtx, ctx, rt := newExecCtx()
151150
timeoutSetings := NewTimeoutSettings(nil)
152151
frameManager := NewFrameManager(ctx, nil, nil, timeoutSetings, NewLogger(ctx, NullLogger(), false, nil))
153152
frame := NewFrame(ctx, frameManager, nil, cdp.FrameID("frame_id_0123456789"))
@@ -168,7 +167,7 @@ func TestHelpersConvertArgument(t *testing.T) {
168167
})
169168

170169
t.Run("*BaseJSHandle wrong context", func(t *testing.T) {
171-
ctx, execCtx, rt := newExecCtx()
170+
execCtx, ctx, rt := newExecCtx()
172171
timeoutSetings := NewTimeoutSettings(nil)
173172
frameManager := NewFrameManager(ctx, nil, nil, timeoutSetings, NewLogger(ctx, NullLogger(), false, nil))
174173
frame := NewFrame(ctx, frameManager, nil, cdp.FrameID("frame_id_0123456789"))
@@ -188,7 +187,7 @@ func TestHelpersConvertArgument(t *testing.T) {
188187
})
189188

190189
t.Run("*BaseJSHandle is disposed", func(t *testing.T) {
191-
ctx, execCtx, rt := newExecCtx()
190+
execCtx, ctx, rt := newExecCtx()
192191
timeoutSetings := NewTimeoutSettings(nil)
193192
frameManager := NewFrameManager(ctx, nil, nil, timeoutSetings, NewLogger(ctx, NullLogger(), false, nil))
194193
frame := NewFrame(ctx, frameManager, nil, cdp.FrameID("frame_id_0123456789"))
@@ -208,7 +207,7 @@ func TestHelpersConvertArgument(t *testing.T) {
208207
})
209208

210209
t.Run("*BaseJSHandle as *ElementHandle", func(t *testing.T) {
211-
ctx, execCtx, rt := newExecCtx()
210+
execCtx, ctx, rt := newExecCtx()
212211
timeoutSetings := NewTimeoutSettings(nil)
213212
frameManager := NewFrameManager(ctx, nil, nil, timeoutSetings, NewLogger(ctx, NullLogger(), false, nil))
214213
frame := NewFrame(ctx, frameManager, nil, cdp.FrameID("frame_id_0123456789"))

common/js_handle.go

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -49,27 +49,23 @@ func NewJSHandle(
4949
ctx context.Context, session *Session, execCtx *ExecutionContext,
5050
frame *Frame, remoteObject *runtime.RemoteObject, logger *Logger,
5151
) api.JSHandle {
52-
if remoteObject.Subtype == "node" && execCtx.Frame() != nil {
53-
return &ElementHandle{
54-
BaseJSHandle: BaseJSHandle{
55-
ctx: ctx,
56-
session: session,
57-
execCtx: execCtx,
58-
remoteObject: remoteObject,
59-
disposed: false,
60-
logger: logger,
61-
},
62-
frame: frame,
63-
}
64-
}
65-
return &BaseJSHandle{
52+
eh := &BaseJSHandle{
6653
ctx: ctx,
6754
session: session,
6855
execCtx: execCtx,
6956
remoteObject: remoteObject,
7057
disposed: false,
7158
logger: logger,
7259
}
60+
61+
if remoteObject.Subtype == "node" && execCtx.Frame() != nil {
62+
return &ElementHandle{
63+
BaseJSHandle: *eh,
64+
frame: frame,
65+
}
66+
}
67+
68+
return eh
7369
}
7470

7571
// AsElement returns an element handle if this JSHandle is a reference to a JS HTML element
@@ -132,10 +128,11 @@ func (h *BaseJSHandle) GetProperties() map[string]api.JSHandle {
132128

133129
props := make(map[string]api.JSHandle, len(result))
134130
for i := 0; i < len(result); i++ {
135-
if result[i].Enumerable {
136-
props[result[i].Name] = NewJSHandle(
137-
h.ctx, h.session, h.execCtx, h.execCtx.Frame(), result[i].Value, h.logger)
131+
if !result[i].Enumerable {
132+
continue
138133
}
134+
props[result[i].Name] = NewJSHandle(
135+
h.ctx, h.session, h.execCtx, h.execCtx.Frame(), result[i].Value, h.logger)
139136
}
140137
return props
141138
}

common/logger.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,13 @@ func goRoutineID() int {
160160
return id
161161
}
162162

163-
type mapAsObjectFormatter struct {
163+
type consoleLogFormatter struct {
164164
logrus.Formatter
165165
}
166166

167-
func (f *mapAsObjectFormatter) Format(entry *logrus.Entry) ([]byte, error) {
167+
// Format assembles a message from marshalling elements in the "objects" field
168+
// to JSON separated by space, and deletes the field when done.
169+
func (f *consoleLogFormatter) Format(entry *logrus.Entry) ([]byte, error) {
168170
if objects, ok := entry.Data["objects"].([]interface{}); ok {
169171
var msg []string
170172
for _, obj := range objects {

common/logger_test.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,31 +34,33 @@ func (f *testLogFormatter) Format(entry *logrus.Entry) ([]byte, error) {
3434
return []byte(entry.Message), nil
3535
}
3636

37-
func TestMapAsObjectFormatter(t *testing.T) {
37+
func TestConsoleLogFormatter(t *testing.T) {
3838
t.Parallel()
3939

4040
testCases := []struct {
4141
objects []interface{}
4242
expected string
4343
}{
4444
{objects: nil, expected: ""},
45-
{objects: []interface{}{
46-
map[string]interface{}{"one": 1, "two": "two"},
47-
map[string]interface{}{"nested": map[string]interface{}{
48-
"sub": float64(7.777),
49-
}},
50-
},
45+
{
46+
objects: []interface{}{
47+
map[string]interface{}{"one": 1, "two": "two"},
48+
map[string]interface{}{"nested": map[string]interface{}{
49+
"sub": float64(7.777),
50+
}},
51+
},
5152
expected: `{"one":1,"two":"two"} {"nested":{"sub":7.777}}`,
5253
},
53-
{objects: []interface{}{
54-
map[string]interface{}{"one": 1, "fail": make(chan int)},
55-
map[string]interface{}{"two": 2},
56-
},
54+
{
55+
objects: []interface{}{
56+
map[string]interface{}{"one": 1, "fail": make(chan int)},
57+
map[string]interface{}{"two": 2},
58+
},
5759
expected: `{"two":2}`,
5860
},
5961
}
6062

61-
fmtr := &mapAsObjectFormatter{&testLogFormatter{}}
63+
fmtr := &consoleLogFormatter{&testLogFormatter{}}
6264

6365
for _, tc := range testCases {
6466
var data logrus.Fields

0 commit comments

Comments
 (0)