Initial commit (code only without large binaries)
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
package schedulingconfigs
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
|
||||
"github.com/iwind/TeaGo/maps"
|
||||
"net/http"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestStickyScheduling_NextArgument(t *testing.T) {
|
||||
s := &StickyScheduling{}
|
||||
s.Add(&TestCandidate{
|
||||
Name: "a",
|
||||
Weight: 1,
|
||||
})
|
||||
s.Add(&TestCandidate{
|
||||
Name: "b",
|
||||
Weight: 2,
|
||||
})
|
||||
s.Add(&TestCandidate{
|
||||
Name: "c",
|
||||
Weight: 3,
|
||||
})
|
||||
s.Add(&TestCandidate{
|
||||
Name: "d",
|
||||
Weight: 6,
|
||||
})
|
||||
s.Start()
|
||||
|
||||
t.Log(s.mapping)
|
||||
|
||||
req, err := http.NewRequest(http.MethodGet, "http://www.example.com/?origin=c", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
options := maps.Map{
|
||||
"type": "argument",
|
||||
"param": "origin",
|
||||
}
|
||||
call := shared.NewRequestCall()
|
||||
call.Request = req
|
||||
call.Options = options
|
||||
t.Log(s.Next(call))
|
||||
t.Log(options)
|
||||
}
|
||||
|
||||
func TestStickyScheduling_NextCookie(t *testing.T) {
|
||||
s := &StickyScheduling{}
|
||||
s.Add(&TestCandidate{
|
||||
Name: "a",
|
||||
Weight: 1,
|
||||
})
|
||||
s.Add(&TestCandidate{
|
||||
Name: "b",
|
||||
Weight: 2,
|
||||
})
|
||||
s.Add(&TestCandidate{
|
||||
Name: "c",
|
||||
Weight: 3,
|
||||
})
|
||||
s.Add(&TestCandidate{
|
||||
Name: "d",
|
||||
Weight: 6,
|
||||
})
|
||||
s.Start()
|
||||
|
||||
t.Log(s.mapping)
|
||||
|
||||
req, err := http.NewRequest(http.MethodGet, "http://www.example.com/?origin=c", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
req.AddCookie(&http.Cookie{
|
||||
Name: "origin",
|
||||
Value: "c",
|
||||
})
|
||||
|
||||
options := maps.Map{
|
||||
"type": "cookie",
|
||||
"param": "origin",
|
||||
}
|
||||
call := shared.NewRequestCall()
|
||||
call.Request = req
|
||||
call.Options = options
|
||||
t.Log(s.Next(call))
|
||||
t.Log(options)
|
||||
}
|
||||
|
||||
func TestStickyScheduling_NextHeader(t *testing.T) {
|
||||
s := &StickyScheduling{}
|
||||
s.Add(&TestCandidate{
|
||||
Name: "a",
|
||||
Weight: 1,
|
||||
})
|
||||
s.Add(&TestCandidate{
|
||||
Name: "b",
|
||||
Weight: 2,
|
||||
})
|
||||
s.Add(&TestCandidate{
|
||||
Name: "c",
|
||||
Weight: 3,
|
||||
})
|
||||
s.Add(&TestCandidate{
|
||||
Name: "d",
|
||||
Weight: 6,
|
||||
})
|
||||
s.Start()
|
||||
|
||||
t.Log(s.mapping)
|
||||
|
||||
req, err := http.NewRequest(http.MethodGet, "http://www.example.com/?origin=c", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
req.Header.Set("origin", "c")
|
||||
|
||||
options := maps.Map{
|
||||
"type": "header",
|
||||
"param": "origin",
|
||||
}
|
||||
call := shared.NewRequestCall()
|
||||
call.Request = req
|
||||
call.Options = options
|
||||
t.Log(s.Next(call))
|
||||
t.Log(options)
|
||||
}
|
||||
Reference in New Issue
Block a user