Tests whether nerdctl skips the creation of the default network if a network bearing the default network name already exists in a non-nerdctl-managed network config file.
(t *testing.T)
| 305 | // network bearing the default network name already exists in a |
| 306 | // non-nerdctl-managed network config file. |
| 307 | func TestNetworkWithDefaultNameAlreadyExists(t *testing.T) { |
| 308 | // We create a tempdir for the CNI conf path to ensure an empty env for this test. |
| 309 | cniConfTestDir := t.TempDir() |
| 310 | cniEnv := CNIEnv{ |
| 311 | Path: t.TempDir(), // irrelevant for this test |
| 312 | NetconfPath: cniConfTestDir, |
| 313 | } |
| 314 | |
| 315 | // Ensure no default network config is not present. |
| 316 | defaultNetConf, err := cniEnv.GetDefaultNetworkConfig() |
| 317 | assert.NilError(t, err) |
| 318 | assert.Assert(t, defaultNetConf == nil) |
| 319 | |
| 320 | // Manually define and write a network config file. |
| 321 | values := map[string]string{ |
| 322 | "network_name": DefaultNetworkName, |
| 323 | "subnet": "10.7.1.1/24", |
| 324 | "gateway": "10.7.1.1", |
| 325 | } |
| 326 | tpl, err := template.New("test").Parse(preExistingNetworkConfigTemplate) |
| 327 | assert.NilError(t, err) |
| 328 | buf := &bytes.Buffer{} |
| 329 | assert.NilError(t, tpl.ExecuteTemplate(buf, "test", values)) |
| 330 | |
| 331 | // Filename is irrelevant as long as it's not nerdctl's. |
| 332 | testConfFile := filepath.Join(cniConfTestDir, fmt.Sprintf("%s.conf", testutil.Identifier(t))) |
| 333 | err = filesystem.WriteFile(testConfFile, buf.Bytes(), 0600) |
| 334 | assert.NilError(t, err) |
| 335 | |
| 336 | // Check network is detected. |
| 337 | netConfs, err := cniEnv.NetworkList() |
| 338 | assert.NilError(t, err) |
| 339 | assert.Assert(t, len(netConfs) > 0) |
| 340 | |
| 341 | var listedDefaultNetConf *NetworkConfig |
| 342 | for _, netConf := range netConfs { |
| 343 | if netConf.Name == DefaultNetworkName { |
| 344 | listedDefaultNetConf = netConf |
| 345 | break |
| 346 | } |
| 347 | } |
| 348 | assert.Assert(t, listedDefaultNetConf != nil) |
| 349 | |
| 350 | defaultNetConf, err = cniEnv.GetDefaultNetworkConfig() |
| 351 | assert.NilError(t, err) |
| 352 | assert.Assert(t, defaultNetConf != nil) |
| 353 | assert.Assert(t, defaultNetConf.File == testConfFile) |
| 354 | |
| 355 | err = cniEnv.ensureDefaultNetworkConfig("") |
| 356 | assert.NilError(t, err) |
| 357 | |
| 358 | netConfs, err = cniEnv.NetworkList() |
| 359 | assert.NilError(t, err) |
| 360 | defaultNamedNetworksFileDefinitions := []string{} |
| 361 | for _, netConf := range netConfs { |
| 362 | if netConf.Name == DefaultNetworkName { |
| 363 | defaultNamedNetworksFileDefinitions = append(defaultNamedNetworksFileDefinitions, netConf.File) |
| 364 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…