mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-11-04 05:00:24 +08:00
129 lines
2.1 KiB
Go
129 lines
2.1 KiB
Go
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)
|
|
}
|