Coder Social home page Coder Social logo

xk6-tracetest's Introduction

xk6-tracetest

This extension adds tracetest support to k6!

That means that if you're testing an instrumented system, you can use this extension to trigger test runs.

Currently, it supports HTTP requests and the following propagation formats: tracecontext, baggage, b3 ot, jaeger and xray.

It is implemented using the xk6 extension system.

Build

To build a k6 binary with this extension, first ensure you have the prerequisites:

Then:

  1. Download xk6:
$ go install go.k6.io/xk6/cmd/xk6@latest
  1. Build the binary:
$ xk6 build --with github.com/kubeshop/xk6-tracetest@latest

Available Variables

If you want to configure the tracetest k6 binary you can do it by using any of the following environment variables

  • XK6_TRACETEST_SERVER_URL: Updates the tracetest server url for API interactions (can be overwritten by the script config)
  • XK6_TRACETEST_SERVER_PATH: Updates the tracetest server path for API interactions (can be overwritten by the script config)
  • XK6_TRACETEST_SERVER_PATH: Updates the tracetest server token that will be used to authenticate with the server (can be overwritten by the script config)

You can also set a default tracetest endpoint when running the k6 binary by using the following option:

./k6 run examples/test-from-id.js -o xk6-tracetest=<server-url>

Example

To run a full example take a look at the fully flesh demo we have for you in the Tracetest main mono repo: examples/tracetest-k6

./k6 run examples/test-from-id.js --env XK6_TRACETEST_API_TOKEN=<your token> -o xk6-tracetest=https://api.tracetest.io

xk6-tracetest's People

Contributors

danielbdias avatar javaducky avatar mstoykov avatar xoscar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

xk6-tracetest's Issues

[k6][Extension] Include Binary environment variables

We need a way to configure the tracetest binary to behave differently depending on the environment variables and flags that are sent to it.

Acceptance criteria:
AC1:
As a user using the tracetest k6 extension
I should be able to choose if I want the observability tests to fail my load tests if any of them fail
And this option should be enabled by default

AC2:
As a user using the tracetest k6 extension
If I want to use the output as a mechanism to trigger tracetest runs
I should be able to add the default tracetest server URL for all my load tests

AC3:
As a user, I should be able to add flags and environment variables as part of running the load tests to:

  1. Enable feature flags
  2. Enable/disable analytics
  3. Wait for results
  4. Define the default variable name for tests

Needed to maintain listing in k6 Extensions Registry

Contact Details

No response

What happened?

We've recently updated the requirements for maintaining an extension within the listing on our site. As such, please address the following items to maintain your listing within the registry:

  • add the xk6 topic to your repository metadata
  • add an examples directory containing k6 test scripts making use of your extension
  • needs to build with a recent version of k6; minimum v0.43

For more information on these and other listing requirements, please take a look at the registry requirements.

Version

1.0.0 (Default)

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct

Fatal error when running k6 load test with xk6-tracetest extension

Contact Details

[email protected]

What happened?

We use k6 and Tracetest to perform load tests of our system. Everything works great except for the time when the K6 load test fails to run due to a concurrency error. This requires starting the load test command several times in the console until it eventually starts successfully. The load test doesn't change during this time. It is also worth mentioning that the load test starts successfully if we delete the Tracetest constructor from the script.

const tracetest = Tracetest({ serverUrl: "http://localhost:11633", });

See the example of the Tracetest configuration and a sample of the load test here https://github.com/vladplotnik/k6-tracetest-load-tests

We need to use the Tracetest extension to collect traces and assert them using the Tracetest UI. Any help would be appreciated. Thank you!

Version

1.0.0 (Default)

Relevant log output

