From 67e4b4df7c4f73e92eefe1351c8f1ce33b400aba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 8 Aug 2024 13:32:05 +0200 Subject: [PATCH 1/2] docs: add consistent snippets for network creation --- docs/features/creating_networks.md | 4 +- network/examples_test.go | 75 ++++++++++++++++++++++++++++++ network/network_test.go | 49 +++++-------------- 3 files changed, 88 insertions(+), 40 deletions(-) create mode 100644 network/examples_test.go diff --git a/docs/features/creating_networks.md b/docs/features/creating_networks.md index 09be152a55..7ee490104d 100644 --- a/docs/features/creating_networks.md +++ b/docs/features/creating_networks.md @@ -25,6 +25,6 @@ It's important to mention that the name of the network is automatically generate ## Usage example -[Creating a network](../../network/network_test.go) inside_block:createNetwork -[Creating a network with options](../../network/network_test.go) inside_block:newNetworkWithOptions +[Creating a network](../../network/examples_test.go) inside_block:createNetwork +[Creating a network with options](../../network/examples_test.go) inside_block:newNetworkWithOptions \ No newline at end of file diff --git a/network/examples_test.go b/network/examples_test.go new file mode 100644 index 0000000000..75e3328d06 --- /dev/null +++ b/network/examples_test.go @@ -0,0 +1,75 @@ +package network_test + +import ( + "context" + "fmt" + "log" + + dockernetwork "github.com/docker/docker/api/types/network" + "github.com/testcontainers/testcontainers-go/network" +) + +func ExampleNew() { + // createNetwork { + ctx := context.Background() + + net, err := network.New(ctx) + if err != nil { + fmt.Println(err) + return + } + defer func() { + if err := net.Remove(ctx); err != nil { + log.Fatalf("failed to remove network: %s", err) + } + }() + // } + + fmt.Println(net.ID != "") + fmt.Println(net.Driver) + + // Output: + // true + // bridge +} + +func ExampleNew_withOptions() { + // newNetworkWithOptions { + ctx := context.Background() + + // dockernetwork is the alias used for github.com/docker/docker/api/types/network + ipamConfig := dockernetwork.IPAM{ + Driver: "default", + Config: []dockernetwork.IPAMConfig{ + { + Subnet: "10.1.1.0/24", + Gateway: "10.1.1.254", + }, + }, + Options: map[string]string{ + "driver": "host-local", + }, + } + net, err := network.New(ctx, + network.WithIPAM(&ipamConfig), + network.WithAttachable(), + network.WithDriver("bridge"), + ) + if err != nil { + fmt.Println(err) + return + } + defer func() { + if err := net.Remove(ctx); err != nil { + log.Fatalf("failed to remove network: %s", err) + } + }() + // } + + fmt.Println(net.ID != "") + fmt.Println(net.Driver) + + // Output: + // true + // bridge +} diff --git a/network/network_test.go b/network/network_test.go index ddc92f36c7..a82b576326 100644 --- a/network/network_test.go +++ b/network/network_test.go @@ -2,8 +2,6 @@ package network_test import ( "context" - "fmt" - "log" "testing" "time" @@ -23,9 +21,7 @@ const ( nginxDefaultPort = "80/tcp" ) -// Create a network. -func ExampleNew() { - // createNetwork { +func TestNew(t *testing.T) { ctx := context.Background() net, err := network.New(ctx, @@ -35,18 +31,14 @@ func ExampleNew() { network.WithInternal(), network.WithLabels(map[string]string{"this-is-a-test": "value"}), ) - if err != nil { - fmt.Println(err) - return - } + require.NoError(t, err) defer func() { if err := net.Remove(ctx); err != nil { - log.Fatalf("failed to remove network: %s", err) + t.Fatalf("failed to remove network: %s", err) } }() networkName := net.Name - // } nginxC, _ := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{ ContainerRequest: testcontainers.ContainerRequest{ @@ -62,49 +54,30 @@ func ExampleNew() { }) defer func() { if err := nginxC.Terminate(ctx); err != nil { - log.Fatalf("failed to terminate container: %s", err) + t.Fatalf("failed to terminate container: %s", err) } }() client, err := testcontainers.NewDockerClientWithOpts(context.Background()) - if err != nil { - fmt.Println(err) - return - } + require.NoError(t, err) resources, err := client.NetworkList(context.Background(), dockernetwork.ListOptions{ Filters: filters.NewArgs(filters.Arg("name", networkName)), }) - if err != nil { - fmt.Println(err) - return - } + require.NoError(t, err) - fmt.Println(len(resources)) + assert.Equal(t, 1, len(resources)) newNetwork := resources[0] expectedLabels := testcontainers.GenericLabels() expectedLabels["this-is-a-test"] = "true" - fmt.Println(newNetwork.Attachable) - fmt.Println(newNetwork.Internal) - fmt.Println(newNetwork.Labels["this-is-a-test"]) - - state, err := nginxC.State(ctx) - if err != nil { - fmt.Println(err) - return - } - - fmt.Println(state.Running) + assert.True(t, newNetwork.Attachable) + assert.True(t, newNetwork.Internal) + assert.Equal(t, "value", newNetwork.Labels["this-is-a-test"]) - // Output: - // 1 - // true - // true - // value - // true + require.NoError(t, err) } // testNetworkAliases { From df49a0f3b3ae5d67cc2007a40df5b8837eab9eaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20de=20la=20Pe=C3=B1a?= Date: Thu, 8 Aug 2024 13:37:23 +0200 Subject: [PATCH 2/2] fix: lint --- network/examples_test.go | 1 + network/network_test.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/network/examples_test.go b/network/examples_test.go index 75e3328d06..7335b85564 100644 --- a/network/examples_test.go +++ b/network/examples_test.go @@ -6,6 +6,7 @@ import ( "log" dockernetwork "github.com/docker/docker/api/types/network" + "github.com/testcontainers/testcontainers-go/network" ) diff --git a/network/network_test.go b/network/network_test.go index a82b576326..4ff80e2bed 100644 --- a/network/network_test.go +++ b/network/network_test.go @@ -66,7 +66,7 @@ func TestNew(t *testing.T) { }) require.NoError(t, err) - assert.Equal(t, 1, len(resources)) + assert.Len(t, resources, 1) newNetwork := resources[0]