// 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(` GoEdge管理员系统
Example.com
`) 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(` GoEdge管理员系统
Example.com
`) 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 } }) }