$ ./tools/k6 run --out dashboard load-test.js -o xk6-tracetest

          /\      |‾‾| /‾‾/   /‾‾/
     /\  /  \     |  |/  /   /  /
    /  \/    \    |     (   /   ‾‾\
   /          \   |  |\  \ |  (‾)  |
  / __________ \  |__| \__\ \_____/ .io

  execution: local
     script: load-test.js
     output: dashboard (:5665) http://127.0.0.1:5665, xk6-tracetest-output (TestRunID: 17318)

  scenarios: (100.00%) 1 scenario, 20 max VUs, 1m0s max duration (incl. graceful stop):
           * ramping_up_users: Up to 20 looping VUs for 30s over 3 stages (gracefulRampDown: 30s, gracefulStop: 30s)

fatal error: concurrent map writes

goroutine 104 [running]:
github.com/dop251/goja.(*Runtime).fieldsInfo(0xc0023d8000, {0x21b16b0, 0x1d73880})
        github.com/dop251/[email protected]/object_goreflect.go:671 +0xc5
github.com/dop251/goja.(*objectGoReflect).init(0xc000b4c000)
        github.com/dop251/[email protected]/object_goreflect.go:150 +0x533
github.com/dop251/goja.(*Runtime).toValue(0xc0023d8000, {0x1d7e820?, 0xc0000fe480?}, {0x0?, 0x0?, 0xc000b10cd8?})
        github.com/dop251/[email protected]/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/[email protected]/runtime.go:1821
github.com/kubeshop/xk6-tracetest/modules/tracetest.(*Tracetest).Constructor(0xc0000fe480, {0xc000b49740, {0xc000d66e30, 0x1, 0x19}, 0x0})
        github.com/kubeshop/[email protected]/modules/tracetest/tracetest.go:64 +0x19f
github.com/dop251/goja.(*nativeFuncObject).defaultConstruct(0x1?, 0xc0028b4c10, {0xc000d66e30, 0x1, 0x19}, 0x0)
        github.com/dop251/[email protected]/func.go:535 +0xa5
github.com/dop251/goja.(*Runtime).newNativeConstructor.func1({{0x21ab810, 0x2f9b640}, {0xc000d66e30, 0x1, 0x19}})
        github.com/dop251/[email protected]/runtime.go:736 +0xfe
github.com/dop251/goja.(*nativeFuncObject).vmCall(0xc000b28d20, 0xc000af2000, 0x1)
        github.com/dop251/[email protected]/func.go:559 +0x1af
github.com/dop251/goja.call.exec(0x9?, 0xc000af2000)
        github.com/dop251/[email protected]/vm.go:3366 +0x6a
github.com/dop251/goja.(*vm).run(0xc000af2000)
        github.com/dop251/[email protected]/vm.go:582 +0x62
github.com/dop251/goja.(*vm).runTryInner(0xc000af2000?)
        github.com/dop251/[email protected]/vm.go:834 +0x70
github.com/dop251/goja.(*baseJsFuncObject).__call(0xc000b34180, {0xc0012a15c0?, 0x2, 0xc000b11118?}, {0x0?, 0x0}, {0x21aae90?, 0xc000b2cc90?})
        github.com/dop251/[email protected]/func.go:426 +0x705
github.com/dop251/goja.(*baseJsFuncObject)._call(...)
        github.com/dop251/[email protected]/func.go:442
github.com/dop251/goja.(*baseJsFuncObject).call(0xc00056e400?, {{0x21aae90, 0xc000b2cc90}, {0xc0012a15c0, 0x2, 0x2}}, {0x0?, 0x0?})
        github.com/dop251/[email protected]/func.go:450 +0x7a
github.com/dop251/goja.(*baseJsFuncObject).Call(...)
        github.com/dop251/[email protected]/func.go:382
github.com/dop251/goja.AssertFunction.func1.1()
        github.com/dop251/[email protected]/runtime.go:2476 +0x77
github.com/dop251/goja.(*vm).try(0xc000af2000, 0xc000b11360)
        github.com/dop251/[email protected]/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).runWrapped(0xc00056e400, 0x173dc00b958?)
        github.com/dop251/[email protected]/runtime.go:2520 +0x7c
github.com/dop251/goja.AssertFunction.func1({0x21aae90?, 0xc000b2cc90?}, {0xc0012a15c0?, 0x1dd39a0?, 0xc000b2cc90?})
        github.com/dop251/[email protected]/runtime.go:2475 +0x92
go.k6.io/k6/js/modules.(*cjsModuleInstance).execute(0xc0012a1560)
        go.k6.io/[email protected]/js/modules/cjsmodule.go:46 +0x3c3
go.k6.io/k6/js/modules.(*ModuleSystem).Require(0xc0012a1480, 0xc000b114e0?, {0xc0022ae000?, 0xc000b114d0?})
        go.k6.io/[email protected]/js/modules/resolution.go:146 +0xf1
go.k6.io/k6/js/modules.(*ModuleSystem).RunSourceData(0xc0012a1480, 0xc0006fc540)
        go.k6.io/[email protected]/js/modules/resolution.go:165 +0xd1
go.k6.io/k6/js.(*Bundle).instantiate.func3.1()
        go.k6.io/[email protected]/js/bundle.go:309 +0x2d
go.k6.io/k6/js/eventloop.(*EventLoop).Start(0xc0007cc0f0, 0xc0012a1520)
        go.k6.io/[email protected]/js/eventloop/eventloop.go:177 +0x1bd
go.k6.io/k6/js.(*Bundle).instantiate.func3()
        go.k6.io/[email protected]/js/bundle.go:306 +0xb9
go.k6.io/k6/js/common.RunWithPanicCatching({0x21afbe0?, 0xc0003c0900?}, 0xc000b2c7b0?, 0xc0012a1480?)
        go.k6.io/[email protected]/js/common/util.go:86 +0x87
go.k6.io/k6/js.(*Bundle).instantiate(0xc0000e5340, 0xc000b2c7b0, 0x6)
        go.k6.io/[email protected]/js/bundle.go:305 +0x36b
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc610?)
        go.k6.io/[email protected]/js/bundle.go:225 +0x125
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x6, 0x6, 0xc0012a4960)
        go.k6.io/[email protected]/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc65a?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c657?, 0x0?, 0xc65b?)
        go.k6.io/[email protected]/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc65b?, {0x21afaf0, 0xc000989030})
        go.k6.io/[email protected]/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/[email protected]/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/[email protected]/execution/scheduler.go:167 +0x7d

