mirror of https://github.com/docker/docs.git
				
				
				
			Merge pull request #23046 from mountkin/fix-23045
fix flaky test TestImportFileWithMessage
This commit is contained in:
		
						commit
						0b5e84cc8d
					
				| 
						 | 
					@ -48,13 +48,18 @@ func (l *MalformedHostHeaderOverrideConn) Read(b []byte) (n int, err error) {
 | 
				
			||||||
			firstLineFeed = -1
 | 
								firstLineFeed = -1
 | 
				
			||||||
			buf           []byte
 | 
								buf           []byte
 | 
				
			||||||
		)
 | 
							)
 | 
				
			||||||
		for i, bb := range b[:c] {
 | 
							for i := 0; i <= c-1-7; i++ {
 | 
				
			||||||
			if bb == '\n' && firstLineFeed == -1 {
 | 
								if b[i] == '\n' && firstLineFeed == -1 {
 | 
				
			||||||
				firstLineFeed = i
 | 
									firstLineFeed = i
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if bb != '\n' {
 | 
								if b[i] != '\n' {
 | 
				
			||||||
				continue
 | 
									continue
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if b[i+1] == '\r' && b[i+2] == '\n' {
 | 
				
			||||||
 | 
									return c, nil
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if b[i+1] != 'H' {
 | 
								if b[i+1] != 'H' {
 | 
				
			||||||
				continue
 | 
									continue
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,8 +10,16 @@ import (
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type bufConn struct {
 | 
				
			||||||
 | 
						net.Conn
 | 
				
			||||||
 | 
						buf *bytes.Buffer
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (bc *bufConn) Read(b []byte) (int, error) {
 | 
				
			||||||
 | 
						return bc.buf.Read(b)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestHeaderOverrideHack(t *testing.T) {
 | 
					func TestHeaderOverrideHack(t *testing.T) {
 | 
				
			||||||
	client, srv := net.Pipe()
 | 
					 | 
				
			||||||
	tests := [][2][]byte{
 | 
						tests := [][2][]byte{
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			[]byte("GET /foo\nHost: /var/run/docker.sock\nUser-Agent: Docker\r\n\r\n"),
 | 
								[]byte("GET /foo\nHost: /var/run/docker.sock\nUser-Agent: Docker\r\n\r\n"),
 | 
				
			||||||
| 
						 | 
					@ -34,13 +42,19 @@ func TestHeaderOverrideHack(t *testing.T) {
 | 
				
			||||||
			[]byte("GET /foo\nFoo: Bar\nHost: /var/run/docker.sock\nUser-Agent: Docker\r\n\r\n"),
 | 
								[]byte("GET /foo\nFoo: Bar\nHost: /var/run/docker.sock\nUser-Agent: Docker\r\n\r\n"),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	l := MalformedHostHeaderOverrideConn{client, true}
 | 
					
 | 
				
			||||||
	read := make([]byte, 4096)
 | 
						// Test for https://github.com/docker/docker/issues/23045
 | 
				
			||||||
 | 
						h0 := "GET /foo\nUser-Agent: Docker\r\n\r\n"
 | 
				
			||||||
 | 
						h0 = h0 + strings.Repeat("a", 4096-len(h0)-1) + "\n"
 | 
				
			||||||
 | 
						tests = append(tests, [2][]byte{[]byte(h0), []byte(h0)})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, pair := range tests {
 | 
						for _, pair := range tests {
 | 
				
			||||||
		go func(x []byte) {
 | 
							read := make([]byte, 4096)
 | 
				
			||||||
			srv.Write(x)
 | 
							client := &bufConn{
 | 
				
			||||||
		}(pair[0])
 | 
								buf: bytes.NewBuffer(pair[0]),
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							l := MalformedHostHeaderOverrideConn{client, true}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		n, err := l.Read(read)
 | 
							n, err := l.Read(read)
 | 
				
			||||||
		if err != nil && err != io.EOF {
 | 
							if err != nil && err != io.EOF {
 | 
				
			||||||
			t.Fatalf("read: %d - %d, err: %v\n%s", n, len(pair[0]), err, string(read[:n]))
 | 
								t.Fatalf("read: %d - %d, err: %v\n%s", n, len(pair[0]), err, string(read[:n]))
 | 
				
			||||||
| 
						 | 
					@ -48,12 +62,7 @@ func TestHeaderOverrideHack(t *testing.T) {
 | 
				
			||||||
		if !bytes.Equal(read[:n], pair[1][:n]) {
 | 
							if !bytes.Equal(read[:n], pair[1][:n]) {
 | 
				
			||||||
			t.Fatalf("\n%s\n%s\n", read[:n], pair[1][:n])
 | 
								t.Fatalf("\n%s\n%s\n", read[:n], pair[1][:n])
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		l.first = true
 | 
					 | 
				
			||||||
		// clean out the slice
 | 
					 | 
				
			||||||
		read = read[:0]
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	srv.Close()
 | 
					 | 
				
			||||||
	l.Close()
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func BenchmarkWithHack(b *testing.B) {
 | 
					func BenchmarkWithHack(b *testing.B) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue