Initial commit (code only without large binaries)
This commit is contained in:
107
EdgeNode/internal/js/lib_net_http_request_test.go
Normal file
107
EdgeNode/internal/js/lib_net_http_request_test.go
Normal file
@@ -0,0 +1,107 @@
|
||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
||||
//go:build script
|
||||
// +build script
|
||||
|
||||
package js_test
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeNode/internal/js"
|
||||
"github.com/iwind/TeaGo/types"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestJSNetHTTPRequestLibrary(t *testing.T) {
|
||||
isolate, err := js.NewIsolateWithContexts(1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer isolate.Dispose()
|
||||
|
||||
ctx, err := isolate.GetContext()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
var before = time.Now()
|
||||
defer func() {
|
||||
t.Log(time.Since(before).Seconds()*1000, "ms")
|
||||
}()
|
||||
|
||||
js.SharedJSConsoleLogLibrary.JSSetTesting(t)
|
||||
|
||||
var req = &FakeRequest{}
|
||||
req.host = "example.com"
|
||||
req.remoteAddr = "192.168.1.100"
|
||||
var objId = ctx.AddGoObject(req)
|
||||
defer isolate.PutContext(ctx)
|
||||
|
||||
v, err := ctx.Run(`
|
||||
let req = new gojs.net.http.Request()
|
||||
req.setGoObject(`+types.String(objId)+`)
|
||||
|
||||
// user codes
|
||||
console.log("url:", req.url)
|
||||
console.log("host:", req.host)
|
||||
console.log("remoteAddr:", req.remoteAddr)
|
||||
console.log("rawRemoteAddr:", req.rawRemoteAddr)
|
||||
console.log("remotePort:", req.remotePort)
|
||||
console.log("method:", req.method)
|
||||
console.log("contentLength:", req.contentLength)
|
||||
console.log("transferEncoding:", req.transferEncoding)
|
||||
console.log("proto", req.proto)
|
||||
console.log("protoMajor:", req.protoMajor)
|
||||
console.log("protoMinor", req.protoMinor)
|
||||
|
||||
req.setHeader("Server", "goedge/1.0")
|
||||
req.setHeader("Hello", "World")
|
||||
req.setHeader("Hello-Deleted", "World")
|
||||
req.setHeader("Content-Length", [1024])
|
||||
req.setHeader("Set-Cookie", ["a=1", "b=2"])
|
||||
req.deleteHeader("Hello-Deleted")
|
||||
console.log("header", req.header)
|
||||
|
||||
req.setAttr("a", "b")
|
||||
req.setVar("a", "b")
|
||||
req.done()
|
||||
`, "req.js")
|
||||
if err != nil {
|
||||
t.Fatal(ctx.WrapJSErr(err))
|
||||
}
|
||||
_ = v
|
||||
}
|
||||
|
||||
func BenchmarkHTTPRequestLibrary(b *testing.B) {
|
||||
isolate, err := js.NewIsolateWithContexts(128)
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
defer isolate.Dispose()
|
||||
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
func() {
|
||||
ctx, err := isolate.GetContext()
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
defer isolate.PutContext(ctx)
|
||||
|
||||
var req = &FakeRequest{}
|
||||
req.host = "example.com"
|
||||
var objId = ctx.AddGoObject(req)
|
||||
|
||||
_, err = ctx.Run(`{
|
||||
let req = new gojs.net.http.Request()
|
||||
req.setGoObject(`+types.String(objId)+`)
|
||||
|
||||
// user codes
|
||||
req.host
|
||||
}`, "")
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user