goroutine 1 [select]:
go.k6.io/k6/execution.(*Scheduler).initVUsAndExecutors(0xc000988d20, {0x219d3d0, 0xc00092dea0}, 0xc0012a4960)
        go.k6.io/[email protected]/execution/scheduler.go:280 +0x558
go.k6.io/k6/execution.(*Scheduler).Init(0xc000988d20, {0x219d478, 0xc0005a1590}, 0x0?)
        go.k6.io/[email protected]/execution/scheduler.go:402 +0x205
go.k6.io/k6/cmd.(*cmdRun).run(0xc0006f2370, 0xc0008a6780, {0xc0005980f0?, 0x1, 0x5})
        go.k6.io/[email protected]/cmd/run.go:280 +0x1232
github.com/spf13/cobra.(*Command).execute(0xc0008a6780, {0xc0005980a0, 0x5, 0x5})
        github.com/spf13/[email protected]/command.go:856 +0x67c
github.com/spf13/cobra.(*Command).ExecuteC(0xc00083ca00)
        github.com/spf13/[email protected]/command.go:974 +0x3bd
github.com/spf13/cobra.(*Command).Execute(...)
        github.com/spf13/[email protected]/command.go:902
go.k6.io/k6/cmd.(*rootCommand).execute(0xc00084a210)
        go.k6.io/[email protected]/cmd/root.go:104 +0x125
go.k6.io/k6/cmd.Execute()
        go.k6.io/[email protected]/cmd/root.go:137 +0x31
main.main()
        k6/main.go:12 +0x17

goroutine 9 [select]:
go.k6.io/k6/output.(*PeriodicFlusher).run(0xc000419d10)
        go.k6.io/[email protected]/output/helpers.go:67 +0xd0
created by go.k6.io/k6/output.NewPeriodicFlusher
        go.k6.io/[email protected]/output/helpers.go:102 +0x136

goroutine 23 [select]:
go.k6.io/k6/cmd.showProgress({0x219d3d0, 0xc00092da90}, 0xc0007f8b00, {0xc00281a120?, 0x2, 0x2}, {0x21afbe0?, 0xc0003c0900?})
        go.k6.io/[email protected]/cmd/ui.go:337 +0x614
go.k6.io/k6/cmd.(*cmdRun).run.func3()
        go.k6.io/[email protected]/cmd/run.go:113 +0x1e5
created by go.k6.io/k6/cmd.(*cmdRun).run
        go.k6.io/[email protected]/cmd/run.go:107 +0x57f

goroutine 51 [select]:
io.(*pipe).read(0xc000504300, {0xc0008ae000, 0x1000, 0x1?})
        io/pipe.go:57 +0xb1
io.(*PipeReader).Read(0x0?, {0xc0008ae000?, 0x0?, 0x0?})
        io/pipe.go:136 +0x25
bufio.(*Scanner).Scan(0xc0005bff28)
        bufio/scan.go:214 +0x876
github.com/sirupsen/logrus.(*Entry).writerScanner(0x0?, 0xc00059a068, 0xc0005aa100)
        github.com/sirupsen/[email protected]/writer.go:59 +0xa5
created by github.com/sirupsen/logrus.(*Entry).WriterLevel
        github.com/sirupsen/[email protected]/writer.go:51 +0x3d1

goroutine 52 [chan receive]:
go.k6.io/k6/cmd.(*rootCommand).setupLoggers.func2()
        go.k6.io/[email protected]/cmd/root.go:282 +0x3a
created by go.k6.io/k6/cmd.(*rootCommand).setupLoggers
        go.k6.io/[email protected]/cmd/root.go:281 +0x65b

goroutine 67 [IO wait]:
internal/poll.runtime_pollWait(0x173dc25f898, 0x72)
        runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xffffffb0ffffffa?, 0xc0008c56f0?, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.execIO(0xc002516018, 0x2003670)
        internal/poll/fd_windows.go:175 +0xf7
internal/poll.(*FD).Read(0xc002516000, {0xc000431000, 0x1800, 0x1800})
        internal/poll/fd_windows.go:436 +0x2b8
net.(*netFD).Read(0xc002516000, {0xc000431000?, 0xc000431005?, 0x1a?})
        net/fd_posix.go:55 +0x29
net.(*conn).Read(0xc000ec62d8, {0xc000431000?, 0x7fffde007fffdd?, 0xc0016aa8b0?})
        net/net.go:183 +0x45
crypto/tls.(*atLeastReader).Read(0xc000008678, {0xc000431000?, 0xc000008678?, 0x0?})
        crypto/tls/conn.go:788 +0x3d
bytes.(*Buffer).ReadFrom(0xc0016aa990, {0x218bd40, 0xc000008678})
        bytes/buffer.go:202 +0x98
crypto/tls.(*Conn).readFromUntil(0xc0016aa700, {0x173dc25f988?, 0xc000ec62d8}, 0x1800?)
        crypto/tls/conn.go:810 +0xe5
crypto/tls.(*Conn).readRecordOrCCS(0xc0016aa700, 0x0)
        crypto/tls/conn.go:617 +0x116
crypto/tls.(*Conn).readRecord(...)
        crypto/tls/conn.go:583
crypto/tls.(*Conn).Read(0xc0016aa700, {0xc002297000, 0x1000, 0xdd10a0?})
        crypto/tls/conn.go:1316 +0x16f
bufio.(*Reader).Read(0xc0023aede0, {0xc001be3c40, 0x9, 0xdeeea5?})
        bufio/bufio.go:237 +0x1bb
io.ReadAtLeast({0x218bb20, 0xc0023aede0}, {0xc001be3c40, 0x9, 0x9}, 0x9)
        io/io.go:332 +0x9a
io.ReadFull(...)
        io/io.go:351
net/http.http2readFrameHeader({0xc001be3c40?, 0x9?, 0xc002f102a0?}, {0x218bb20?, 0xc0023aede0?})
        net/http/h2_bundle.go:1567 +0x6e
net/http.(*http2Framer).ReadFrame(0xc001be3c00)
        net/http/h2_bundle.go:1831 +0x95
net/http.(*http2clientConnReadLoop).run(0xc0008c5f98)
        net/http/h2_bundle.go:9187 +0x12e
net/http.(*http2ClientConn).readLoop(0xc002872a80)
        net/http/h2_bundle.go:9082 +0x6f
created by net/http.(*http2Transport).newClientConn
        net/http/h2_bundle.go:7779 +0xc3c

goroutine 24 [select]:
github.com/r3labs/sse/v2.(*Stream).run.func1(0xc0020dbc20)
        github.com/r3labs/sse/[email protected]/stream.go:53 +0xfa
created by github.com/r3labs/sse/v2.(*Stream).run
        github.com/r3labs/sse/[email protected]/stream.go:51 +0x65

goroutine 25 [IO wait]:
internal/poll.runtime_pollWait(0x173dc25f7a8, 0x72)
        runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc0009f7c08?, 0xa565f0?, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.execIO(0xc0009b2a18, 0xc0009f7bf0)
        internal/poll/fd_windows.go:175 +0xf7
internal/poll.(*FD).acceptOne(0xc0009b2a00, 0x46c, {0xc000bd84b0?, 0xa4e16a?, 0x173dc0c6ea8?}, 0x173b62f0108?)
        internal/poll/fd_windows.go:936 +0x6d
internal/poll.(*FD).Accept(0xc0009b2a00, 0xc0009f7dc8)
        internal/poll/fd_windows.go:970 +0x1d6
net.(*netFD).accept(0xc0009b2a00)
        net/fd_windows.go:139 +0x65
net.(*TCPListener).accept(0xc0023b1158)
        net/tcpsock_posix.go:148 +0x25
net.(*TCPListener).Accept(0xc0023b1158)
        net/tcpsock.go:297 +0x3d
net/http.(*Server).Serve(0xc0007f7a40, {0x219c4e0, 0xc0023b1158})
        net/http/server.go:3059 +0x385
github.com/grafana/xk6-dashboard/dashboard.(*webServer).listenAndServe.func1()
        github.com/grafana/[email protected]/dashboard/web.go:53 +0x85
created by github.com/grafana/xk6-dashboard/dashboard.(*webServer).listenAndServe
        github.com/grafana/[email protected]/dashboard/web.go:50 +0xbb

goroutine 26 [select]:
go.k6.io/k6/output.(*PeriodicFlusher).run(0xc000985020)
        go.k6.io/[email protected]/output/helpers.go:67 +0xd0
created by go.k6.io/k6/output.NewPeriodicFlusher
        go.k6.io/[email protected]/output/helpers.go:102 +0x136

goroutine 27 [select]:
go.k6.io/k6/output.(*PeriodicFlusher).run(0xc000985050)
        go.k6.io/[email protected]/output/helpers.go:67 +0xd0
created by go.k6.io/k6/output.NewPeriodicFlusher
        go.k6.io/[email protected]/output/helpers.go:102 +0x136

goroutine 28 [select]:
go.k6.io/k6/output.(*Manager).Start.func2()
        go.k6.io/[email protected]/output/manager.go:63 +0x172
created by go.k6.io/k6/output.(*Manager).Start
        go.k6.io/[email protected]/output/manager.go:56 +0x14a

goroutine 29 [select]:
go.k6.io/k6/metrics/engine.(*MetricsEngine).StartThresholdCalculations.func1()
        go.k6.io/[email protected]/metrics/engine/engine.go:187 +0x127
created by go.k6.io/k6/metrics/engine.(*MetricsEngine).StartThresholdCalculations
        go.k6.io/[email protected]/metrics/engine/engine.go:181 +0xf8

