github.com/containerd/nerdctl@v1.7.7/cmd/nerdctl/network_remove_linux_test.go (about) 1 /* 2 Copyright The containerd Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package main 18 19 import ( 20 "testing" 21 22 "github.com/containerd/nerdctl/pkg/rootlessutil" 23 "github.com/containerd/nerdctl/pkg/testutil" 24 "github.com/vishvananda/netlink" 25 "gotest.tools/v3/assert" 26 ) 27 28 func TestNetworkRemoveInOtherNamespace(t *testing.T) { 29 if rootlessutil.IsRootless() { 30 t.Skip("test skipped for remove rootless network") 31 } 32 if testutil.GetTarget() == testutil.Docker { 33 t.Skip("test skipped for docker") 34 } 35 // --namespace=nerdctl-test 36 base := testutil.NewBase(t) 37 // --namespace=nerdctl-other 38 baseOther := testutil.NewBaseWithNamespace(t, "nerdctl-other") 39 networkName := testutil.Identifier(t) 40 41 base.Cmd("network", "create", networkName).AssertOK() 42 defer base.Cmd("network", "rm", networkName).AssertOK() 43 44 tID := testutil.Identifier(t) 45 base.Cmd("run", "-d", "--net", networkName, "--name", tID, testutil.AlpineImage, "sleep", "infinity").AssertOK() 46 defer base.Cmd("rm", "-f", tID).Run() 47 48 // delete network in namespace nerdctl-other 49 baseOther.Cmd("network", "rm", networkName).AssertFail() 50 } 51 52 func TestNetworkRemove(t *testing.T) { 53 if rootlessutil.IsRootless() { 54 t.Skip("test skipped for remove rootless network") 55 } 56 base := testutil.NewBase(t) 57 networkName := testutil.Identifier(t) 58 59 base.Cmd("network", "create", networkName).AssertOK() 60 defer base.Cmd("network", "rm", networkName).Run() 61 62 networkID := base.InspectNetwork(networkName).ID 63 64 tID := testutil.Identifier(t) 65 base.Cmd("run", "--rm", "--net", networkName, "--name", tID, testutil.CommonImage).AssertOK() 66 67 _, err := netlink.LinkByName("br-" + networkID[:12]) 68 assert.NilError(t, err) 69 70 base.Cmd("network", "rm", networkName).AssertOK() 71 72 _, err = netlink.LinkByName("br-" + networkID[:12]) 73 assert.Error(t, err, "Link not found") 74 } 75 76 func TestNetworkRemoveWhenLinkWithContainer(t *testing.T) { 77 if rootlessutil.IsRootless() { 78 t.Skip("test skipped for remove rootless network") 79 } 80 base := testutil.NewBase(t) 81 networkName := testutil.Identifier(t) 82 83 base.Cmd("network", "create", networkName).AssertOK() 84 defer base.Cmd("network", "rm", networkName).AssertOK() 85 86 tID := testutil.Identifier(t) 87 base.Cmd("run", "-d", "--net", networkName, "--name", tID, testutil.AlpineImage, "sleep", "infinity").AssertOK() 88 defer base.Cmd("rm", "-f", tID).Run() 89 base.Cmd("network", "rm", networkName).AssertFail() 90 } 91 92 func TestNetworkRemoveById(t *testing.T) { 93 if rootlessutil.IsRootless() { 94 t.Skip("test skipped for remove rootless network") 95 } 96 base := testutil.NewBase(t) 97 networkName := testutil.Identifier(t) 98 99 base.Cmd("network", "create", networkName).AssertOK() 100 defer base.Cmd("network", "rm", networkName).Run() 101 102 networkID := base.InspectNetwork(networkName).ID 103 104 tID := testutil.Identifier(t) 105 base.Cmd("run", "--rm", "--net", networkName, "--name", tID, testutil.CommonImage).AssertOK() 106 107 _, err := netlink.LinkByName("br-" + networkID[:12]) 108 assert.NilError(t, err) 109 110 base.Cmd("network", "rm", networkID).AssertOK() 111 112 _, err = netlink.LinkByName("br-" + networkID[:12]) 113 assert.Error(t, err, "Link not found") 114 } 115 116 func TestNetworkRemoveByShortId(t *testing.T) { 117 if rootlessutil.IsRootless() { 118 t.Skip("test skipped for remove rootless network") 119 } 120 base := testutil.NewBase(t) 121 networkName := testutil.Identifier(t) 122 123 base.Cmd("network", "create", networkName).AssertOK() 124 defer base.Cmd("network", "rm", networkName).Run() 125 126 networkID := base.InspectNetwork(networkName).ID 127 128 tID := testutil.Identifier(t) 129 base.Cmd("run", "--rm", "--net", networkName, "--name", tID, testutil.CommonImage).AssertOK() 130 131 _, err := netlink.LinkByName("br-" + networkID[:12]) 132 assert.NilError(t, err) 133 134 base.Cmd("network", "rm", networkID[:12]).AssertOK() 135 136 _, err = netlink.LinkByName("br-" + networkID[:12]) 137 assert.Error(t, err, "Link not found") 138 }