mirror of
https://github.com/rancher/plugins.git
synced 2025-07-09 13:15:20 +00:00
138 lines
3.4 KiB
Go
138 lines
3.4 KiB
Go
package cni
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/Microsoft/hcsshim/internal/guid"
|
|
"github.com/Microsoft/hcsshim/internal/regstate"
|
|
)
|
|
|
|
func Test_LoadPersistedNamespaceConfig_NoConfig(t *testing.T) {
|
|
pnc, err := LoadPersistedNamespaceConfig(t.Name())
|
|
if pnc != nil {
|
|
t.Fatal("config should be nil")
|
|
}
|
|
if err == nil {
|
|
t.Fatal("err should be set")
|
|
} else {
|
|
if !regstate.IsNotFoundError(err) {
|
|
t.Fatal("err should be NotFoundError")
|
|
}
|
|
}
|
|
}
|
|
|
|
func Test_LoadPersistedNamespaceConfig_WithConfig(t *testing.T) {
|
|
pnc := NewPersistedNamespaceConfig(t.Name(), "test-container", guid.New())
|
|
err := pnc.Store()
|
|
if err != nil {
|
|
pnc.Remove()
|
|
t.Fatalf("store failed with: %v", err)
|
|
}
|
|
defer pnc.Remove()
|
|
|
|
pnc2, err := LoadPersistedNamespaceConfig(t.Name())
|
|
if err != nil {
|
|
t.Fatal("should have no error on stored config")
|
|
}
|
|
if pnc2 == nil {
|
|
t.Fatal("stored config should have been returned")
|
|
} else {
|
|
if pnc.namespaceID != pnc2.namespaceID {
|
|
t.Fatal("actual/stored namespaceID not equal")
|
|
}
|
|
if pnc.ContainerID != pnc2.ContainerID {
|
|
t.Fatal("actual/stored ContainerID not equal")
|
|
}
|
|
if pnc.HostUniqueID != pnc2.HostUniqueID {
|
|
t.Fatal("actual/stored HostUniqueID not equal")
|
|
}
|
|
if !pnc2.stored {
|
|
t.Fatal("stored should be true for registry load")
|
|
}
|
|
}
|
|
}
|
|
|
|
func Test_PersistedNamespaceConfig_StoreNew(t *testing.T) {
|
|
pnc := NewPersistedNamespaceConfig(t.Name(), "test-container", guid.New())
|
|
err := pnc.Store()
|
|
if err != nil {
|
|
pnc.Remove()
|
|
t.Fatalf("store failed with: %v", err)
|
|
}
|
|
defer pnc.Remove()
|
|
}
|
|
|
|
func Test_PersistedNamespaceConfig_StoreUpdate(t *testing.T) {
|
|
pnc := NewPersistedNamespaceConfig(t.Name(), "test-container", guid.New())
|
|
err := pnc.Store()
|
|
if err != nil {
|
|
pnc.Remove()
|
|
t.Fatalf("store failed with: %v", err)
|
|
}
|
|
defer pnc.Remove()
|
|
|
|
pnc.ContainerID = "test-container2"
|
|
pnc.HostUniqueID = guid.New()
|
|
err = pnc.Store()
|
|
if err != nil {
|
|
pnc.Remove()
|
|
t.Fatalf("store update failed with: %v", err)
|
|
}
|
|
|
|
// Verify the update
|
|
pnc2, err := LoadPersistedNamespaceConfig(t.Name())
|
|
if err != nil {
|
|
t.Fatal("stored config should have been returned")
|
|
}
|
|
if pnc.ContainerID != pnc2.ContainerID {
|
|
t.Fatal("actual/stored ContainerID not equal")
|
|
}
|
|
if pnc.HostUniqueID != pnc2.HostUniqueID {
|
|
t.Fatal("actual/stored HostUniqueID not equal")
|
|
}
|
|
}
|
|
|
|
func Test_PersistedNamespaceConfig_RemoveNotStored(t *testing.T) {
|
|
pnc := NewPersistedNamespaceConfig(t.Name(), "test-container", guid.New())
|
|
err := pnc.Remove()
|
|
if err != nil {
|
|
t.Fatalf("remove on not stored should not fail: %v", err)
|
|
}
|
|
}
|
|
|
|
func Test_PersistedNamespaceConfig_RemoveStoredKey(t *testing.T) {
|
|
pnc := NewPersistedNamespaceConfig(t.Name(), "test-container", guid.New())
|
|
err := pnc.Store()
|
|
if err != nil {
|
|
t.Fatalf("store failed with: %v", err)
|
|
}
|
|
err = pnc.Remove()
|
|
if err != nil {
|
|
t.Fatalf("remove on stored key should not fail: %v", err)
|
|
}
|
|
}
|
|
|
|
func Test_PersistedNamespaceConfig_RemovedOtherKey(t *testing.T) {
|
|
pnc := NewPersistedNamespaceConfig(t.Name(), "test-container", guid.New())
|
|
err := pnc.Store()
|
|
if err != nil {
|
|
t.Fatalf("store failed with: %v", err)
|
|
}
|
|
|
|
pnc2, err := LoadPersistedNamespaceConfig(t.Name())
|
|
if err != nil {
|
|
t.Fatal("should of found stored config")
|
|
}
|
|
|
|
err = pnc.Remove()
|
|
if err != nil {
|
|
t.Fatalf("remove on stored key should not fail: %v", err)
|
|
}
|
|
|
|
// Now remove the other key that has the invalid memory state
|
|
err = pnc2.Remove()
|
|
if err != nil {
|
|
t.Fatalf("remove on in-memory already removed should not fail: %v", err)
|
|
}
|
|
}
|