goroutine 30 [IO wait]:
internal/poll.runtime_pollWait(0x173dc25f6b8, 0x72)
        runtime/netpoll.go:306 +0x89
internal/poll.(*pollDesc).wait(0xc0009d5b68?, 0xa565f0?, 0x0)
        internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.execIO(0xc0009de018, 0xc0009d5b50)
        internal/poll/fd_windows.go:175 +0xf7
internal/poll.(*FD).acceptOne(0xc0009de000, 0x474, {0xc0009e2000?, 0xa4e16a?, 0x173dc100be8?}, 0x173b62f0eb8?)
        internal/poll/fd_windows.go:936 +0x6d
internal/poll.(*FD).Accept(0xc0009de000, 0xc0009d5d28)
        internal/poll/fd_windows.go:970 +0x1d6
net.(*netFD).accept(0xc0009de000)
        net/fd_windows.go:139 +0x65
net.(*TCPListener).accept(0xc00079c030)
        net/tcpsock_posix.go:148 +0x25
net.(*TCPListener).Accept(0xc00079c030)
        net/tcpsock.go:297 +0x3d
net/http.(*Server).Serve(0xc00243a870, {0x219c4e0, 0xc00079c030})
        net/http/server.go:3059 +0x385
net/http.(*Server).ListenAndServe(0xc00243a870)
        net/http/server.go:2988 +0x7d
go.k6.io/k6/cmd.(*cmdRun).run.func9()
        go.k6.io/[email protected]/cmd/run.go:235 +0x131
created by go.k6.io/k6/cmd.(*cmdRun).run
        go.k6.io/[email protected]/cmd/run.go:232 +0xefd

goroutine 31 [chan receive]:
go.k6.io/k6/cmd.(*cmdRun).run.func10()
        go.k6.io/[email protected]/cmd/run.go:247 +0xa5
created by go.k6.io/k6/cmd.(*cmdRun).run
        go.k6.io/[email protected]/cmd/run.go:245 +0xffd

goroutine 54 [select]:
go.k6.io/k6/js.(*Bundle).instantiate.func2()
        go.k6.io/[email protected]/js/bundle.go:296 +0x86
created by go.k6.io/k6/js.(*Bundle).instantiate
        go.k6.io/[email protected]/js/bundle.go:295 +0x2ca

goroutine 32 [syscall]:
os/signal.signal_recv()
        runtime/sigqueue.go:152 +0x2f
os/signal.loop()
        os/signal/signal_unix.go:23 +0x19
created by os/signal.Notify.func1.1
        os/signal/signal.go:151 +0x2a

goroutine 33 [select]:
go.k6.io/k6/cmd.handleTestAbortSignals.func1()
        go.k6.io/[email protected]/cmd/common.go:96 +0xa5
created by go.k6.io/k6/cmd.handleTestAbortSignals
        go.k6.io/[email protected]/cmd/common.go:95 +0x1aa

goroutine 98 [select]:
go.k6.io/k6/execution.(*Scheduler).emitVUsAndVUsMax.func2()
        go.k6.io/[email protected]/execution/scheduler.go:237 +0x118
created by go.k6.io/k6/execution.(*Scheduler).emitVUsAndVUsMax
        go.k6.io/[email protected]/execution/scheduler.go:229 +0x215

goroutine 99 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc002f0ee80?, 0xad?, 0x1bfcce0?)
        runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0x2f40e80)
        sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
        sync/mutex.go:90
reflect.FuncOf({0xc0013621c0, 0x2, 0xa565f0?}, {0x2f9ba78, 0x0, 0xa440d2?}, 0x0)
        reflect/type.go:2084 +0x54b
reflect.(*rtype).Method(0x1d00c20, 0x0)
        reflect/type.go:869 +0x4ca
github.com/dop251/goja.(*Runtime).buildMethodsInfo(0xc000101000, {0x21b16b0, 0x1d00c20})
        github.com/dop251/[email protected]/object_goreflect.go:634 +0x15c
github.com/dop251/goja.(*Runtime).methodsInfo(0xc000101000, {0x21b16b0, 0x1d00c20})
        github.com/dop251/[email protected]/object_goreflect.go:680 +0x5e
github.com/dop251/goja.(*objectGoReflect).init(0xc00100e460)
        github.com/dop251/[email protected]/object_goreflect.go:162 +0x62f
github.com/dop251/goja.(*Runtime).toValue(0xc000101000, {0x1d00c20?, 0x2cf2554?}, {0x0?, 0x0?, 0x6?})
        github.com/dop251/[email protected]/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/[email protected]/runtime.go:1821
github.com/dop251/goja.(*Object).Set.func1()
        github.com/dop251/[email protected]/value.go:880 +0x71
github.com/dop251/goja.(*vm).try(0xc002f12240, 0xc002f0f590)
        github.com/dop251/[email protected]/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).try(...)
        github.com/dop251/[email protected]/runtime.go:2596
