mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-11-28 09:58:52 +03:00
c47509fabc
Updates #1453. Squashed commit of the following: commit f08f68ef5493dad03d3eb120d886f2df1af28be6 Merge: b70b088af54aee2272
Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Tue Aug 8 19:04:06 2023 +0300 Merge branch 'master' into 1453-stats-tests commit b70b088af0fdc7d6d048d688160048bad1fceb12 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Aug 3 19:32:04 2023 +0300 stats: imp code commit c341012ba61894c255c1868624be1cac0d26a6fa Merge: a2ac8c34e5eb3cd0f9
Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Aug 3 13:36:24 2023 +0300 Merge branch 'master' into 1453-stats-tests commit a2ac8c34ee32606ca5e259c3e2a47db0dd5858de Author: Ildar Kamalov <ik@adguard.com> Date: Thu Aug 3 13:25:12 2023 +0300 client: add top upstreams and average processing time tables commit 11118947f9bf945be0b056f8475cf3b848c6e66e Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Tue Aug 1 17:24:57 2023 +0300 stats: imp docs commit 904cf81d02a1f327b9647fa7ad9e181cfabb68a4 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Mon Jul 31 17:34:06 2023 +0300 stats: imp code commit 34f0c96dd5865d1470385322a88842dd0b3d996d Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Mon Jul 31 15:43:46 2023 +0300 all: imp docs commit 2cb2d0d8bef3580f64bc25c414fe9b5ea6b9f997 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Fri Jul 28 17:24:31 2023 +0300 all: imp code commit 5251a899fecc21e50a0ba06042f96f5b404e196a Merge: b6c2b12d4300821a7f
Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Jul 27 20:34:39 2023 +0300 Merge branch 'master' into 1453-stats-tests commit b6c2b12d4425012efd73549c3a426735f3a677cd Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Jul 27 20:32:18 2023 +0300 stats: imp code commit 5546b82a78326f9cc6d8c87df5083f8fc66a0178 Merge: 8a3d6b1b45f8fa006c
Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Jul 27 14:24:01 2023 +0300 Merge branch 'master' into 1453-stats-tests commit 8a3d6b1b49ce189f95adfa7406a34108e885e676 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Jul 27 14:17:47 2023 +0300 all: imp code commit 2a48001e275e3cdcf70e13e1c9cebd4e502f3259 Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Tue Jul 25 18:27:20 2023 +0300 all: imp docs commit 3dd21890175af32a3368378f7e013383f6d040ec Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Tue Jul 25 16:00:39 2023 +0300 all: imp naming commit 6124456fc3149b71f6bd58d35ecf24eb6cf40d5d Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Thu Jul 20 16:15:56 2023 +0300 all: add upstreams avg processing time commit 187ad0c77a81c9fd95c24e23141355db2e83e50d Author: Stanislav Chzhen <s.chzhen@adguard.com> Date: Tue Jul 18 16:42:19 2023 +0300 all: add top upstreams
177 lines
3.9 KiB
Go
177 lines
3.9 KiB
Go
package stats
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestUnit_Deserialize(t *testing.T) {
|
|
testCases := []struct {
|
|
db *unitDB
|
|
name string
|
|
want unit
|
|
}{{
|
|
name: "empty",
|
|
want: unit{
|
|
domains: map[string]uint64{},
|
|
blockedDomains: map[string]uint64{},
|
|
clients: map[string]uint64{},
|
|
nResult: []uint64{0, 0, 0, 0, 0, 0},
|
|
id: 0,
|
|
nTotal: 0,
|
|
timeSum: 0,
|
|
upstreamsResponses: map[string]uint64{},
|
|
upstreamsTimeSum: map[string]uint64{},
|
|
},
|
|
db: &unitDB{
|
|
NResult: []uint64{0, 0, 0, 0, 0, 0},
|
|
Domains: []countPair{},
|
|
BlockedDomains: []countPair{},
|
|
Clients: []countPair{},
|
|
NTotal: 0,
|
|
TimeAvg: 0,
|
|
UpstreamsResponses: []countPair{},
|
|
UpstreamsTimeSum: []countPair{},
|
|
},
|
|
}, {
|
|
name: "basic",
|
|
want: unit{
|
|
domains: map[string]uint64{
|
|
"example.com": 1,
|
|
},
|
|
blockedDomains: map[string]uint64{
|
|
"example.net": 1,
|
|
},
|
|
clients: map[string]uint64{
|
|
"127.0.0.1": 2,
|
|
},
|
|
nResult: []uint64{0, 1, 1, 0, 0, 0},
|
|
id: 0,
|
|
nTotal: 2,
|
|
timeSum: 246912,
|
|
upstreamsResponses: map[string]uint64{
|
|
"1.2.3.4": 2,
|
|
},
|
|
upstreamsTimeSum: map[string]uint64{
|
|
"1.2.3.4": 246912,
|
|
},
|
|
},
|
|
db: &unitDB{
|
|
NResult: []uint64{0, 1, 1, 0, 0, 0},
|
|
Domains: []countPair{{
|
|
"example.com", 1,
|
|
}},
|
|
BlockedDomains: []countPair{{
|
|
"example.net", 1,
|
|
}},
|
|
Clients: []countPair{{
|
|
"127.0.0.1", 2,
|
|
}},
|
|
NTotal: 2,
|
|
TimeAvg: 123456,
|
|
UpstreamsResponses: []countPair{{
|
|
"1.2.3.4", 2,
|
|
}},
|
|
UpstreamsTimeSum: []countPair{{
|
|
"1.2.3.4", 246912,
|
|
}},
|
|
},
|
|
}}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
got := unit{}
|
|
got.deserialize(tc.db)
|
|
require.Equal(t, tc.want, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestTopUpstreamsPairs(t *testing.T) {
|
|
testCases := []struct {
|
|
db *unitDB
|
|
name string
|
|
wantResponses []topAddrs
|
|
wantAvgTime []topAddrsFloat
|
|
}{{
|
|
name: "empty",
|
|
db: &unitDB{
|
|
NResult: []uint64{0, 0, 0, 0, 0, 0},
|
|
Domains: []countPair{},
|
|
BlockedDomains: []countPair{},
|
|
Clients: []countPair{},
|
|
NTotal: 0,
|
|
TimeAvg: 0,
|
|
UpstreamsResponses: []countPair{},
|
|
UpstreamsTimeSum: []countPair{},
|
|
},
|
|
wantResponses: []topAddrs{},
|
|
wantAvgTime: []topAddrsFloat{},
|
|
}, {
|
|
name: "basic",
|
|
db: &unitDB{
|
|
NResult: []uint64{0, 0, 0, 0, 0, 0},
|
|
Domains: []countPair{},
|
|
BlockedDomains: []countPair{},
|
|
Clients: []countPair{},
|
|
NTotal: 0,
|
|
TimeAvg: 0,
|
|
UpstreamsResponses: []countPair{{
|
|
"1.2.3.4", 2,
|
|
}},
|
|
UpstreamsTimeSum: []countPair{{
|
|
"1.2.3.4", 246912,
|
|
}},
|
|
},
|
|
wantResponses: []topAddrs{{
|
|
"1.2.3.4": 2,
|
|
}},
|
|
wantAvgTime: []topAddrsFloat{{
|
|
"1.2.3.4": 0.123456,
|
|
}},
|
|
}, {
|
|
name: "sorted",
|
|
db: &unitDB{
|
|
NResult: []uint64{0, 0, 0, 0, 0, 0},
|
|
Domains: []countPair{},
|
|
BlockedDomains: []countPair{},
|
|
Clients: []countPair{},
|
|
NTotal: 0,
|
|
TimeAvg: 0,
|
|
UpstreamsResponses: []countPair{
|
|
{"3.3.3.3", 8},
|
|
{"2.2.2.2", 4},
|
|
{"4.4.4.4", 16},
|
|
{"1.1.1.1", 2},
|
|
},
|
|
UpstreamsTimeSum: []countPair{
|
|
{"3.3.3.3", 800_000_000},
|
|
{"2.2.2.2", 40_000_000},
|
|
{"4.4.4.4", 16_000_000_000},
|
|
{"1.1.1.1", 2_000_000},
|
|
},
|
|
},
|
|
wantResponses: []topAddrs{
|
|
{"4.4.4.4": 16},
|
|
{"3.3.3.3": 8},
|
|
{"2.2.2.2": 4},
|
|
{"1.1.1.1": 2},
|
|
},
|
|
wantAvgTime: []topAddrsFloat{
|
|
{"4.4.4.4": 1000},
|
|
{"3.3.3.3": 100},
|
|
{"2.2.2.2": 10},
|
|
{"1.1.1.1": 1},
|
|
},
|
|
}}
|
|
|
|
for _, tc := range testCases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
gotResponses, gotAvgTime := topUpstreamsPairs([]*unitDB{tc.db})
|
|
assert.Equal(t, tc.wantResponses, gotResponses)
|
|
assert.Equal(t, tc.wantAvgTime, gotAvgTime)
|
|
})
|
|
}
|
|
}
|