add test case

nghttp2
fangdingjun 9 years ago
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…
Cancel
Save