github.com/dop251/goja.(*Object).Set(0x1d00c20?, {0x1b77480?, 0xc?}, {0x1d00c20?, 0x2cf2554?})
        github.com/dop251/[email protected]/value.go:879 +0x73
go.k6.io/k6/js.(*Bundle).Instantiate.func1({0x1b77480?, 0xc00238b870?}, {0x1d00c20?, 0x2cf2554?})
        go.k6.io/[email protected]/js/bundle.go:253 +0x45
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/[email protected]/lib/options.go:562 +0x556
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc31a?)
        go.k6.io/[email protected]/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x5, 0x5, 0xc0012a4960)
        go.k6.io/[email protected]/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc323?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c323?, 0x0?, 0xc324?)
        go.k6.io/[email protected]/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc328?, {0x21afaf0, 0xc000989030})
        go.k6.io/[email protected]/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/[email protected]/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/[email protected]/execution/scheduler.go:167 +0x7d

goroutine 100 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc000b0ce80?, 0xf6?, 0x1bfcce0?)
        runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0x2f40e80)
        sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
        sync/mutex.go:90
reflect.FuncOf({0xc0023b8fc0, 0x1, 0x1b?}, {0xc0023b8fd0, 0x1, 0x1b?}, 0x0)
        reflect/type.go:2084 +0x54b
reflect.(*rtype).Method(0x1c78080, 0x1)
        reflect/type.go:869 +0x4ca
github.com/dop251/goja.(*Runtime).buildMethodsInfo(0xc002324800, {0x21b16b0, 0x1c78080})
        github.com/dop251/[email protected]/object_goreflect.go:634 +0x15c
github.com/dop251/goja.(*Runtime).methodsInfo(0xc002324800, {0x21b16b0, 0x1c78080})
        github.com/dop251/[email protected]/object_goreflect.go:680 +0x5e
github.com/dop251/goja.(*objectGoReflect).init(0xc00100e380)
        github.com/dop251/[email protected]/object_goreflect.go:162 +0x62f
github.com/dop251/goja.(*Runtime).toValue(0xc002324800, {0x1cadd60?, 0xc000975da0?}, {0x0?, 0x0?, 0x6?})
        github.com/dop251/[email protected]/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/[email protected]/runtime.go:1821
github.com/dop251/goja.(*Object).Set.func1()
        github.com/dop251/[email protected]/value.go:880 +0x71
github.com/dop251/goja.(*vm).try(0xc000660000, 0xc000b0d590)
        github.com/dop251/[email protected]/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).try(...)
        github.com/dop251/[email protected]/runtime.go:2596
github.com/dop251/goja.(*Object).Set(0x1cadd60?, {0x1b3a7e8?, 0xb?}, {0x1cadd60?, 0xc000975da0?})
        github.com/dop251/[email protected]/value.go:879 +0x73
go.k6.io/k6/js.(*Bundle).Instantiate.func1({0x1b3a7e8?, 0xc0010262d0?}, {0x1cadd60?, 0xc000975da0?})
        go.k6.io/[email protected]/js/bundle.go:253 +0x45
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/[email protected]/lib/options.go:562 +0x556
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc010?)
        go.k6.io/[email protected]/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x7, 0x7, 0xc0012a4960)
        go.k6.io/[email protected]/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc0bc?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c0c1?, 0x0?, 0xc0bd?)
        go.k6.io/[email protected]/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc0c1?, {0x21afaf0, 0xc000989030})
        go.k6.io/[email protected]/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/[email protected]/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/[email protected]/execution/scheduler.go:167 +0x7d

goroutine 101 [runnable]:
sync.runtime_SemacquireMutex(0xc001ae2e80?, 0xf6?, 0x1bfcce0?)
        runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0x2f40e80)
        sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
        sync/mutex.go:90
reflect.FuncOf({0xc002378eb0, 0x1, 0x1b?}, {0xc002378ec0, 0x1, 0x1b?}, 0x0)
        reflect/type.go:2084 +0x54b
reflect.(*rtype).Method(0x1c78080, 0x1)
        reflect/type.go:869 +0x4ca
github.com/dop251/goja.(*Runtime).buildMethodsInfo(0xc0007ba000, {0x21b16b0, 0x1c78080})
        github.com/dop251/[email protected]/object_goreflect.go:634 +0x15c
github.com/dop251/goja.(*Runtime).methodsInfo(0xc0007ba000, {0x21b16b0, 0x1c78080})
        github.com/dop251/[email protected]/object_goreflect.go:680 +0x5e
github.com/dop251/goja.(*objectGoReflect).init(0xc000bc8380)
        github.com/dop251/[email protected]/object_goreflect.go:162 +0x62f
github.com/dop251/goja.(*Runtime).toValue(0xc0007ba000, {0x1cadd60?, 0xc000975da0?}, {0x0?, 0x0?, 0x6?})
        github.com/dop251/[email protected]/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/[email protected]/runtime.go:1821
github.com/dop251/goja.(*Object).Set.func1()
        github.com/dop251/[email protected]/value.go:880 +0x71
github.com/dop251/goja.(*vm).try(0xc000b98000, 0xc001ae3590)
        github.com/dop251/[email protected]/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).try(...)
        github.com/dop251/[email protected]/runtime.go:2596
github.com/dop251/goja.(*Object).Set(0x1cadd60?, {0x1b3a7e8?, 0xb?}, {0x1cadd60?, 0xc000975da0?})
        github.com/dop251/[email protected]/value.go:879 +0x73
go.k6.io/k6/js.(*Bundle).Instantiate.func1({0x1b3a7e8?, 0xc000bf02d0?}, {0x1cadd60?, 0xc000975da0?})
        go.k6.io/[email protected]/js/bundle.go:253 +0x45
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/[email protected]/lib/options.go:562 +0x556
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc181?)
        go.k6.io/[email protected]/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x2, 0x2, 0xc0012a4960)
        go.k6.io/[email protected]/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc189?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c18a?, 0x0?, 0xc18a?)
        go.k6.io/[email protected]/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc192?, {0x21afaf0, 0xc000989030})
        go.k6.io/[email protected]/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/[email protected]/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/[email protected]/execution/scheduler.go:167 +0x7d

goroutine 102 [runnable]:
reflect.(*rtype).Method(0x1d00c20, 0x3)
        reflect/type.go:860 +0x187
github.com/dop251/goja.(*Runtime).buildMethodsInfo(0xc0023d8000, {0x21b16b0, 0x1d00c20})
        github.com/dop251/[email protected]/object_goreflect.go:634 +0x15c
github.com/dop251/goja.(*Runtime).methodsInfo(0xc0023d8000, {0x21b16b0, 0x1d00c20})
        github.com/dop251/[email protected]/object_goreflect.go:680 +0x5e
github.com/dop251/goja.(*objectGoReflect).init(0xc001c8f880)
        github.com/dop251/[email protected]/object_goreflect.go:162 +0x62f
github.com/dop251/goja.(*Runtime).toValue(0xc0023d8000, {0x1d00c20?, 0x2cf2554?}, {0x0?, 0x0?, 0x6?})
        github.com/dop251/[email protected]/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/[email protected]/runtime.go:1821
github.com/dop251/goja.(*Object).Set.func1()
        github.com/dop251/[email protected]/value.go:880 +0x71
github.com/dop251/goja.(*vm).try(0xc001ade000, 0xc001ae7590)
        github.com/dop251/[email protected]/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).try(...)
        github.com/dop251/[email protected]/runtime.go:2596
github.com/dop251/goja.(*Object).Set(0x1d00c20?, {0x1b77480?, 0xc?}, {0x1d00c20?, 0x2cf2554?})
        github.com/dop251/[email protected]/value.go:879 +0x73
go.k6.io/k6/js.(*Bundle).Instantiate.func1({0x1b77480?, 0xc000f1a470?}, {0x1d00c20?, 0x2cf2554?})
        go.k6.io/[email protected]/js/bundle.go:253 +0x45
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/[email protected]/lib/options.go:562 +0x556
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc7e7?)
        go.k6.io/[email protected]/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x3, 0x3, 0xc0012a4960)
        go.k6.io/[email protected]/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc7f0?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c7f0?, 0x0?, 0xc7f1?)
        go.k6.io/[email protected]/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc7f4?, {0x21afaf0, 0xc000989030})
        go.k6.io/[email protected]/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/[email protected]/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/[email protected]/execution/scheduler.go:167 +0x7d

goroutine 103 [sync.Mutex.Lock]:
sync.runtime_SemacquireMutex(0xc0008bee80?, 0xad?, 0x1bfcce0?)
        runtime/sema.go:77 +0x26
sync.(*Mutex).lockSlow(0x2f40e80)
        sync/mutex.go:171 +0x165
sync.(*Mutex).Lock(...)
        sync/mutex.go:90
reflect.FuncOf({0xc0012f5a80, 0x2, 0xa565f0?}, {0x2f9ba78, 0x0, 0xa440d2?}, 0x0)
        reflect/type.go:2084 +0x54b
reflect.(*rtype).Method(0x1d00c20, 0x0)
        reflect/type.go:869 +0x4ca
github.com/dop251/goja.(*Runtime).buildMethodsInfo(0xc000820800, {0x21b16b0, 0x1d00c20})
        github.com/dop251/[email protected]/object_goreflect.go:634 +0x15c
github.com/dop251/goja.(*Runtime).methodsInfo(0xc000820800, {0x21b16b0, 0x1d00c20})
        github.com/dop251/[email protected]/object_goreflect.go:680 +0x5e
github.com/dop251/goja.(*objectGoReflect).init(0xc0008f01c0)
        github.com/dop251/[email protected]/object_goreflect.go:162 +0x62f
github.com/dop251/goja.(*Runtime).toValue(0xc000820800, {0x1d00c20?, 0x2cf2554?}, {0x0?, 0x0?, 0x6?})
        github.com/dop251/[email protected]/runtime.go:2005 +0x1b7f
