moby/libnetwork/store_test.go
Albin Kerouanton 8070a9aa66 libnet: drop TestMultipleControllersWithSameStore
This test is non-representative of what we now do in libnetwork.
Since the ability of opening the same boltdb database multiple
times in parallel will be dropped in the next commit, just remove
this test.

Signed-off-by: Albin Kerouanton <albinker@gmail.com>
2024-02-02 09:19:07 +01:00

82 lines
2.3 KiB
Go

package libnetwork
import (
"os"
"path/filepath"
"testing"
"github.com/docker/docker/libnetwork/config"
store "github.com/docker/docker/libnetwork/internal/kvstore"
"github.com/docker/docker/libnetwork/netlabel"
"github.com/docker/docker/libnetwork/options"
)
func testLocalBackend(t *testing.T, provider, url string, storeConfig *store.Config) {
cfgOptions := []config.Option{func(c *config.Config) {
c.Scope.Client.Provider = provider
c.Scope.Client.Address = url
c.Scope.Client.Config = storeConfig
}}
cfgOptions = append(cfgOptions, config.OptionDriverConfig("host", map[string]interface{}{
netlabel.GenericData: options.Generic{},
}))
testController, err := New(cfgOptions...)
if err != nil {
t.Fatalf("Error new controller: %v", err)
}
defer testController.Stop()
nw, err := testController.NewNetwork("host", "host", "")
if err != nil {
t.Fatalf(`Error creating default "host" network: %v`, err)
}
ep, err := nw.CreateEndpoint("newendpoint", []EndpointOption{}...)
if err != nil {
t.Fatalf("Error creating endpoint: %v", err)
}
nwKVObject := &Network{id: nw.ID()}
err = testController.getStore().GetObject(nwKVObject)
if err != nil {
t.Errorf("Error when retrieving network key from store: %v", err)
}
if !nwKVObject.Exists() {
t.Errorf("Network key should have been created.")
}
epKVObject := &Endpoint{network: nw, id: ep.ID()}
err = testController.getStore().GetObject(epKVObject)
if err != nil {
t.Errorf("Error when retrieving Endpoint key from store: %v", err)
}
if !epKVObject.Exists() {
t.Errorf("Endpoint key should have been created.")
}
testController.Stop()
// test restore of local store
testController, err = New(cfgOptions...)
if err != nil {
t.Fatalf("Error creating controller: %v", err)
}
defer testController.Stop()
if _, err = testController.NetworkByID(nw.ID()); err != nil {
t.Errorf("Error getting network %v", err)
}
}
// OptionBoltdbWithRandomDBFile function returns a random dir for local store backend
func OptionBoltdbWithRandomDBFile(t *testing.T) config.Option {
t.Helper()
tmp := filepath.Join(t.TempDir(), "bolt.db")
if err := os.WriteFile(tmp, nil, 0o600); err != nil {
t.Fatal(err)
}
return func(c *config.Config) {
c.Scope.Client.Provider = "boltdb"
c.Scope.Client.Address = tmp
c.Scope.Client.Config = &store.Config{Bucket: "testBackend"}
}
}