add test case
parent
cc36d8a8af
commit
4b94b8218c
@ -0,0 +1,19 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestArgs(t *testing.T) {
|
||||
var a ArgSrvs
|
||||
|
||||
(&a).Set("aa")
|
||||
|
||||
if len(a) != 1 {
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
if a[0] != "aa" {
|
||||
t.Fail()
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestParseAddr(t *testing.T) {
|
||||
var err error
|
||||
var s1, s2 string
|
||||
s1, s2, err = parse_addr("udp:123.2.3.4:321")
|
||||
t.Logf("parse result %s, %s\n", s1, s2)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
s1, s2, err = parse_addr("tcp:123.2.3.4:321")
|
||||
t.Logf("parse result %s, %s\n", s1, s2)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
_, _, err = parse_addr("1.2.3.4:333")
|
||||
t.Log(err)
|
||||
if err == nil {
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
_, _, err = parse_addr("cc:1.2.3.4:33")
|
||||
t.Log(err)
|
||||
if err == nil {
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
_, _, err = parse_addr("tcp:1.2.3.4:33:33")
|
||||
t.Log(err)
|
||||
if err == nil {
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseServer(t *testing.T) {
|
||||
_, err := parse_server("aa.txt:tcp:1.2.3.4:32")
|
||||
t.Log(err)
|
||||
if err == nil {
|
||||
t.Fail()
|
||||
}
|
||||
sv, err := parse_server("noexists.txt,tcp:1.2.3.4:32")
|
||||
if err != nil {
|
||||
t.Log(err)
|
||||
t.Fail()
|
||||
}
|
||||
if sv.Addr != "1.2.3.4:32" {
|
||||
t.Fail()
|
||||
}
|
||||
if sv.Proto != "tcp" {
|
||||
t.Fail()
|
||||
}
|
||||
if sv.domains != nil {
|
||||
t.Fail()
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/miekg/dns"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestInblacklist(t *testing.T) {
|
||||
logger = NewLogger("", false)
|
||||
Blacklist_ips = Kv{"1.2.3.4": 1, "2.3.4.5": 1}
|
||||
test_ips := map[string]bool{
|
||||
"1.2.3.4": true,
|
||||
"2.3.4.5": true,
|
||||
"2.3.4.1": false,
|
||||
"1.2.4.3": false,
|
||||
}
|
||||
|
||||
for ip, r := range test_ips {
|
||||
msg := new(dns.Msg)
|
||||
s := fmt.Sprintf("example.com. IN A %s", ip)
|
||||
rr, err := dns.NewRR(s)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
msg.Answer = append(msg.Answer, rr)
|
||||
if in_blacklist(msg) != r {
|
||||
t.Errorf("%s must match in %v result\n", ip, r)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestServerMathNil(t *testing.T) {
|
||||
srv := UpstreamServer{} // initial with nil
|
||||
|
||||
domains := []string{"twitter.com", "google.com", "abc.com"}
|
||||
|
||||
for _, d := range domains {
|
||||
if srv.match(d) {
|
||||
t.Errorf("%s must match in false result\n", d)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestServerMatch(t *testing.T) {
|
||||
d := Kv{"twitter.com": 1, "google.com": 1}
|
||||
srv := UpstreamServer{domains: d}
|
||||
|
||||
test_domains := map[string]bool{
|
||||
"twitter.com": true,
|
||||
"pbs.twitter.com": true,
|
||||
"abc.pbs.twitter.com": true,
|
||||
"efg.abc.pbs.twitter.com": true,
|
||||
"google.com": true,
|
||||
"plus.google.com": true,
|
||||
"cc.plus.google.com": true,
|
||||
"dd.cc.plus.google.com": true,
|
||||
"twitter.abc.com": false,
|
||||
"twitter.com.aa.com": false,
|
||||
"google.com.cccc.com": false,
|
||||
"google.com.aeddasdfc3.com": false,
|
||||
}
|
||||
|
||||
for d, r := range test_domains {
|
||||
if srv.match(d) != r {
|
||||
t.Errorf("%s must match in %v result\n", d, r)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue