Skip to content

Commit

Permalink
Merge pull request #18 from marten-seemann/fix-encoder-reuse-in-integ…
Browse files Browse the repository at this point in the history
…ration-tests

don't reuse the encoder in the integration tests
  • Loading branch information
marten-seemann authored Aug 8, 2020
2 parents f89b93a + ae9d209 commit 844f320
Showing 1 changed file with 22 additions and 26 deletions.
48 changes: 22 additions & 26 deletions integrationtests/self/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,10 @@ import (
)

var _ = Describe("Self Tests", func() {
var (
// for the encoder
output *bytes.Buffer
encoder *qpack.Encoder
// for the decoder
headerFields []qpack.HeaderField
decoder *qpack.Decoder
)

BeforeEach(func() {
output = &bytes.Buffer{}
encoder = qpack.NewEncoder(output)
headerFields = nil
decoder = qpack.NewDecoder(func(hf qpack.HeaderField) {
headerFields = append(headerFields, hf)
})
})
getEncoder := func() (*qpack.Encoder, *bytes.Buffer) {
output := &bytes.Buffer{}
return qpack.NewEncoder(output), output
}

randomString := func(l int) string {
const charset = "abcdefghijklmnopqrstuvwxyz" +
Expand All @@ -45,8 +32,9 @@ var _ = Describe("Self Tests", func() {
Name: randomString(15),
Value: randomString(15),
}
encoder, output := getEncoder()
Expect(encoder.WriteField(hf)).To(Succeed())
_, err := decoder.Write(output.Bytes())
headerFields, err := qpack.NewDecoder(nil).DecodeFull(output.Bytes())
Expect(err).ToNot(HaveOccurred())
Expect(headerFields).To(Equal([]qpack.HeaderField{hf}))
})
Expand All @@ -57,10 +45,11 @@ var _ = Describe("Self Tests", func() {
{Name: "lorem", Value: "ipsum"},
{Name: randomString(15), Value: randomString(20)},
}
encoder, output := getEncoder()
for _, hf := range hfs {
Expect(encoder.WriteField(hf)).To(Succeed())
}
_, err := decoder.Write(output.Bytes())
headerFields, err := qpack.NewDecoder(nil).DecodeFull(output.Bytes())
Expect(err).ToNot(HaveOccurred())
Expect(headerFields).To(Equal(hfs))
})
Expand All @@ -71,6 +60,7 @@ var _ = Describe("Self Tests", func() {
{Name: "lorem", Value: "ipsum"},
{Name: randomString(15), Value: randomString(20)},
}
encoder, output := getEncoder()
for _, hf := range hfs1 {
Expect(encoder.WriteField(hf)).To(Succeed())
}
Expand All @@ -81,6 +71,8 @@ var _ = Describe("Self Tests", func() {
}
req2 := append([]byte{}, output.Bytes()...)

var headerFields []qpack.HeaderField
decoder := qpack.NewDecoder(func(hf qpack.HeaderField) { headerFields = append(headerFields, hf) })
_, err := decoder.Write(req1)
Expect(err).ToNot(HaveOccurred())
Expect(headerFields).To(Equal(hfs1))
Expand All @@ -105,10 +97,10 @@ var _ = Describe("Self Tests", func() {
}

check := func(encoded []byte, hf qpack.HeaderField) {
hfs, err := decoder.DecodeFull(encoded)
headerFields, err := qpack.NewDecoder(nil).DecodeFull(encoded)
ExpectWithOffset(1, err).ToNot(HaveOccurred())
Expect(hfs).To(HaveLen(1))
Expect(hfs[0]).To(Equal(hf))
ExpectWithOffset(1, headerFields).To(HaveLen(1))
ExpectWithOffset(1, headerFields[0]).To(Equal(hf))
}

// use an entry with a value, for example "set-cookie"
Expand All @@ -120,10 +112,11 @@ var _ = Describe("Self Tests", func() {
break
}
}
encoder, output := getEncoder()
Expect(encoder.WriteField(hf)).To(Succeed())
encodedLen := output.Len()
check(output.Bytes(), hf)
output.Reset()
encoder, output = getEncoder()
oldName := hf.Name
hf.Name = replaceRandomCharacter(hf.Name)
Expect(encoder.WriteField(hf)).To(Succeed())
Expand All @@ -144,10 +137,11 @@ var _ = Describe("Self Tests", func() {
break
}
}
encoder, output := getEncoder()
Expect(encoder.WriteField(hf)).To(Succeed())
encodedLen := output.Len()
check(output.Bytes(), hf)
output.Reset()
encoder, output = getEncoder()
oldName := hf.Name
hf.Name = replaceRandomCharacter(hf.Name)
Expect(encoder.WriteField(hf)).To(Succeed())
Expand All @@ -172,10 +166,11 @@ var _ = Describe("Self Tests", func() {
break
}
}
encoder, output := getEncoder()
Expect(encoder.WriteField(hf)).To(Succeed())
encodedLen := output.Len()
check(output.Bytes(), hf)
output.Reset()
encoder, output = getEncoder()
oldName := hf.Name
hf.Name = replaceRandomCharacter(hf.Name)
Expect(encoder.WriteField(hf)).To(Succeed())
Expand All @@ -196,10 +191,11 @@ var _ = Describe("Self Tests", func() {
break
}
}
encoder, output := getEncoder()
Expect(encoder.WriteField(hf)).To(Succeed())
encodedLen := output.Len()
check(output.Bytes(), hf)
output.Reset()
encoder, output = getEncoder()
oldValue := hf.Value
hf.Value = replaceRandomCharacter(hf.Value)
Expect(encoder.WriteField(hf)).To(Succeed())
Expand Down

0 comments on commit 844f320

Please sign in to comment.