Initial commit (code only without large binaries)
This commit is contained in:
186
EdgeNode/internal/utils/minifiers/minify_plus_test.go
Normal file
186
EdgeNode/internal/utils/minifiers/minify_plus_test.go
Normal file
@@ -0,0 +1,186 @@
|
||||
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
|
||||
//go:build plus
|
||||
|
||||
package minifiers_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
|
||||
"github.com/TeaOSLab/EdgeNode/internal/utils/minifiers"
|
||||
"io"
|
||||
"net/http"
|
||||
"runtime"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMinifyResponse_HTML(t *testing.T) {
|
||||
var resp = &http.Response{
|
||||
Header: map[string][]string{
|
||||
"Content-Type": []string{"text/html"},
|
||||
},
|
||||
}
|
||||
var s = []byte(`
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<title>GoEdge管理员系统</title>
|
||||
<meta charset="UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div>
|
||||
<a href="https://example.com">Example.com</a>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>`)
|
||||
resp.ContentLength = int64(len(s))
|
||||
resp.Body = io.NopCloser(bytes.NewReader(s))
|
||||
|
||||
var config = &serverconfigs.HTTPPageOptimizationConfig{}
|
||||
config.HTML = &serverconfigs.HTTPHTMLOptimizationConfig{
|
||||
IsOn: true,
|
||||
}
|
||||
err := config.Init()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log("isOn:", config.IsOn())
|
||||
|
||||
err = minifiers.MinifyResponse(config, "", resp)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
data, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(string(data))
|
||||
}
|
||||
|
||||
func TestMinifyResponse_Javascript(t *testing.T) {
|
||||
var resp = &http.Response{
|
||||
Header: map[string][]string{
|
||||
"Content-Type": []string{"text/javascript"},
|
||||
},
|
||||
}
|
||||
var s = []byte(`(function () {
|
||||
function sayHello(name) {
|
||||
console.log("Hello, ", name)
|
||||
}
|
||||
|
||||
sayHello("lily")
|
||||
})()`)
|
||||
resp.ContentLength = int64(len(s))
|
||||
resp.Body = io.NopCloser(bytes.NewReader(s))
|
||||
|
||||
var config = &serverconfigs.HTTPPageOptimizationConfig{}
|
||||
config.Javascript = &serverconfigs.HTTPJavascriptOptimizationConfig{
|
||||
IsOn: true,
|
||||
}
|
||||
err := config.Init()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log("isOn:", config.IsOn())
|
||||
|
||||
err = minifiers.MinifyResponse(config, "", resp)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
data, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(string(data))
|
||||
}
|
||||
|
||||
func TestMinifyResponse_CSS(t *testing.T) {
|
||||
var resp = &http.Response{
|
||||
Header: map[string][]string{
|
||||
"Content-Type": []string{"text/css"},
|
||||
},
|
||||
}
|
||||
var s = []byte(`
|
||||
form {
|
||||
margin: 10em auto;
|
||||
text-align: center;
|
||||
}`)
|
||||
resp.ContentLength = int64(len(s))
|
||||
resp.Body = io.NopCloser(bytes.NewReader(s))
|
||||
|
||||
var config = &serverconfigs.HTTPPageOptimizationConfig{}
|
||||
config.CSS = &serverconfigs.HTTPCSSOptimizationConfig{
|
||||
IsOn: true,
|
||||
}
|
||||
err := config.Init()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log("isOn:", config.IsOn())
|
||||
|
||||
err = minifiers.MinifyResponse(config, "", resp)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
data, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Log(string(data))
|
||||
}
|
||||
|
||||
func BenchmarkMinifyResponse(b *testing.B) {
|
||||
runtime.GOMAXPROCS(4)
|
||||
|
||||
var config = &serverconfigs.HTTPPageOptimizationConfig{}
|
||||
config.HTML = &serverconfigs.HTTPHTMLOptimizationConfig{
|
||||
IsOn: true,
|
||||
}
|
||||
err := config.Init()
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
b.ResetTimer()
|
||||
|
||||
b.RunParallel(func(pb *testing.PB) {
|
||||
for pb.Next() {
|
||||
var resp = &http.Response{
|
||||
Header: map[string][]string{
|
||||
"Content-Type": []string{"text/html"},
|
||||
},
|
||||
}
|
||||
var s = []byte(`
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<title>GoEdge管理员系统</title>
|
||||
<meta charset="UTF-8"/>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div>
|
||||
<a href="https://example.com">Example.com</a>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>`)
|
||||
resp.ContentLength = int64(len(s))
|
||||
resp.Body = io.NopCloser(bytes.NewReader(s))
|
||||
|
||||
err = minifiers.MinifyResponse(config, "", resp)
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
|
||||
data, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
_ = data
|
||||
}
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user