feat: configurable proxy buffer number

This commit is contained in:
Jim Zhang 2019-02-20 18:05:09 +08:00
parent d74dea7585
commit c92d29d462
8 changed files with 29 additions and 4 deletions

View file

@ -29,6 +29,7 @@ type Config struct {
ConnectTimeout int `json:"connectTimeout"`
SendTimeout int `json:"sendTimeout"`
ReadTimeout int `json:"readTimeout"`
BufferNumber int `json:"bufferNumber"`
BufferSize string `json:"bufferSize"`
CookieDomain string `json:"cookieDomain"`
CookiePath string `json:"cookiePath"`
@ -60,6 +61,9 @@ func (l1 *Config) Equal(l2 *Config) bool {
if l1.ReadTimeout != l2.ReadTimeout {
return false
}
if l1.BufferNumber != l2.BufferNumber {
return false
}
if l1.BufferSize != l2.BufferSize {
return false
}
@ -123,6 +127,11 @@ func (a proxy) Parse(ing *extensions.Ingress) (interface{}, error) {
config.ReadTimeout = defBackend.ProxyReadTimeout
}
config.BufferNumber, err = parser.GetIntAnnotation("proxy-buffer-number", ing)
if err != nil {
config.BufferNumber = defBackend.ProxyBufferNumber
}
config.BufferSize, err = parser.GetStringAnnotation("proxy-buffer-size", ing)
if err != nil {
config.BufferSize = defBackend.ProxyBufferSize

View file

@ -73,6 +73,7 @@ func (m mockBackend) GetDefaultBackend() defaults.Backend {
ProxyConnectTimeout: 10,
ProxySendTimeout: 15,
ProxyReadTimeout: 20,
ProxyBufferNumber: 4,
ProxyBufferSize: "10k",
ProxyBodySize: "3k",
ProxyNextUpstream: "error",
@ -89,6 +90,7 @@ func TestProxy(t *testing.T) {
data[parser.GetAnnotationWithPrefix("proxy-connect-timeout")] = "1"
data[parser.GetAnnotationWithPrefix("proxy-send-timeout")] = "2"
data[parser.GetAnnotationWithPrefix("proxy-read-timeout")] = "3"
data[parser.GetAnnotationWithPrefix("proxy-buffer-number")] = "8"
data[parser.GetAnnotationWithPrefix("proxy-buffer-size")] = "1k"
data[parser.GetAnnotationWithPrefix("proxy-body-size")] = "2k"
data[parser.GetAnnotationWithPrefix("proxy-next-upstream")] = "off"
@ -114,6 +116,9 @@ func TestProxy(t *testing.T) {
if p.ReadTimeout != 3 {
t.Errorf("expected 3 as read-timeout but returned %v", p.ReadTimeout)
}
if p.BufferNumber != 8 {
t.Errorf("expected 8 as proxy-buffer-number but returned %v", p.BufferNumber)
}
if p.BufferSize != "1k" {
t.Errorf("expected 1k as buffer-size but returned %v", p.BufferSize)
}
@ -157,6 +162,9 @@ func TestProxyWithNoAnnotation(t *testing.T) {
if p.ReadTimeout != 20 {
t.Errorf("expected 20 as read-timeout but returned %v", p.ReadTimeout)
}
if p.BufferNumber != 4 {
t.Errorf("expected 4 as buffer-number but returned %v", p.BufferNumber)
}
if p.BufferSize != "10k" {
t.Errorf("expected 10k as buffer-size but returned %v", p.BufferSize)
}