fixed tests, added db init flag

This commit is contained in:
Annika Hannig 2022-01-13 18:28:24 +01:00
parent 8d53d7e301
commit 1c73eb4802
6 changed files with 56 additions and 17 deletions

View File

@ -9,6 +9,7 @@ import (
"github.com/alice-lg/alice-lg/pkg/http"
"github.com/alice-lg/alice-lg/pkg/store"
"github.com/alice-lg/alice-lg/pkg/store/backends/memory"
"github.com/alice-lg/alice-lg/pkg/store/backends/postgres"
)
func main() {
@ -19,7 +20,10 @@ func main() {
"config", "/etc/alice-lg/alice.conf",
"Alice looking glass configuration file",
)
dbInitFlag := flag.Bool(
"db-init", false,
"Initialize the database. Clears all data.",
)
flag.Parse()
// Load configuration
@ -28,9 +32,32 @@ func main() {
log.Fatal(err)
}
// Setup local routes store
neighborsBackend := memory.NewNeighborsBackend()
routesBackend := memory.NewRoutesBackend()
// Setup local routes store and use backend from configuration
var (
neighborsBackend store.NeighborsStoreBackend = memory.NewNeighborsBackend()
routesBackend store.RoutesStoreBackend = memory.NewRoutesBackend()
)
if cfg.Server.StoreBackend == "postgres" {
pool, err := postgres.Connect(ctx, cfg.Postgres)
if err != nil {
log.Fatal(err)
}
m := postgres.NewManager(pool)
// Initialize db if required
if *dbInitFlag {
if err := m.Initialize(ctx); err != nil {
log.Fatal(err)
}
log.Println("database initialized")
return
}
go m.Start(ctx)
neighborsBackend = postgres.NewNeighborsBackend(pool)
routesBackend = postgres.NewRoutesBackend(pool)
}
neighborsStore := store.NewNeighborsStore(cfg, neighborsBackend)
routesStore := store.NewRoutesStore(neighborsStore, cfg, routesBackend)

2
go.sum
View File

@ -171,6 +171,7 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4=
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/vishvananda/netlink v0.0.0-20170802012344-a95659537721/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
github.com/vishvananda/netns v0.0.0-20170707011535-86bef332bfc3/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI=
@ -303,6 +304,7 @@ gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.0.0-20170721122051-25c4ec802a7d/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

View File

@ -71,13 +71,12 @@ func (b *NeighborsBackend) GetNeighborsAt(
return ret, nil
}
// GetNeighborAt retrieves all neighbors for a source
// identified by its ID.
func (b *NeighborsBackend) GetNeighborAt(
// GetNeighborsMapAt retrieves all neighbors for a source
// identified by its ID and returns a map.
func (b *NeighborsBackend) GetNeighborsMapAt(
ctx context.Context,
sourceID string,
neighborID string,
) (*api.Neighbor, error) {
) (map[string]*api.Neighbor, error) {
b.Lock()
defer b.Unlock()
@ -87,7 +86,7 @@ func (b *NeighborsBackend) GetNeighborAt(
}
// Copy neighbors map
result := make(map[string]*Neighbor)
result := make(map[string]*api.Neighbor)
for k, v := range neighbors {
result[k] = v
}

View File

@ -40,7 +40,6 @@ type NeighborsStoreBackend interface {
GetNeighborsMapAt(
ctx context.Context,
sourceID string,
neighborID string,
) (map[string]*api.Neighbor, error)
// CountNeighborsAt retrieves the current number of

View File

@ -154,9 +154,14 @@ func (s *RoutesStore) updateSource(
return err
}
neighbors, err := s.neighbors.GetNeighborsMapAt(ctx, src.ID)
if err != nil {
return err
}
// Prepare imported routes for lookup
imported := s.routesToLookupRoutes(ctx, "imported", src, res.Imported)
filtered := s.routesToLookupRoutes(ctx, "filtered", src, res.Filtered)
imported := s.routesToLookupRoutes(ctx, "imported", src, neighbors, res.Imported)
filtered := s.routesToLookupRoutes(ctx, "filtered", src, neighbors, res.Filtered)
lookupRoutes := append(imported, filtered...)
if err = s.backend.SetRoutes(ctx, src.ID, lookupRoutes); err != nil {
@ -188,11 +193,10 @@ func (s *RoutesStore) routesToLookupRoutes(
ctx context.Context,
state string,
src *config.SourceConfig,
neighbors map[string]*api.Neighbor,
routes api.Routes,
) api.LookupRoutes {
lookupRoutes := make(api.LookupRoutes, 0, len(routes))
neighbors := s.neighbors.GetNeighborsMapAt(ctx, src.ID)
for _, route := range routes {
neighbor, ok := neighbors[route.NeighborID]
if !ok {

View File

@ -41,8 +41,16 @@ func importRoutes(
ctx := context.Background()
// Prepare imported routes for lookup
imported := s.routesToLookupRoutes(ctx, "imported", src, res.Imported)
filtered := s.routesToLookupRoutes(ctx, "filtered", src, res.Filtered)
neighbors := map[string]*api.Neighbor{
"ID163_AS31078": &api.Neighbor{
ID: "ID163_AS31078",
},
"ID7254_AS31334": &api.Neighbor{
ID: "ID7254_AS31334",
},
}
imported := s.routesToLookupRoutes(ctx, "imported", src, neighbors, res.Imported)
filtered := s.routesToLookupRoutes(ctx, "filtered", src, neighbors, res.Filtered)
lookupRoutes := append(imported, filtered...)
if err := s.backend.SetRoutes(ctx, src.ID, lookupRoutes); err != nil {