Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-05-19 10:33:21 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-05-19 10:33:21 +0300
commit36a59d088eca61b834191dacea009677a96c052f (patch)
treee4f33972dab5d8ef79e3944a9f403035fceea43f /workhorse/listener_test.go
parenta1761f15ec2cae7c7f7bbda39a75494add0dfd6f (diff)
Add latest changes from gitlab-org/gitlab@15-0-stable-eev15.0.0-rc42
Diffstat (limited to 'workhorse/listener_test.go')
-rw-r--r--workhorse/listener_test.go94
1 files changed, 94 insertions, 0 deletions
diff --git a/workhorse/listener_test.go b/workhorse/listener_test.go
new file mode 100644
index 00000000000..26b5535af09
--- /dev/null
+++ b/workhorse/listener_test.go
@@ -0,0 +1,94 @@
+package main
+
+import (
+ "crypto/tls"
+ "crypto/x509"
+ "io"
+ "net"
+ "os"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+
+ "gitlab.com/gitlab-org/gitlab/workhorse/internal/config"
+)
+
+func TestNewListener(t *testing.T) {
+ const unixSocket = "testdata/sock"
+
+ require.NoError(t, os.RemoveAll(unixSocket))
+
+ testCases := []struct {
+ network, addr string
+ }{
+ {"tcp", "127.0.0.1:0"},
+ {"unix", unixSocket},
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.network+"+"+tc.addr, func(t *testing.T) {
+ l, err := newListener("test", config.ListenerConfig{
+ Addr: tc.addr,
+ Network: tc.network,
+ })
+ require.NoError(t, err)
+ defer l.Close()
+ go pingServer(l)
+
+ c, err := net.Dial(tc.network, l.Addr().String())
+ require.NoError(t, err)
+ defer c.Close()
+ pingClient(t, c)
+ })
+ }
+}
+
+func pingServer(l net.Listener) {
+ c, err := l.Accept()
+ if err != nil {
+ return
+ }
+ io.WriteString(c, "ping")
+ c.Close()
+}
+
+func pingClient(t *testing.T, c net.Conn) {
+ t.Helper()
+ buf, err := io.ReadAll(c)
+ require.NoError(t, err)
+ require.Equal(t, "ping", string(buf))
+}
+
+func TestNewListener_TLS(t *testing.T) {
+ const (
+ certFile = "testdata/localhost.crt"
+ keyFile = "testdata/localhost.key"
+ )
+
+ cfg := config.ListenerConfig{Addr: "127.0.0.1:0",
+ Network: "tcp",
+ Tls: &config.TlsConfig{
+ Certificate: certFile,
+ Key: keyFile,
+ },
+ }
+
+ l, err := newListener("test", cfg)
+ require.NoError(t, err)
+ defer l.Close()
+ go pingServer(l)
+
+ tlsCertificate, err := tls.LoadX509KeyPair(certFile, keyFile)
+ require.NoError(t, err)
+
+ certificate, err := x509.ParseCertificate(tlsCertificate.Certificate[0])
+ require.NoError(t, err)
+ certpool := x509.NewCertPool()
+ certpool.AddCert(certificate)
+
+ c, err := tls.Dial("tcp", l.Addr().String(), &tls.Config{RootCAs: certpool})
+ require.NoError(t, err)
+ defer c.Close()
+
+ pingClient(t, c)
+}