Pull request 2138: AG-27492-client-persistent-storage

Squashed commit of the following:

commit 37e33ec761cfa30164125af2c5bb40789412355e
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Wed Feb 14 15:25:25 2024 +0300

    aghalg: imp code

commit 6b2f09a44298b474ec1bdf3d027fb4941d2f7bea
Merge: b8ea924aa 37736289e
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Wed Feb 14 15:04:59 2024 +0300

    Merge branch 'master' into AG-27492-client-persistent-storage

commit b8ea924aa7ed4c052760a6068f945d83d184e7e3
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Tue Feb 13 19:07:52 2024 +0300

    home: imp tests

commit aa6fec03b1a1ead96bc76919b7ad51ae19626633
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Tue Feb 13 14:54:28 2024 +0300

    home: imp docs

commit 10637fdec47d0b035cf5c7949ddcd9ec564851a3
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Thu Feb 8 20:16:11 2024 +0300

    all: imp code

commit b45c7d868ddb1be73e119b3260e2a866d57baa91
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Wed Feb 7 19:15:11 2024 +0300

    aghalg: add tests

commit 7abe33dbaa7221ddbc8b7d802dbfa7f951d90cf8
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Tue Feb 6 20:50:22 2024 +0300

    all: imp code, tests

commit 4a44e993c9bd393d2cb9853108eae1ad91e64402
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Thu Feb 1 14:59:11 2024 +0300

    all: persistent client index

commit 66b16e216e03e9f3d5e69496a89b18a9d732b564
Author: Stanislav Chzhen <s.chzhen@adguard.com>
Date:   Wed Jan 31 15:06:05 2024 +0300

    aghalg: ordered map
This commit is contained in:
Stanislav Chzhen
2024-02-15 14:08:05 +03:00
parent 37736289e2
commit fede297942
8 changed files with 741 additions and 82 deletions

View File

@@ -68,6 +68,7 @@ func TestClients(t *testing.T) {
c := &persistentClient{
Name: "client1",
UID: MustNewUID(),
IPs: []netip.Addr{cli1IP, cliIPv6},
}
@@ -78,6 +79,7 @@ func TestClients(t *testing.T) {
c = &persistentClient{
Name: "client2",
UID: MustNewUID(),
IPs: []netip.Addr{cli2IP},
}
@@ -111,6 +113,7 @@ func TestClients(t *testing.T) {
t.Run("add_fail_name", func(t *testing.T) {
ok, err := clients.add(&persistentClient{
Name: "client1",
UID: MustNewUID(),
IPs: []netip.Addr{netip.MustParseAddr("1.2.3.5")},
})
require.NoError(t, err)
@@ -120,6 +123,7 @@ func TestClients(t *testing.T) {
t.Run("add_fail_ip", func(t *testing.T) {
ok, err := clients.add(&persistentClient{
Name: "client3",
UID: MustNewUID(),
})
require.Error(t, err)
assert.False(t, ok)
@@ -128,6 +132,7 @@ func TestClients(t *testing.T) {
t.Run("update_fail_ip", func(t *testing.T) {
err := clients.update(&persistentClient{Name: "client1"}, &persistentClient{
Name: "client1",
UID: MustNewUID(),
})
assert.Error(t, err)
})
@@ -145,6 +150,7 @@ func TestClients(t *testing.T) {
err := clients.update(prev, &persistentClient{
Name: "client1",
UID: MustNewUID(),
IPs: []netip.Addr{cliNewIP},
})
require.NoError(t, err)
@@ -159,6 +165,7 @@ func TestClients(t *testing.T) {
err = clients.update(prev, &persistentClient{
Name: "client1-renamed",
UID: MustNewUID(),
IPs: []netip.Addr{cliNewIP},
UseOwnSettings: true,
})
@@ -260,6 +267,7 @@ func TestClientsWHOIS(t *testing.T) {
ok, err := clients.add(&persistentClient{
Name: "client1",
UID: MustNewUID(),
IPs: []netip.Addr{netip.MustParseAddr("1.1.1.2")},
})
require.NoError(t, err)
@@ -282,6 +290,7 @@ func TestClientsAddExisting(t *testing.T) {
// Add a client.
ok, err := clients.add(&persistentClient{
Name: "client1",
UID: MustNewUID(),
IPs: []netip.Addr{ip, netip.MustParseAddr("1:2:3::4")},
Subnets: []netip.Prefix{netip.MustParsePrefix("2.2.2.0/24")},
MACs: []net.HardwareAddr{{0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA}},
@@ -332,6 +341,7 @@ func TestClientsAddExisting(t *testing.T) {
// Add a new client with the same IP as for a client with MAC.
ok, err := clients.add(&persistentClient{
Name: "client2",
UID: MustNewUID(),
IPs: []netip.Addr{ip},
})
require.NoError(t, err)
@@ -340,6 +350,7 @@ func TestClientsAddExisting(t *testing.T) {
// Add a new client with the IP from the first client's IP range.
ok, err = clients.add(&persistentClient{
Name: "client3",
UID: MustNewUID(),
IPs: []netip.Addr{netip.MustParseAddr("2.2.2.2")},
})
require.NoError(t, err)
@@ -353,6 +364,7 @@ func TestClientsCustomUpstream(t *testing.T) {
// Add client with upstreams.
ok, err := clients.add(&persistentClient{
Name: "client1",
UID: MustNewUID(),
IPs: []netip.Addr{netip.MustParseAddr("1.1.1.1"), netip.MustParseAddr("1:2:3::4")},
Upstreams: []string{
"1.1.1.1",