Files
waf-platform/EdgeNode/internal/utils/minifiers/minify_plus_test.go
2026-02-04 20:27:13 +08:00

187 lines
3.5 KiB
Go

// 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
}
})
}