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  }