1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
//go:build linux
package netavark_test
import (
"bytes"
"path/filepath"
"github.com/containers/common/libnetwork/types"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"github.com/sirupsen/logrus"
)
const pluginName = "netavark-testplugin"
var _ = Describe("Plugins", func() {
var (
libpodNet types.ContainerNetwork
networkConfDir string
logBuffer bytes.Buffer
)
BeforeEach(func() {
t := GinkgoT()
networkConfDir = t.TempDir()
logBuffer = bytes.Buffer{}
logrus.SetOutput(&logBuffer)
})
JustBeforeEach(func() {
var err error
libpodNet, err = getNetworkInterfaceWithPlugins(networkConfDir, []string{"../../bin"})
if err != nil {
Fail("Failed to create NewNetworkInterface")
}
})
It("create plugin network", func() {
network := types.Network{Driver: pluginName}
network1, err := libpodNet.NetworkCreate(network, nil)
Expect(err).ToNot(HaveOccurred())
Expect(network1.Name).ToNot(BeEmpty())
Expect(network1.ID).ToNot(BeEmpty())
Expect(filepath.Join(networkConfDir, network1.Name+".json")).To(BeARegularFile())
})
It("create plugin network with name", func() {
name := "test123"
network := types.Network{Driver: pluginName, Name: name}
network1, err := libpodNet.NetworkCreate(network, nil)
Expect(err).ToNot(HaveOccurred())
Expect(network1.Name).To(Equal(name))
Expect(network1.ID).ToNot(BeEmpty())
Expect(filepath.Join(networkConfDir, network1.Name+".json")).To(BeARegularFile())
})
It("create plugin error", func() {
network := types.Network{
Driver: pluginName,
Options: map[string]string{"error": "my custom error"},
}
_, err := libpodNet.NetworkCreate(network, nil)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal("plugin ../../bin/netavark-testplugin failed: netavark (exit code 1): my custom error"))
})
It("create plugin change name error", func() {
network := types.Network{
Driver: pluginName,
Options: map[string]string{"name": "newName"},
}
_, err := libpodNet.NetworkCreate(network, nil)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal("invalid plugin result: changed network name"))
})
It("create plugin change id error", func() {
network := types.Network{
Driver: pluginName,
Options: map[string]string{"id": "newID"},
}
_, err := libpodNet.NetworkCreate(network, nil)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal("invalid plugin result: changed network ID"))
})
It("create plugin change driver error", func() {
network := types.Network{
Driver: pluginName,
Options: map[string]string{"driver": "newDriver"},
}
_, err := libpodNet.NetworkCreate(network, nil)
Expect(err).To(HaveOccurred())
Expect(err.Error()).To(Equal("invalid plugin result: changed network driver"))
})
})
|