Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v0.12.0
v0.13.0
2 changes: 1 addition & 1 deletion strelets/adapter/orchestrator.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"time"
)

const DOCKER_API_VERSION = "1.38"
const DOCKER_API_VERSION = "1.40"

const PROXY_CONTAINER_NAME = "http-api-reverse-proxy"

Expand Down
2 changes: 1 addition & 1 deletion strelets/adapter/swarm_prepare.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func getContainerSpec(imageName string, secrets []*swarm.SecretReference, mounts
Image: imageName,
Command: command,
Secrets: secrets,
Sysctls: getSysctls(),
Sysctls: GetSysctls(),
Mounts: mounts,
}
}
Expand Down
2 changes: 1 addition & 1 deletion strelets/adapter/swarm_prepare_reverse_proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ func getNginxServiceSpec(storedSecrets *dockerSwarmNginxSecretsConfig) swarm.Ser
Command: []string{
"nginx", "-c", "/var/run/secrets/nginx.conf",
},
Sysctls: getSysctls(),
Sysctls: GetSysctls(),
},
RestartPolicy: &swarm.RestartPolicy{
Delay: &restartDelay,
Expand Down
2 changes: 1 addition & 1 deletion strelets/adapter/swarm_prepare_reverse_proxy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func Test_getNginxServiceSpec(t *testing.T) {
},
},
},
Sysctls: getSysctls(),
Sysctls: GetSysctls(),
},
RestartPolicy: &swarm.RestartPolicy{
Condition: "",
Expand Down
2 changes: 1 addition & 1 deletion strelets/adapter/swarm_prepare_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ func Test_getServiceSpec(t *testing.T) {
"--config", "/var/run/secrets/some-secret.json",
},
Secrets: secrets,
Sysctls: getSysctls(),
Sysctls: GetSysctls(),
Mounts: mounts,
},
RestartPolicy: &swarm.RestartPolicy{
Expand Down
4 changes: 2 additions & 2 deletions strelets/adapter/sysctls.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package adapter

func getSysctls() map[string]string {
func GetSysctls() map[string]string {
sysctls := make(map[string]string)
sysctls["net.core.somaxconn"] = "25000"
sysctls["net.core.somaxconn"] = "128000"

return sysctls
}
64 changes: 64 additions & 0 deletions test/e2e/e2e_strelets_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ package e2e
import (
"context"
"fmt"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters"
"github.com/docker/docker/client"
"github.com/orbs-network/boyarin/strelets"
"github.com/orbs-network/boyarin/strelets/adapter"
"github.com/orbs-network/boyarin/test/helpers"
Expand Down Expand Up @@ -117,3 +120,64 @@ func TestE2EKeepVolumesBetweenReloadsWithSwarm(t *testing.T) {

helpers.WaitForBlock(t, helpers.GetMetricsForPort(8081), expectedBlockHeight, WAIT_FOR_BLOCK_TIMEOUT)
}

func TestCreateServiceSysctls(t *testing.T) {
t.Skip("not supported on Mac or CI, relies on 19.03 beta features")
helpers.SkipUnlessSwarmIsEnabled(t)

client, err := client.NewClientWithOpts(client.WithVersion(adapter.DOCKER_API_VERSION))
if err != nil {
t.Errorf("could not connect to docker: %s", err)
t.FailNow()
}
defer client.Close()

ctx := context.Background()

swarm, err := adapter.NewDockerSwarm(adapter.OrchestratorOptions{})
require.NoError(t, err)
s := strelets.NewStrelets(swarm)

startChainWithStrelets(t, s, 1)
defer stopChainWithStrelets(t, s, 1)

time.Sleep(5 * time.Second)

// Straight from Docker integration test:
// integration/service/create_test.go
// https://github.com/moby/moby/pull/37701/files#diff-204a9536b52c895f8a02e75d2e00dd16

// we're going to check 3 things:
//
// 1. Does the container, when inspected, have the sysctl option set?
// 2. Does the task have the sysctl in the spec?
// 3. Does the service have the sysctl in the spec?
//
// if all 3 of these things are true, we know that the sysctl has been
// plumbed correctly through the engine.

// get all of the tasks of the service, so we can get the container
filter := filters.NewArgs()
filter.Add("service", "node1-chain-42-stack")
tasks, err := client.TaskList(ctx, types.TaskListOptions{
Filters: filter,
})
require.NoError(t, err)
require.Len(t, tasks, 1)

// verify that the container has the sysctl option set
ctnr, err := client.ContainerInspect(ctx, tasks[0].Status.ContainerStatus.ContainerID)
require.NoError(t, err)
require.EqualValuesf(t, adapter.GetSysctls(), ctnr.HostConfig.Sysctls, "failed to set container sysctls")

// verify that the task has the sysctl option set in the task object
require.EqualValuesf(t, adapter.GetSysctls(), tasks[0].Spec.ContainerSpec.Sysctls, "failed to set container spec sysctls")

// verify that the service also has the sysctl set in the spec.
service, _, err := client.ServiceInspectWithRaw(ctx, "node1-chain-42-stack", types.ServiceInspectOptions{})
require.NoError(t, err)
require.EqualValuesf(t,
adapter.GetSysctls(), service.Spec.TaskTemplate.ContainerSpec.Sysctls,
"failed to set service sysctls",
)
}
2 changes: 1 addition & 1 deletion vendor/github.com/docker/docker