63 lines
1.9 KiB
Go
63 lines
1.9 KiB
Go
package app
|
|
|
|
import "testing"
|
|
|
|
func TestParseTransportConntrackLockLine(t *testing.T) {
|
|
line := "tcp 6 431999 ESTABLISHED src=10.0.0.2 dst=10.1.0.11 sport=12345 dport=443 src=10.1.0.11 dst=10.0.0.2 sport=443 dport=12345 [ASSURED] mark=0x120 use=1"
|
|
dst, mark, proto, ok := parseTransportConntrackLockLine(line)
|
|
if !ok {
|
|
t.Fatalf("expected line to parse")
|
|
}
|
|
if dst.String() != "10.1.0.11" {
|
|
t.Fatalf("unexpected dst: %s", dst.String())
|
|
}
|
|
if mark != 0x120 {
|
|
t.Fatalf("unexpected mark: %#x", mark)
|
|
}
|
|
if proto != "tcp" {
|
|
t.Fatalf("unexpected proto: %s", proto)
|
|
}
|
|
}
|
|
|
|
func TestParseTransportOwnerLocksFromConntrack(t *testing.T) {
|
|
raw := "" +
|
|
"tcp 6 431999 ESTABLISHED src=10.0.0.2 dst=10.1.0.11 sport=1 dport=2 mark=0x120 use=1\n" +
|
|
"udp 17 60 src=10.0.0.2 dst=10.1.0.12 sport=1 dport=2 mark=288 use=1\n" +
|
|
"udp 17 60 src=10.0.0.2 dst=10.9.0.12 sport=1 dport=2 mark=0x222 use=1\n"
|
|
markOwner := map[uint32]transportPolicyMarkOwner{
|
|
0x120: {
|
|
ClientID: "c1",
|
|
ClientKind: "singbox",
|
|
IfaceID: "edge-a",
|
|
MarkHex: "0x120",
|
|
},
|
|
}
|
|
st := parseTransportOwnerLocksFromConntrack(raw, markOwner, 13)
|
|
if st.PolicyRevision != 13 {
|
|
t.Fatalf("unexpected revision: %d", st.PolicyRevision)
|
|
}
|
|
if len(st.Items) != 2 {
|
|
t.Fatalf("expected 2 locks, got %d (%#v)", len(st.Items), st.Items)
|
|
}
|
|
for _, item := range st.Items {
|
|
if item.ClientID != "c1" {
|
|
t.Fatalf("unexpected client id: %q", item.ClientID)
|
|
}
|
|
if item.MarkHex != "0x120" {
|
|
t.Fatalf("unexpected mark hex: %q", item.MarkHex)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParseTransportConntrackMark(t *testing.T) {
|
|
if v, ok := parseTransportConntrackMark("0x120"); !ok || v != 0x120 {
|
|
t.Fatalf("hex mark parse failed: %v %v", v, ok)
|
|
}
|
|
if v, ok := parseTransportConntrackMark("288"); !ok || v != 288 {
|
|
t.Fatalf("dec mark parse failed: %v %v", v, ok)
|
|
}
|
|
if _, ok := parseTransportConntrackMark("bad"); ok {
|
|
t.Fatalf("expected parse error")
|
|
}
|
|
}
|