mirror of https://github.com/0xERR0R/blocky.git
Replace all sleeps in tests with "eventually" from gomega (#379)
This commit is contained in:
parent
44e3adaa93
commit
d7bf373b52
|
@ -85,11 +85,13 @@ var _ = Describe("ListCache", func() {
|
|||
"gr1": {s.URL},
|
||||
}
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 100*time.Millisecond, 3, time.Second)
|
||||
time.Sleep(time.Second)
|
||||
found, group := sut.Match("blocked1.com", []string{"gr1"})
|
||||
Expect(found).Should(BeTrue())
|
||||
Expect(group).Should(Equal("gr1"))
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 100*time.Millisecond, 3, time.Millisecond)
|
||||
Eventually(func(g Gomega) {
|
||||
found, group := sut.Match("blocked1.com", []string{"gr1"})
|
||||
g.Expect(found).Should(BeTrue())
|
||||
g.Expect(group).Should(Equal("gr1"))
|
||||
}, "1s").Should(Succeed())
|
||||
|
||||
})
|
||||
})
|
||||
When("a temporary err occurs on download", func() {
|
||||
|
@ -111,12 +113,14 @@ var _ = Describe("ListCache", func() {
|
|||
"gr1": {s.URL, emptyFile.Name()},
|
||||
}
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 4*time.Hour, 100*time.Millisecond, 3, time.Second)
|
||||
time.Sleep(time.Second)
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 4*time.Hour, 100*time.Millisecond, 3, time.Millisecond)
|
||||
By("Lists loaded without timeout", func() {
|
||||
found, group := sut.Match("blocked1.com", []string{"gr1"})
|
||||
Expect(found).Should(BeTrue())
|
||||
Expect(group).Should(Equal("gr1"))
|
||||
Eventually(func(g Gomega) {
|
||||
found, group := sut.Match("blocked1.com", []string{"gr1"})
|
||||
g.Expect(found).Should(BeTrue())
|
||||
g.Expect(group).Should(Equal("gr1"))
|
||||
}, "1s").Should(Succeed())
|
||||
|
||||
})
|
||||
|
||||
sut.Refresh()
|
||||
|
@ -147,20 +151,23 @@ var _ = Describe("ListCache", func() {
|
|||
"gr1": {s.URL},
|
||||
}
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 30*time.Second, 3, time.Second)
|
||||
time.Sleep(time.Second)
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 30*time.Second, 3, time.Millisecond)
|
||||
By("Lists loaded without err", func() {
|
||||
found, group := sut.Match("blocked1.com", []string{"gr1"})
|
||||
Expect(found).Should(BeTrue())
|
||||
Expect(group).Should(Equal("gr1"))
|
||||
Eventually(func(g Gomega) {
|
||||
found, group := sut.Match("blocked1.com", []string{"gr1"})
|
||||
g.Expect(found).Should(BeTrue())
|
||||
g.Expect(group).Should(Equal("gr1"))
|
||||
}, "1s").Should(Succeed())
|
||||
|
||||
})
|
||||
|
||||
sut.Refresh()
|
||||
time.Sleep(time.Second)
|
||||
|
||||
By("List couldn't be loaded due to 404 err", func() {
|
||||
found, _ := sut.Match("blocked1.com", []string{"gr1"})
|
||||
Expect(found).Should(BeFalse())
|
||||
Eventually(func() bool {
|
||||
found, _ := sut.Match("blocked1.com", []string{"gr1"})
|
||||
return found
|
||||
}, "1s").Should(BeFalse())
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -171,7 +178,7 @@ var _ = Describe("ListCache", func() {
|
|||
"gr2": {server3.URL},
|
||||
}
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 30*time.Second, 3, time.Second)
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 30*time.Second, 3, time.Millisecond)
|
||||
|
||||
found, group := sut.Match("blocked1.com", []string{"gr1", "gr2"})
|
||||
Expect(found).Should(BeTrue())
|
||||
|
@ -192,7 +199,7 @@ var _ = Describe("ListCache", func() {
|
|||
"withDeadLink": {"http://wrong.host.name"},
|
||||
}
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 30*time.Second, 3, time.Second)
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 30*time.Second, 3, time.Millisecond)
|
||||
|
||||
found, group := sut.Match("blocked1.com", []string{})
|
||||
Expect(found).Should(BeFalse())
|
||||
|
@ -211,7 +218,7 @@ var _ = Describe("ListCache", func() {
|
|||
resultCnt = cnt
|
||||
})
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 30*time.Second, 3, time.Second)
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 30*time.Second, 3, time.Millisecond)
|
||||
|
||||
found, group := sut.Match("blocked1.com", []string{})
|
||||
Expect(found).Should(BeFalse())
|
||||
|
@ -226,7 +233,7 @@ var _ = Describe("ListCache", func() {
|
|||
"gr2": {"file://" + file3.Name()},
|
||||
}
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 0, 3, time.Second)
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 0, 3, time.Millisecond)
|
||||
|
||||
found, group := sut.Match("blocked1.com", []string{"gr1", "gr2"})
|
||||
Expect(found).Should(BeTrue())
|
||||
|
@ -247,7 +254,7 @@ var _ = Describe("ListCache", func() {
|
|||
"gr1": {"inlinedomain1.com\n#some comment\n#inlinedomain2.com"},
|
||||
}
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 0, 3, time.Second)
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 0, 3, time.Millisecond)
|
||||
|
||||
found, group := sut.Match("inlinedomain1.com", []string{"gr1"})
|
||||
Expect(found).Should(BeTrue())
|
||||
|
@ -264,7 +271,7 @@ var _ = Describe("ListCache", func() {
|
|||
"gr1": {"/^apple\\.(de|com)$/\n"},
|
||||
}
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 0, 3, time.Second)
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 0, 3, time.Millisecond)
|
||||
|
||||
found, group := sut.Match("apple.com", []string{"gr1"})
|
||||
Expect(found).Should(BeTrue())
|
||||
|
@ -284,7 +291,7 @@ var _ = Describe("ListCache", func() {
|
|||
"gr2": {"inline\ndefinition\n"},
|
||||
}
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 0, 3, time.Second)
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, 0, 0, 3, time.Millisecond)
|
||||
|
||||
c := sut.Configuration()
|
||||
Expect(c).Should(HaveLen(11))
|
||||
|
@ -296,7 +303,7 @@ var _ = Describe("ListCache", func() {
|
|||
"gr1": {"file1", "file2"},
|
||||
}
|
||||
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, -1, 0, 3, time.Second)
|
||||
sut, _ := NewListCache(ListCacheTypeBlacklist, lists, -1, 0, 3, time.Millisecond)
|
||||
|
||||
c := sut.Configuration()
|
||||
Expect(c).Should(ContainElement("refresh: disabled"))
|
||||
|
|
|
@ -20,7 +20,7 @@ var _ = Describe("DatabaseWriter", func() {
|
|||
When("New log entry was created", func() {
|
||||
It("should be persisted in the database", func() {
|
||||
sqlite := sqlite.Open("file::memory:")
|
||||
writer, err := newDatabaseWriter(sqlite, 7, 1)
|
||||
writer, err := newDatabaseWriter(sqlite, 7, time.Millisecond)
|
||||
Expect(err).Should(Succeed())
|
||||
request := &model.Request{
|
||||
Req: util.NewMsgWithQuestion("google.de.", dns.TypeA),
|
||||
|
@ -40,22 +40,19 @@ var _ = Describe("DatabaseWriter", func() {
|
|||
Start: time.Now(),
|
||||
DurationMs: 20,
|
||||
})
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
result := writer.db.Find(&logEntry{})
|
||||
|
||||
var cnt int64
|
||||
result.Count(&cnt)
|
||||
|
||||
Expect(cnt).Should(Equal(int64(1)))
|
||||
Eventually(func() (res int64) {
|
||||
result := writer.db.Find(&logEntry{})
|
||||
|
||||
result.Count(&res)
|
||||
return res
|
||||
}, "1s").Should(BeNumerically("==", 1))
|
||||
})
|
||||
})
|
||||
|
||||
When("There are log entries with timestamp exceeding the retention period", func() {
|
||||
It("these old entries should be deleted", func() {
|
||||
sqlite := sqlite.Open("file::memory:")
|
||||
writer, err := newDatabaseWriter(sqlite, 1, 1)
|
||||
writer, err := newDatabaseWriter(sqlite, 1, time.Millisecond)
|
||||
Expect(err).Should(Succeed())
|
||||
|
||||
request := &model.Request{
|
||||
|
@ -87,23 +84,25 @@ var _ = Describe("DatabaseWriter", func() {
|
|||
DurationMs: 20,
|
||||
})
|
||||
|
||||
result := writer.db.Find(&logEntry{})
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
var cnt int64
|
||||
result.Count(&cnt)
|
||||
|
||||
// 2 entries in the database
|
||||
Expect(cnt).Should(Equal(int64(2)))
|
||||
Eventually(func() int64 {
|
||||
var res int64
|
||||
result := writer.db.Find(&logEntry{})
|
||||
|
||||
result.Count(&res)
|
||||
return res
|
||||
}, "1s").Should(BeNumerically("==", 2))
|
||||
|
||||
// do cleanup now
|
||||
writer.CleanUp()
|
||||
|
||||
result.Count(&cnt)
|
||||
|
||||
// now only 1 entry in the database
|
||||
Expect(cnt).Should(Equal(int64(1)))
|
||||
Eventually(func() (res int64) {
|
||||
result := writer.db.Find(&logEntry{})
|
||||
|
||||
result.Count(&res)
|
||||
return res
|
||||
}, "1s").Should(BeNumerically("==", 1))
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package redis
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/0xERR0R/blocky/config"
|
||||
"github.com/0xERR0R/blocky/util"
|
||||
"github.com/alicebob/miniredis/v2"
|
||||
|
@ -88,11 +86,9 @@ var _ = Describe("Redis client", func() {
|
|||
Expect(err).Should(Succeed())
|
||||
|
||||
redisClient.PublishCache("example.com", res)
|
||||
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
|
||||
keysLen := len(redisServer.DB(redisConfig.Database).Keys())
|
||||
Expect(keysLen).To(Equal(1))
|
||||
Eventually(func() []string {
|
||||
return redisServer.DB(redisConfig.Database).Keys()
|
||||
}, "100ms").Should(HaveLen(1))
|
||||
})
|
||||
})
|
||||
When("GetRedisCache", func() {
|
||||
|
@ -106,16 +102,16 @@ var _ = Describe("Redis client", func() {
|
|||
|
||||
redisClient.PublishCache("example.com", res)
|
||||
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
|
||||
keysLen := len(redisServer.DB(redisConfig.Database).Keys())
|
||||
Expect(keysLen).To(Equal(1))
|
||||
Eventually(func() []string {
|
||||
return redisServer.DB(redisConfig.Database).Keys()
|
||||
}, "100ms").Should(HaveLen(1))
|
||||
|
||||
redisClient.GetRedisCache()
|
||||
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
Eventually(func() []string {
|
||||
return redisServer.DB(redisConfig.Database).Keys()
|
||||
}, "100ms").Should(HaveLen(origCount + 1))
|
||||
|
||||
Expect(len(redisClient.CacheChannel)).To(Equal(origCount + 1))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -99,10 +99,7 @@ badcnamedomain.com`)
|
|||
tmp, _ := NewBlockingResolver(sutConfig)
|
||||
sut = tmp.(*BlockingResolver)
|
||||
|
||||
time.Sleep(time.Second)
|
||||
|
||||
Expect(groupCnt).Should(HaveLen(2))
|
||||
|
||||
Eventually(groupCnt, "1s").Should(HaveLen(2))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -666,8 +663,9 @@ badcnamedomain.com`)
|
|||
enabled = state
|
||||
})
|
||||
// wait 1 sec
|
||||
time.Sleep(time.Second)
|
||||
Expect(enabled).Should(BeTrue())
|
||||
Eventually(func() bool {
|
||||
return enabled
|
||||
}, "1s").Should(BeTrue())
|
||||
|
||||
resp, err := sut.Resolve(newRequestWithClient("blocked3.com.", dns.TypeA, "1.2.1.2", "unknown"))
|
||||
Expect(err).Should(Succeed())
|
||||
|
@ -727,8 +725,9 @@ badcnamedomain.com`)
|
|||
enabled = state
|
||||
})
|
||||
// wait 1 sec
|
||||
time.Sleep(time.Second)
|
||||
Expect(enabled).Should(BeTrue())
|
||||
Eventually(func() bool {
|
||||
return enabled
|
||||
}, "1s").Should(BeTrue())
|
||||
|
||||
resp, err := sut.Resolve(newRequestWithClient("blocked3.com.", dns.TypeA, "1.2.1.2", "unknown"))
|
||||
Expect(err).Should(Succeed())
|
||||
|
|
|
@ -95,14 +95,15 @@ var _ = Describe("CachingResolver", func() {
|
|||
_, _ = sut.Resolve(newRequest("example.com.", dns.TypeA))
|
||||
|
||||
}
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
Eventually(func(g Gomega) {
|
||||
// now is this domain prefetched
|
||||
g.Expect(domainPrefetched).Should(Equal("example.com"))
|
||||
|
||||
// now is this domain prefetched
|
||||
Expect(domainPrefetched).Should(Equal("example.com"))
|
||||
// and it should hit from prefetch cache
|
||||
_, _ = sut.Resolve(newRequest("example.com.", dns.TypeA))
|
||||
g.Expect(prefetchHitDomain).Should(Equal("example.com"))
|
||||
}, "50ms").Should(Succeed())
|
||||
|
||||
// and it should hit from prefetch cache
|
||||
_, _ = sut.Resolve(newRequest("example.com.", dns.TypeA))
|
||||
Expect(prefetchHitDomain).Should(Equal("example.com"))
|
||||
})
|
||||
})
|
||||
When("min caching time is defined", func() {
|
||||
|
@ -140,24 +141,25 @@ var _ = Describe("CachingResolver", func() {
|
|||
Expect(totalCacheCount).Should(Equal(1))
|
||||
})
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
By("second request", func() {
|
||||
domain := ""
|
||||
_ = Bus().SubscribeOnce(CachingResultCacheHit, func(d string) {
|
||||
domain = d
|
||||
})
|
||||
Eventually(func(g Gomega) {
|
||||
domain := ""
|
||||
_ = Bus().SubscribeOnce(CachingResultCacheHit, func(d string) {
|
||||
domain = d
|
||||
})
|
||||
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeA))
|
||||
Expect(err).Should(Succeed())
|
||||
Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
// still one call to upstream
|
||||
Expect(m.Calls).Should(HaveLen(1))
|
||||
Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// ttl is smaller
|
||||
Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.", dns.TypeA, 599, "123.122.121.120"))
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeA))
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
// still one call to upstream
|
||||
g.Expect(m.Calls).Should(HaveLen(1))
|
||||
g.Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// ttl is smaller
|
||||
g.Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.", dns.TypeA, 599, "123.122.121.120"))
|
||||
|
||||
g.Expect(domain).Should(Equal("example.com"))
|
||||
}, "500ms").Should(Succeed())
|
||||
|
||||
Expect(domain).Should(Equal("example.com"))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -178,17 +180,17 @@ var _ = Describe("CachingResolver", func() {
|
|||
Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.", dns.TypeA, 300, "123.122.121.120"))
|
||||
})
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
By("second request", func() {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeA))
|
||||
Expect(err).Should(Succeed())
|
||||
Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// still one call to upstream
|
||||
Expect(m.Calls).Should(HaveLen(1))
|
||||
// ttl is smaller
|
||||
Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.", dns.TypeA, 299, "123.122.121.120"))
|
||||
Eventually(func(g Gomega) {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeA))
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
g.Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// still one call to upstream
|
||||
g.Expect(m.Calls).Should(HaveLen(1))
|
||||
// ttl is smaller
|
||||
g.Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.", dns.TypeA, 299, "123.122.121.120"))
|
||||
}, "500ms").Should(Succeed())
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -211,18 +213,19 @@ var _ = Describe("CachingResolver", func() {
|
|||
dns.TypeAAAA, 300, "2001:db8:85a3:8d3:1319:8a2e:370:7344"))
|
||||
})
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
By("second request", func() {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeAAAA))
|
||||
Expect(err).Should(Succeed())
|
||||
Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// still one call to upstream
|
||||
Expect(m.Calls).Should(HaveLen(1))
|
||||
// ttl is smaller
|
||||
Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.",
|
||||
dns.TypeAAAA, 299, "2001:db8:85a3:8d3:1319:8a2e:370:7344"))
|
||||
Eventually(func(g Gomega) {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeAAAA))
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
g.Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// still one call to upstream
|
||||
g.Expect(m.Calls).Should(HaveLen(1))
|
||||
// ttl is smaller
|
||||
g.Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.",
|
||||
dns.TypeAAAA, 299, "2001:db8:85a3:8d3:1319:8a2e:370:7344"))
|
||||
}, "500ms").Should(Succeed())
|
||||
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -253,17 +256,17 @@ var _ = Describe("CachingResolver", func() {
|
|||
dns.TypeAAAA, 1230, "2001:db8:85a3:8d3:1319:8a2e:370:7344"))
|
||||
})
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
By("second request", func() {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeAAAA))
|
||||
Expect(err).Should(Succeed())
|
||||
Expect(resp.RType).Should(Equal(ResponseTypeRESOLVED))
|
||||
Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// one more call to upstream
|
||||
Expect(m.Calls).Should(HaveLen(2))
|
||||
Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.",
|
||||
dns.TypeAAAA, 1230, "2001:db8:85a3:8d3:1319:8a2e:370:7344"))
|
||||
Eventually(func(g Gomega) {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeAAAA))
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(resp.RType).Should(Equal(ResponseTypeRESOLVED))
|
||||
g.Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// one more call to upstream
|
||||
g.Expect(m.Calls).Should(HaveLen(2))
|
||||
g.Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.",
|
||||
dns.TypeAAAA, 1230, "2001:db8:85a3:8d3:1319:8a2e:370:7344"))
|
||||
}, "500ms").Should(Succeed())
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -285,18 +288,18 @@ var _ = Describe("CachingResolver", func() {
|
|||
dns.TypeAAAA, 240, "2001:db8:85a3:8d3:1319:8a2e:370:7344"))
|
||||
})
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
By("second request", func() {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeAAAA))
|
||||
Expect(err).Should(Succeed())
|
||||
Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// still one call to upstream
|
||||
Expect(m.Calls).Should(HaveLen(1))
|
||||
// ttl is smaller
|
||||
Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.",
|
||||
dns.TypeAAAA, 239, "2001:db8:85a3:8d3:1319:8a2e:370:7344"))
|
||||
Eventually(func(g Gomega) {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeAAAA))
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
g.Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// still one call to upstream
|
||||
g.Expect(m.Calls).Should(HaveLen(1))
|
||||
// ttl is smaller
|
||||
g.Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.",
|
||||
dns.TypeAAAA, 239, "2001:db8:85a3:8d3:1319:8a2e:370:7344"))
|
||||
}, "500ms").Should(Succeed())
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -322,18 +325,19 @@ var _ = Describe("CachingResolver", func() {
|
|||
dns.TypeA, 1, "1.1.1.1"))
|
||||
})
|
||||
|
||||
time.Sleep(1100 * time.Millisecond)
|
||||
|
||||
By("second request", func() {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeA))
|
||||
Expect(err).Should(Succeed())
|
||||
Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// still one call to upstream
|
||||
Expect(m.Calls).Should(HaveLen(1))
|
||||
// ttl is 0
|
||||
Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.",
|
||||
dns.TypeA, 0, "1.1.1.1"))
|
||||
Eventually(func(g Gomega) {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeA))
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
g.Expect(resp.Res.Rcode).Should(Equal(dns.RcodeSuccess))
|
||||
// still one call to upstream
|
||||
g.Expect(m.Calls).Should(HaveLen(1))
|
||||
// ttl is 0
|
||||
g.Expect(resp.Res.Answer).Should(BeDNSRecord("example.com.",
|
||||
dns.TypeA, 0, "1.1.1.1"))
|
||||
}, "1100ms").Should(Succeed())
|
||||
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -355,16 +359,16 @@ var _ = Describe("CachingResolver", func() {
|
|||
Expect(m.Calls).Should(HaveLen(1))
|
||||
})
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
By("second request", func() {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeAAAA))
|
||||
Expect(err).Should(Succeed())
|
||||
Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
Expect(resp.Reason).Should(Equal("CACHED NEGATIVE"))
|
||||
Expect(resp.Res.Rcode).Should(Equal(dns.RcodeNameError))
|
||||
// still one call to resolver
|
||||
Expect(m.Calls).Should(HaveLen(1))
|
||||
Eventually(func(g Gomega) {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeAAAA))
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(resp.RType).Should(Equal(ResponseTypeCACHED))
|
||||
g.Expect(resp.Reason).Should(Equal("CACHED NEGATIVE"))
|
||||
g.Expect(resp.Res.Rcode).Should(Equal(dns.RcodeNameError))
|
||||
// still one call to resolver
|
||||
g.Expect(m.Calls).Should(HaveLen(1))
|
||||
}, "500ms").Should(Succeed())
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -386,14 +390,14 @@ var _ = Describe("CachingResolver", func() {
|
|||
Expect(m.Calls).Should(HaveLen(1))
|
||||
})
|
||||
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
|
||||
By("second request", func() {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeAAAA))
|
||||
Expect(err).Should(Succeed())
|
||||
Expect(resp.RType).Should(Equal(ResponseTypeRESOLVED))
|
||||
Expect(resp.Res.Rcode).Should(Equal(dns.RcodeNameError))
|
||||
Expect(m.Calls).Should(HaveLen(2))
|
||||
Eventually(func(g Gomega) {
|
||||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeAAAA))
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(resp.RType).Should(Equal(ResponseTypeRESOLVED))
|
||||
g.Expect(resp.Res.Rcode).Should(Equal(dns.RcodeNameError))
|
||||
g.Expect(m.Calls).Should(HaveLen(2))
|
||||
}, "500ms").Should(Succeed())
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -501,10 +505,9 @@ var _ = Describe("CachingResolver", func() {
|
|||
resp, err = sut.Resolve(newRequest("example.com.", dns.TypeA))
|
||||
Expect(err).Should(Succeed())
|
||||
|
||||
time.Sleep(50 * time.Millisecond)
|
||||
|
||||
keysLen := len(redisServer.DB(redisConfig.Database).Keys())
|
||||
Expect(keysLen).To(Equal(1))
|
||||
Eventually(func() []string {
|
||||
return redisServer.DB(redisConfig.Database).Keys()
|
||||
}, "50ms").Should(HaveLen(1))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -14,7 +14,6 @@ import (
|
|||
"github.com/0xERR0R/blocky/querylog"
|
||||
|
||||
"github.com/0xERR0R/blocky/config"
|
||||
. "github.com/0xERR0R/blocky/log"
|
||||
. "github.com/0xERR0R/blocky/model"
|
||||
"github.com/0xERR0R/blocky/util"
|
||||
|
||||
|
@ -101,29 +100,36 @@ var _ = Describe("QueryLoggingResolver", func() {
|
|||
Expect(err).Should(Succeed())
|
||||
})
|
||||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
m.AssertExpectations(GinkgoT())
|
||||
|
||||
By("check log for client1", func() {
|
||||
csvLines := readCsv(filepath.Join(tmpDir, fmt.Sprintf("%s_client1.log", time.Now().Format("2006-01-02"))))
|
||||
Eventually(func(g Gomega) {
|
||||
csvLines, err := readCsv(filepath.Join(tmpDir, fmt.Sprintf("%s_client1.log", time.Now().Format("2006-01-02"))))
|
||||
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(csvLines).Should(Not(BeEmpty()))
|
||||
g.Expect(csvLines[0][1]).Should(Equal("192.168.178.25"))
|
||||
g.Expect(csvLines[0][2]).Should(Equal("client1"))
|
||||
g.Expect(csvLines[0][4]).Should(Equal("reason"))
|
||||
g.Expect(csvLines[0][5]).Should(Equal("A (example.com.)"))
|
||||
g.Expect(csvLines[0][6]).Should(Equal("A (123.122.121.120)"))
|
||||
}, "1s").Should(Succeed())
|
||||
|
||||
Expect(csvLines).Should(HaveLen(1))
|
||||
Expect(csvLines[0][1]).Should(Equal("192.168.178.25"))
|
||||
Expect(csvLines[0][2]).Should(Equal("client1"))
|
||||
Expect(csvLines[0][4]).Should(Equal("reason"))
|
||||
Expect(csvLines[0][5]).Should(Equal("A (example.com.)"))
|
||||
Expect(csvLines[0][6]).Should(Equal("A (123.122.121.120)"))
|
||||
})
|
||||
|
||||
By("check log for client2", func() {
|
||||
csvLines := readCsv(filepath.Join(tmpDir, fmt.Sprintf("%s_cl_ient2_test.log", time.Now().Format("2006-01-02"))))
|
||||
Eventually(func(g Gomega) {
|
||||
csvLines, err := readCsv(filepath.Join(tmpDir,
|
||||
fmt.Sprintf("%s_cl_ient2_test.log", time.Now().Format("2006-01-02"))))
|
||||
|
||||
Expect(csvLines).Should(HaveLen(1))
|
||||
Expect(csvLines[0][1]).Should(Equal("192.168.178.26"))
|
||||
Expect(csvLines[0][2]).Should(Equal("cl/ient2\\$%&test"))
|
||||
Expect(csvLines[0][4]).Should(Equal("reason"))
|
||||
Expect(csvLines[0][5]).Should(Equal("A (example.com.)"))
|
||||
Expect(csvLines[0][6]).Should(Equal("A (123.122.121.120)"))
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(csvLines).Should(HaveLen(1))
|
||||
g.Expect(csvLines[0][1]).Should(Equal("192.168.178.26"))
|
||||
g.Expect(csvLines[0][2]).Should(Equal("cl/ient2\\$%&test"))
|
||||
g.Expect(csvLines[0][4]).Should(Equal("reason"))
|
||||
g.Expect(csvLines[0][5]).Should(Equal("A (example.com.)"))
|
||||
g.Expect(csvLines[0][6]).Should(Equal("A (123.122.121.120)"))
|
||||
}, "1s").Should(Succeed())
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -147,26 +153,29 @@ var _ = Describe("QueryLoggingResolver", func() {
|
|||
Expect(err).Should(Succeed())
|
||||
})
|
||||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
m.AssertExpectations(GinkgoT())
|
||||
|
||||
By("check log", func() {
|
||||
csvLines := readCsv(filepath.Join(tmpDir, fmt.Sprintf("%s_ALL.log", time.Now().Format("2006-01-02"))))
|
||||
Eventually(func(g Gomega) {
|
||||
csvLines, err := readCsv(filepath.Join(tmpDir, fmt.Sprintf("%s_ALL.log", time.Now().Format("2006-01-02"))))
|
||||
|
||||
Expect(csvLines).Should(HaveLen(2))
|
||||
// client1 -> first line
|
||||
Expect(csvLines[0][1]).Should(Equal("192.168.178.25"))
|
||||
Expect(csvLines[0][2]).Should(Equal("client1"))
|
||||
Expect(csvLines[0][4]).Should(Equal("reason"))
|
||||
Expect(csvLines[0][5]).Should(Equal("A (example.com.)"))
|
||||
Expect(csvLines[0][6]).Should(Equal("A (123.122.121.120)"))
|
||||
g.Expect(err).Should(Succeed())
|
||||
g.Expect(csvLines).Should(HaveLen(2))
|
||||
// client1 -> first line
|
||||
g.Expect(csvLines[0][1]).Should(Equal("192.168.178.25"))
|
||||
g.Expect(csvLines[0][2]).Should(Equal("client1"))
|
||||
g.Expect(csvLines[0][4]).Should(Equal("reason"))
|
||||
g.Expect(csvLines[0][5]).Should(Equal("A (example.com.)"))
|
||||
g.Expect(csvLines[0][6]).Should(Equal("A (123.122.121.120)"))
|
||||
|
||||
// client2 -> second line
|
||||
g.Expect(csvLines[1][1]).Should(Equal("192.168.178.26"))
|
||||
g.Expect(csvLines[1][2]).Should(Equal("client2"))
|
||||
g.Expect(csvLines[1][4]).Should(Equal("reason"))
|
||||
g.Expect(csvLines[1][5]).Should(Equal("A (example.com.)"))
|
||||
g.Expect(csvLines[1][6]).Should(Equal("A (123.122.121.120)"))
|
||||
}, "1s").Should(Succeed())
|
||||
|
||||
// client2 -> second line
|
||||
Expect(csvLines[1][1]).Should(Equal("192.168.178.26"))
|
||||
Expect(csvLines[1][2]).Should(Equal("client2"))
|
||||
Expect(csvLines[1][4]).Should(Equal("reason"))
|
||||
Expect(csvLines[1][5]).Should(Equal("A (example.com.)"))
|
||||
Expect(csvLines[1][6]).Should(Equal("A (123.122.121.120)"))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
@ -284,11 +293,13 @@ var _ = Describe("Wrong target configuration", func() {
|
|||
})
|
||||
})
|
||||
|
||||
func readCsv(file string) [][]string {
|
||||
func readCsv(file string) ([][]string, error) {
|
||||
var result [][]string
|
||||
|
||||
csvFile, err := os.Open(file)
|
||||
Expect(err).Should(Succeed())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
reader := csv.NewReader(bufio.NewReader(csvFile))
|
||||
reader.Comma = '\t'
|
||||
|
@ -298,11 +309,11 @@ func readCsv(file string) [][]string {
|
|||
if errors.Is(err, io.EOF) {
|
||||
break
|
||||
} else if err != nil {
|
||||
Log().Fatal("can't read line", err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
result = append(result, line)
|
||||
}
|
||||
|
||||
return result
|
||||
return result, nil
|
||||
}
|
||||
|
|
|
@ -558,16 +558,18 @@ var _ = Describe("Running DNS server", func() {
|
|||
|
||||
defer server.Stop()
|
||||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
Eventually(func() bool {
|
||||
return fatal
|
||||
}, "100ms").Should(BeFalse())
|
||||
|
||||
Expect(fatal).Should(BeFalse())
|
||||
|
||||
// start again -> should fail
|
||||
server.Start()
|
||||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
|
||||
Expect(fatal).Should(BeTrue())
|
||||
Eventually(func() bool {
|
||||
return fatal
|
||||
}, "100ms").Should(BeTrue())
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue