From 77e9b2181a109aa17102dfcd5f298d16beb87abe Mon Sep 17 00:00:00 2001 From: Boshi Lian Date: Thu, 6 Feb 2025 01:48:49 -0800 Subject: [PATCH] Update Dockerfile to use pre-built OpenSSH binary and fix test reference to SSH binary (#522) * Update Dockerfile to use pre-built OpenSSH binary and fix test reference to SSH binary * Add support for multiple SSH binary versions in tests --- Dockerfile | 10 ++---- e2e/fixed_test.go | 79 ++++++++++++++++++++++++++++------------------- 2 files changed, 50 insertions(+), 39 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8a7e703f..d880f065 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,15 +13,9 @@ RUN --mount=target=/src,type=bind,source=. --mount=type=cache,target=/root/.cach ADD entrypoint.sh /sshpiperd FROM builder as testrunner -RUN apt update && apt install -y autoconf automake libssl-dev libz-dev -RUN cd /tmp && \ - curl -fsSL https://github.com/openssh/openssh-portable/archive/refs/tags/V_9_8_P1.tar.gz | tar xz && \ - cd openssh-portable-V_9_8_P1 && \ - autoreconf && \ - ./configure && \ - make ssh && \ - cp ssh /usr/bin/ssh-9.8.1p1 +COPY --from=farmer1992/openssh-static:V_9_8_P1 /usr/bin/ssh /usr/bin/ssh-9.8p1 +COPY --from=farmer1992/openssh-static:V_8_0_P1 /usr/bin/ssh /usr/bin/ssh-8.0p1 FROM docker.io/busybox # LABEL maintainer="Boshi Lian" diff --git a/e2e/fixed_test.go b/e2e/fixed_test.go index 1250f597..17db72bf 100644 --- a/e2e/fixed_test.go +++ b/e2e/fixed_test.go @@ -30,41 +30,58 @@ func TestFixed(t *testing.T) { waitForEndpointReady(piperaddr) - randtext := uuid.New().String() - targetfie := uuid.New().String() + for _, tc := range []struct { + name string + bin string + }{ + { + name: "without-sshping", + bin: "ssh-8.0p1", + }, + { + name: "with-sshping", + bin: "ssh-9.8p1", + }, + } { + t.Run(tc.name, func(t *testing.T) { + randtext := uuid.New().String() + targetfie := uuid.New().String() - c, stdin, stdout, err := runCmd( - "ssh-9.8.1p1", - "-v", - "-o", - "StrictHostKeyChecking=no", - "-o", - "UserKnownHostsFile=/dev/null", - "-o", - "RequestTTY=yes", - "-p", - piperport, - "-l", - "user", - "127.0.0.1", - fmt.Sprintf(`sh -c "echo SSHREADY && sleep 1 && echo -n %v > /shared/%v"`, randtext, targetfie), // sleep 1 to cover https://github.com/tg123/sshpiper/issues/323 - ) + c, stdin, stdout, err := runCmd( + tc.bin, + "-v", + "-o", + "StrictHostKeyChecking=no", + "-o", + "UserKnownHostsFile=/dev/null", + "-o", + "RequestTTY=yes", + "-p", + piperport, + "-l", + "user", + "127.0.0.1", + fmt.Sprintf(`sh -c "echo SSHREADY && sleep 1 && echo -n %v > /shared/%v"`, randtext, targetfie), // sleep 1 to cover https://github.com/tg123/sshpiper/issues/323 + ) - if err != nil { - t.Errorf("failed to ssh to piper-fixed, %v", err) + if err != nil { + t.Errorf("failed to ssh to piper-fixed, %v", err) + } + + defer killCmd(c) + + enterPassword(stdin, stdout, "pass") + + waitForStdoutContains(stdout, "SSHREADY", func(_ string) { + _, _ = stdin.Write([]byte(fmt.Sprintf("%v\n", "triggerping"))) + }) + + time.Sleep(time.Second * 3) // wait for file flush + + checkSharedFileContent(t, targetfie, randtext) + }) } - defer killCmd(c) - - enterPassword(stdin, stdout, "pass") - - waitForStdoutContains(stdout, "SSHREADY", func(_ string) { - _, _ = stdin.Write([]byte(fmt.Sprintf("%v\n", "triggerping"))) - }) - - time.Sleep(time.Second * 3) // wait for file flush - - checkSharedFileContent(t, targetfie, randtext) } func TestHostkeyParam(t *testing.T) {