github.com/dop251/goja.(*Runtime).ToValue(...)
        github.com/dop251/[email protected]/runtime.go:1821
github.com/dop251/goja.(*Object).Set.func1()
        github.com/dop251/[email protected]/value.go:880 +0x71
github.com/dop251/goja.(*vm).try(0xc000890a20, 0xc0008bf590)
        github.com/dop251/[email protected]/vm.go:811 +0x244
github.com/dop251/goja.(*Runtime).try(...)
        github.com/dop251/[email protected]/runtime.go:2596
github.com/dop251/goja.(*Object).Set(0x1d00c20?, {0x1b77480?, 0xc?}, {0x1d00c20?, 0x2cf2554?})
        github.com/dop251/[email protected]/value.go:879 +0x73
go.k6.io/k6/js.(*Bundle).Instantiate.func1({0x1b77480?, 0xc002516bf0?}, {0x1d00c20?, 0x2cf2554?})
        go.k6.io/[email protected]/js/bundle.go:253 +0x45
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/[email protected]/lib/options.go:562 +0x556
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc8b8?)
        go.k6.io/[email protected]/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x4, 0x4, 0xc0012a4960)
        go.k6.io/[email protected]/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc8bc?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c8c1?, 0x0?, 0xc8bd?)
        go.k6.io/[email protected]/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc8c1?, {0x21afaf0, 0xc000989030})
        go.k6.io/[email protected]/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/[email protected]/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/[email protected]/execution/scheduler.go:167 +0x7d

goroutine 105 [runnable]:
reflect.(*structType).FieldByNameFunc(0x1cbbfe0?, 0xc000f29300)
        reflect/type.go:1397 +0x447
reflect.(*structType).FieldByName(0x1d4b220, {0x1e24ab2, 0x5})
        reflect/type.go:1433 +0x27a
reflect.(*rtype).FieldByName(0x0?, {0x1e24ab2?, 0x57?})
        reflect/type.go:1003 +0x98
reflect.Value.FieldByName({0x1d4b220?, 0xc002f501a2?, 0x0?}, {0x1e24ab2?, 0x21b16b0?})
        reflect/value.go:1346 +0x9f
go.k6.io/k6/lib.Options.ForEachSpecified({{{0x0, 0x0}}, {{0x1, 0x0}}, {0x0, 0x0}, {{0x0, 0x0}}, {0x0, 0x0, ...}, ...}, ...)
        go.k6.io/[email protected]/lib/options.go:538 +0x3f8
go.k6.io/k6/js.(*Bundle).Instantiate(0xc0000e5340, {0x219d3d0?, 0xc00092df40}, 0xc71a?)
        go.k6.io/[email protected]/js/bundle.go:252 +0x518
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x8, 0x8, 0xc0012a4960)
        go.k6.io/[email protected]/js/runner.go:132 +0x65
go.k6.io/k6/js.(*Runner).NewVU(0xc723?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000c723?, 0x0?, 0xc724?)
        go.k6.io/[email protected]/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xc728?, {0x21afaf0, 0xc000989030})
        go.k6.io/[email protected]/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/[email protected]/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/[email protected]/execution/scheduler.go:167 +0x7d

goroutine 106 [runnable]:
go.k6.io/k6/lib.NewVUStateTags(...)
        go.k6.io/[email protected]/lib/vu_state.go:95
go.k6.io/k6/js.(*Runner).newVU(0xc001a77930, {0x219d3d0?, 0xc00092df40?}, 0x1, 0x1, 0xc0012a4960)
        go.k6.io/[email protected]/js/runner.go:247 +0x926
go.k6.io/k6/js.(*Runner).NewVU(0xcb23?, {0x219d3d0?, 0xc00092df40?}, 0x10000000000cb23?, 0x0?, 0xcb24?)
        go.k6.io/[email protected]/js/runner.go:120 +0x25
go.k6.io/k6/execution.(*Scheduler).initVU(0xc000988d20, {0x219d3d0, 0xc00092df40}, 0xcb28?, {0x21afaf0, 0xc000989030})
        go.k6.io/[email protected]/execution/scheduler.go:130 +0xa5
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func1()
        go.k6.io/[email protected]/execution/scheduler.go:169 +0xbb
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/[email protected]/execution/scheduler.go:167 +0x7d

goroutine 107 [select]:
go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently.func2()
        go.k6.io/[email protected]/execution/scheduler.go:181 +0x11b
created by go.k6.io/k6/execution.(*Scheduler).initVUsConcurrently
        go.k6.io/[email protected]/execution/scheduler.go:178 +0x20d

goroutine 38 [runnable]:
go.k6.io/k6/js.(*Bundle).instantiate.func2()
        go.k6.io/[email protected]/js/bundle.go:296 +0x86
created by go.k6.io/k6/js.(*Bundle).instantiate
        go.k6.io/[email protected]/js/bundle.go:295 +0x2ca

Code of Conduct

  • I agree to follow this project's Code of Conduct

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.