Add max_container_log_size
Signed-off-by: Lantao Liu <lantaol@google.com>
This commit is contained in:
@@ -31,15 +31,19 @@ import (
|
||||
)
|
||||
|
||||
func TestRedirectLogs(t *testing.T) {
|
||||
// defaultBufSize is even number
|
||||
const maxLen = defaultBufSize * 4
|
||||
for desc, test := range map[string]struct {
|
||||
input string
|
||||
stream StreamType
|
||||
maxLen int
|
||||
tag []runtime.LogTag
|
||||
content []string
|
||||
}{
|
||||
"stdout log": {
|
||||
input: "test stdout log 1\ntest stdout log 2",
|
||||
input: "test stdout log 1\ntest stdout log 2\n",
|
||||
stream: Stdout,
|
||||
maxLen: maxLen,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagFull,
|
||||
@@ -50,8 +54,9 @@ func TestRedirectLogs(t *testing.T) {
|
||||
},
|
||||
},
|
||||
"stderr log": {
|
||||
input: "test stderr log 1\ntest stderr log 2",
|
||||
input: "test stderr log 1\ntest stderr log 2\n",
|
||||
stream: Stderr,
|
||||
maxLen: maxLen,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagFull,
|
||||
@@ -61,18 +66,160 @@ func TestRedirectLogs(t *testing.T) {
|
||||
"test stderr log 2",
|
||||
},
|
||||
},
|
||||
"long log": {
|
||||
input: strings.Repeat("a", 2*bufSize+10) + "\n",
|
||||
stream: Stdout,
|
||||
"log ends without newline": {
|
||||
input: "test stderr log 1\ntest stderr log 2",
|
||||
stream: Stderr,
|
||||
maxLen: maxLen,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagFull,
|
||||
},
|
||||
content: []string{
|
||||
"test stderr log 1",
|
||||
"test stderr log 2",
|
||||
},
|
||||
},
|
||||
"log length equal to buffer size": {
|
||||
input: strings.Repeat("a", defaultBufSize) + "\n" + strings.Repeat("a", defaultBufSize) + "\n",
|
||||
stream: Stdout,
|
||||
maxLen: maxLen,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagFull,
|
||||
},
|
||||
content: []string{
|
||||
strings.Repeat("a", defaultBufSize),
|
||||
strings.Repeat("a", defaultBufSize),
|
||||
},
|
||||
},
|
||||
"log length longer than buffer size": {
|
||||
input: strings.Repeat("a", defaultBufSize*2+10) + "\n" + strings.Repeat("a", defaultBufSize*2+20) + "\n",
|
||||
stream: Stdout,
|
||||
maxLen: maxLen,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagFull,
|
||||
},
|
||||
content: []string{
|
||||
strings.Repeat("a", defaultBufSize*2+10),
|
||||
strings.Repeat("a", defaultBufSize*2+20),
|
||||
},
|
||||
},
|
||||
"log length equal to max length": {
|
||||
input: strings.Repeat("a", maxLen) + "\n" + strings.Repeat("a", maxLen) + "\n",
|
||||
stream: Stdout,
|
||||
maxLen: maxLen,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagFull,
|
||||
},
|
||||
content: []string{
|
||||
strings.Repeat("a", maxLen),
|
||||
strings.Repeat("a", maxLen),
|
||||
},
|
||||
},
|
||||
"log length exceed max length by 1": {
|
||||
input: strings.Repeat("a", maxLen+1) + "\n" + strings.Repeat("a", maxLen+1) + "\n",
|
||||
stream: Stdout,
|
||||
maxLen: maxLen,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagFull,
|
||||
},
|
||||
content: []string{
|
||||
strings.Repeat("a", maxLen),
|
||||
"a",
|
||||
strings.Repeat("a", maxLen),
|
||||
"a",
|
||||
},
|
||||
},
|
||||
"log length longer than max length": {
|
||||
input: strings.Repeat("a", maxLen*2) + "\n" + strings.Repeat("a", maxLen*2+1) + "\n",
|
||||
stream: Stdout,
|
||||
maxLen: maxLen,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagFull,
|
||||
},
|
||||
content: []string{
|
||||
strings.Repeat("a", bufSize),
|
||||
strings.Repeat("a", bufSize),
|
||||
strings.Repeat("a", maxLen),
|
||||
strings.Repeat("a", maxLen),
|
||||
strings.Repeat("a", maxLen),
|
||||
strings.Repeat("a", maxLen),
|
||||
"a",
|
||||
},
|
||||
},
|
||||
"max length shorter than buffer size": {
|
||||
input: strings.Repeat("a", defaultBufSize*3/2+10) + "\n" + strings.Repeat("a", defaultBufSize*3/2+20) + "\n",
|
||||
stream: Stdout,
|
||||
maxLen: defaultBufSize / 2,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagFull,
|
||||
},
|
||||
content: []string{
|
||||
strings.Repeat("a", defaultBufSize*1/2),
|
||||
strings.Repeat("a", defaultBufSize*1/2),
|
||||
strings.Repeat("a", defaultBufSize*1/2),
|
||||
strings.Repeat("a", 10),
|
||||
strings.Repeat("a", defaultBufSize*1/2),
|
||||
strings.Repeat("a", defaultBufSize*1/2),
|
||||
strings.Repeat("a", defaultBufSize*1/2),
|
||||
strings.Repeat("a", 20),
|
||||
},
|
||||
},
|
||||
"log length longer than max length, and (maxLen % defaultBufSize != 0)": {
|
||||
input: strings.Repeat("a", defaultBufSize*2+10) + "\n" + strings.Repeat("a", defaultBufSize*2+20) + "\n",
|
||||
stream: Stdout,
|
||||
maxLen: defaultBufSize * 3 / 2,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagPartial,
|
||||
runtime.LogTagFull,
|
||||
},
|
||||
content: []string{
|
||||
strings.Repeat("a", defaultBufSize*3/2),
|
||||
strings.Repeat("a", defaultBufSize*1/2+10),
|
||||
strings.Repeat("a", defaultBufSize*3/2),
|
||||
strings.Repeat("a", defaultBufSize*1/2+20),
|
||||
},
|
||||
},
|
||||
"no limit if max length is 0": {
|
||||
input: strings.Repeat("a", defaultBufSize*10+10) + "\n" + strings.Repeat("a", defaultBufSize*10+20) + "\n",
|
||||
stream: Stdout,
|
||||
maxLen: 0,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagFull,
|
||||
},
|
||||
content: []string{
|
||||
strings.Repeat("a", defaultBufSize*10+10),
|
||||
strings.Repeat("a", defaultBufSize*10+20),
|
||||
},
|
||||
},
|
||||
"no limit if max length is negative": {
|
||||
input: strings.Repeat("a", defaultBufSize*10+10) + "\n" + strings.Repeat("a", defaultBufSize*10+20) + "\n",
|
||||
stream: Stdout,
|
||||
maxLen: -1,
|
||||
tag: []runtime.LogTag{
|
||||
runtime.LogTagFull,
|
||||
runtime.LogTagFull,
|
||||
},
|
||||
content: []string{
|
||||
strings.Repeat("a", defaultBufSize*10+10),
|
||||
strings.Repeat("a", defaultBufSize*10+20),
|
||||
},
|
||||
},
|
||||
} {
|
||||
@@ -80,7 +227,7 @@ func TestRedirectLogs(t *testing.T) {
|
||||
rc := ioutil.NopCloser(strings.NewReader(test.input))
|
||||
buf := bytes.NewBuffer(nil)
|
||||
wc := cioutil.NewNopWriteCloser(buf)
|
||||
redirectLogs("test-path", rc, wc, test.stream)
|
||||
redirectLogs("test-path", rc, wc, test.stream, test.maxLen)
|
||||
output := buf.String()
|
||||
lines := strings.Split(output, "\n")
|
||||
lines = lines[:len(lines)-1] // Discard empty string after last \n
|
||||
|
||||
Reference in New Issue
Block a user