refactor(sessionresolver): adapt to changing network conditions (#238)
* feat(sessionresolver): try many and use what works * fix(sessionresolver): make sure we can use quic * fix: the config struct is unnecessary * fix: make kvstore optional * feat: write simple integration test * feat: start adding tests * feat: continue writing tests * fix(sessionresolver): add more unit tests * fix(sessionresolver): finish adding tests * refactor(sessionresolver): changes after code review
This commit is contained in:
parent
12e1164940
commit
034db78f94
19 changed files with 1260 additions and 66 deletions
48
internal/engine/internal/sessionresolver/codec_test.go
Normal file
48
internal/engine/internal/sessionresolver/codec_test.go
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
package sessionresolver
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
)
|
||||
|
||||
type FakeCodec struct {
|
||||
EncodeData []byte
|
||||
EncodeErr error
|
||||
DecodeErr error
|
||||
}
|
||||
|
||||
func (c *FakeCodec) Encode(v interface{}) ([]byte, error) {
|
||||
return c.EncodeData, c.EncodeErr
|
||||
}
|
||||
|
||||
func (c *FakeCodec) Decode(b []byte, v interface{}) error {
|
||||
return c.DecodeErr
|
||||
}
|
||||
|
||||
func TestCodecCustom(t *testing.T) {
|
||||
c := &FakeCodec{}
|
||||
reso := &Resolver{codec: c}
|
||||
if r := reso.getCodec(); r != c {
|
||||
t.Fatal("not the codec we expected")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCodecDefault(t *testing.T) {
|
||||
reso := &Resolver{}
|
||||
in := resolverinfo{
|
||||
URL: "https://dns.google/dns.query",
|
||||
Score: 0.99,
|
||||
}
|
||||
data, err := reso.getCodec().Encode(in)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var out resolverinfo
|
||||
if err := reso.getCodec().Decode(data, &out); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if diff := cmp.Diff(in, out); diff != "" {
|
||||
t.Fatal(diff)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue