mirror of
https://github.com/alibaba/higress.git
synced 2026-02-28 06:30:49 +08:00
fix disableOnEtagHeader can't work in configmap gzip envoyfiler (#731)
This commit is contained in:
@@ -15,7 +15,6 @@
|
||||
package configmap
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"reflect"
|
||||
@@ -130,12 +129,17 @@ func compareGzip(old *Gzip, new *Gzip) (Result, error) {
|
||||
|
||||
func deepCopyGzip(gzip *Gzip) (*Gzip, error) {
|
||||
newGzip := NewDefaultGzip()
|
||||
bytes, err := json.Marshal(gzip)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = json.Unmarshal(bytes, newGzip)
|
||||
return newGzip, err
|
||||
newGzip.Enable = gzip.Enable
|
||||
newGzip.MinContentLength = gzip.MinContentLength
|
||||
newGzip.ContentType = make([]string, 0, len(gzip.ContentType))
|
||||
newGzip.ContentType = append(newGzip.ContentType, gzip.ContentType...)
|
||||
newGzip.DisableOnEtagHeader = gzip.DisableOnEtagHeader
|
||||
newGzip.MemoryLevel = gzip.MemoryLevel
|
||||
newGzip.WindowBits = gzip.WindowBits
|
||||
newGzip.ChunkSize = gzip.ChunkSize
|
||||
newGzip.CompressionLevel = gzip.CompressionLevel
|
||||
newGzip.CompressionStrategy = gzip.CompressionStrategy
|
||||
return newGzip, nil
|
||||
}
|
||||
|
||||
func NewDefaultGzip() *Gzip {
|
||||
@@ -305,9 +309,9 @@ func (g *GzipController) constructGzipStruct(gzip *Gzip, namespace string) strin
|
||||
"response_direction_config": {
|
||||
"common_config": {
|
||||
"min_content_length": %d,
|
||||
"content_type": [%s],
|
||||
"disable_on_etag_header": %t
|
||||
}
|
||||
"content_type": [%s]
|
||||
},
|
||||
"disable_on_etag_header": %t
|
||||
},
|
||||
"request_direction_config": {
|
||||
"common_config": {
|
||||
|
||||
@@ -277,27 +277,54 @@ func Test_deepCopyGzip(t *testing.T) {
|
||||
wantErr error
|
||||
}{
|
||||
{
|
||||
name: "deep copy",
|
||||
name: "deep copy case 1",
|
||||
gzip: &Gzip{
|
||||
Enable: false,
|
||||
MinContentLength: 1024,
|
||||
ContentType: []string{"text/html", "text/css", "text/plain", "text/xml", "application/json", "application/javascript", "application/xhtml+xml", "image/svg+xml"},
|
||||
DisableOnEtagHeader: true,
|
||||
MemoryLevel: 5,
|
||||
WindowBits: 12,
|
||||
MinContentLength: 102,
|
||||
ContentType: []string{"text/css", "text/plain", "text/xml", "application/json", "application/javascript", "application/xhtml+xml", "image/svg+xml"},
|
||||
DisableOnEtagHeader: false,
|
||||
MemoryLevel: 6,
|
||||
WindowBits: 11,
|
||||
ChunkSize: 4096,
|
||||
CompressionLevel: "BEST_COMPRESSION",
|
||||
CompressionLevel: "BEST_SPEED",
|
||||
CompressionStrategy: "DEFAULT_STRATEGY",
|
||||
},
|
||||
wantGzip: &Gzip{
|
||||
Enable: false,
|
||||
MinContentLength: 1024,
|
||||
ContentType: []string{"text/html", "text/css", "text/plain", "text/xml", "application/json", "application/javascript", "application/xhtml+xml", "image/svg+xml"},
|
||||
DisableOnEtagHeader: true,
|
||||
MemoryLevel: 5,
|
||||
WindowBits: 12,
|
||||
MinContentLength: 102,
|
||||
ContentType: []string{"text/css", "text/plain", "text/xml", "application/json", "application/javascript", "application/xhtml+xml", "image/svg+xml"},
|
||||
DisableOnEtagHeader: false,
|
||||
MemoryLevel: 6,
|
||||
WindowBits: 11,
|
||||
ChunkSize: 4096,
|
||||
CompressionLevel: "BEST_COMPRESSION",
|
||||
CompressionLevel: "BEST_SPEED",
|
||||
CompressionStrategy: "DEFAULT_STRATEGY",
|
||||
},
|
||||
wantErr: nil,
|
||||
},
|
||||
|
||||
{
|
||||
name: "deep copy case 2",
|
||||
gzip: &Gzip{
|
||||
Enable: true,
|
||||
MinContentLength: 102,
|
||||
ContentType: []string{"text/css", "text/plain", "text/xml", "application/json", "application/javascript", "application/xhtml+xml", "image/svg+xml"},
|
||||
DisableOnEtagHeader: true,
|
||||
MemoryLevel: 6,
|
||||
WindowBits: 11,
|
||||
ChunkSize: 4096,
|
||||
CompressionLevel: "BEST_SPEED",
|
||||
CompressionStrategy: "DEFAULT_STRATEGY",
|
||||
},
|
||||
wantGzip: &Gzip{
|
||||
Enable: true,
|
||||
MinContentLength: 102,
|
||||
ContentType: []string{"text/css", "text/plain", "text/xml", "application/json", "application/javascript", "application/xhtml+xml", "image/svg+xml"},
|
||||
DisableOnEtagHeader: true,
|
||||
MemoryLevel: 6,
|
||||
WindowBits: 11,
|
||||
ChunkSize: 4096,
|
||||
CompressionLevel: "BEST_SPEED",
|
||||
CompressionStrategy: "DEFAULT_STRATEGY",
|
||||
},
|
||||
wantErr: nil,
|
||||
|
||||
Reference in New Issue
Block a user