Skip to content

Commit 49f4f4d

Browse files
committed
network: add unit tests for internal flag
Signed-off-by: ChengyuZhu6 <[email protected]>
1 parent c35a3a7 commit 49f4f4d

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

cmd/nerdctl/network/network_create_linux_test.go

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package network
1818

1919
import (
20+
"encoding/json"
2021
"fmt"
2122
"net"
2223
"strings"
@@ -107,6 +108,53 @@ func TestNetworkCreate(t *testing.T) {
107108
}
108109
},
109110
},
111+
{
112+
Description: "internal enabled",
113+
Setup: func(data test.Data, helpers test.Helpers) {
114+
helpers.Ensure("network", "create", "--internal", data.Identifier())
115+
netw := nerdtest.InspectNetwork(helpers, data.Identifier())
116+
assert.Equal(t, len(netw.IPAM.Config), 1)
117+
data.Labels().Set("subnet", netw.IPAM.Config[0].Subnet)
118+
},
119+
Cleanup: func(data test.Data, helpers test.Helpers) {
120+
helpers.Anyhow("network", "rm", data.Identifier())
121+
},
122+
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
123+
return helpers.Command("run", "--rm", "--net", data.Identifier(), testutil.CommonImage, "ip", "route")
124+
},
125+
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
126+
return &test.Expected{
127+
ExitCode: 0,
128+
Output: func(stdout string, t tig.T) {
129+
assert.Assert(t, strings.Contains(stdout, data.Labels().Get("subnet")))
130+
assert.Assert(t, !strings.Contains(stdout, "default "))
131+
if nerdtest.IsDocker() {
132+
return
133+
}
134+
nativeNet := nerdtest.InspectNetworkNative(helpers, data.Identifier())
135+
var cni struct {
136+
Plugins []struct {
137+
Type string `json:"type"`
138+
IsGW bool `json:"isGateway"`
139+
IPMasq bool `json:"ipMasq"`
140+
} `json:"plugins"`
141+
}
142+
_ = json.Unmarshal(nativeNet.CNI, &cni)
143+
// bridge plugin assertions and no portmap
144+
foundBridge := false
145+
for _, p := range cni.Plugins {
146+
assert.Assert(t, p.Type != "portmap")
147+
if p.Type == "bridge" {
148+
foundBridge = true
149+
assert.Assert(t, !p.IsGW)
150+
assert.Assert(t, !p.IPMasq)
151+
}
152+
}
153+
assert.Assert(t, foundBridge)
154+
},
155+
}
156+
},
157+
},
110158
}
111159

112160
testCase.Run(t)

pkg/testutil/nerdtest/utilities.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,19 @@ func InspectNetwork(helpers test.Helpers, name string) dockercompat.Network {
8888
return res
8989
}
9090

91+
func InspectNetworkNative(helpers test.Helpers, name string) native.Network {
92+
helpers.T().Helper()
93+
var res native.Network
94+
cmd := helpers.Command("network", "inspect", "--mode", "native", name)
95+
cmd.Run(&test.Expected{
96+
Output: expect.JSON([]native.Network{}, func(dc []native.Network, t tig.T) {
97+
assert.Equal(t, 1, len(dc), "Unexpectedly got multiple results")
98+
res = dc[0]
99+
}),
100+
})
101+
return res
102+
}
103+
91104
func InspectImage(helpers test.Helpers, name string) dockercompat.Image {
92105
helpers.T().Helper()
93106
var res dockercompat.Image

0 commit comments

Comments
 (0)