Skip to content

Commit bd4fbe8

Browse files
committed
start app test dood part two
1 parent c0cbd6d commit bd4fbe8

File tree

2 files changed

+12
-122
lines changed

2 files changed

+12
-122
lines changed

internal/e2e/startapp/helper.go

Lines changed: 11 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"bufio"
55
"bytes"
66
"context"
7-
"encoding/json"
87
"fmt"
98
"iter"
109
"log"
@@ -13,7 +12,6 @@ import (
1312
"os"
1413
"os/exec"
1514
"path/filepath"
16-
"strconv"
1715
"strings"
1816
"testing"
1917
"time"
@@ -87,50 +85,13 @@ func buildDebVersion(t *testing.T, storePath, tagVersion, arch string) {
8785
}
8886
}
8987

90-
func genMajorTag(t *testing.T, tag string) string {
91-
t.Helper()
92-
93-
parts := strings.Split(tag, ".")
94-
last := parts[len(parts)-1]
95-
96-
lastNum, _ := strconv.Atoi(strings.TrimPrefix(last, "v"))
97-
lastNum++
98-
99-
parts[len(parts)-1] = strconv.Itoa(lastNum)
100-
newTag := strings.Join(parts, ".")
101-
102-
return newTag
103-
}
104-
105-
func genMinorTag(t *testing.T, tag string) string {
106-
t.Helper()
107-
108-
parts := strings.Split(tag, ".")
109-
last := parts[len(parts)-1]
110-
111-
lastNum, _ := strconv.Atoi(strings.TrimPrefix(last, "v"))
112-
if lastNum > 0 {
113-
lastNum--
114-
}
115-
116-
parts[len(parts)-1] = strconv.Itoa(lastNum)
117-
newTag := strings.Join(parts, ".")
118-
119-
if !strings.HasPrefix(newTag, "v") {
120-
newTag = "v" + newTag
121-
}
122-
return newTag
123-
}
124-
125-
func buildDockerImage(t *testing.T, dockerfile, name, arch, dockerGid string) {
88+
func buildDockerImage(t *testing.T, dockerfile, name, arch string) {
12689
t.Helper()
12790

12891
archArg := fmt.Sprintf("ARCH=%s", arch)
129-
gidArg := fmt.Sprintf("DOCKER_GID=%s", dockerGid)
13092

13193
cmd := exec.Command("docker", "build",
13294
"--build-arg", archArg,
133-
"--build-arg", gidArg,
13495
"-t", name, "-f", dockerfile, ".")
13596
// Capture both stdout and stderr
13697
var out bytes.Buffer
@@ -157,10 +118,9 @@ func startDockerContainer(t *testing.T, containerName string, containerImageName
157118
"-p", "8800:8800",
158119
"--privileged",
159120
"--cgroupns=host",
160-
//"--network", "host",
161121
"-v", "/sys/fs/cgroup:/sys/fs/cgroup:rw",
162-
"-v", "/var/run/docker.sock:/var/run/docker.sock",
163-
"-e", "DOCKER_HOST=unix:///var/run/docker.sock",
122+
"-v", "/var/run/docker.sock:/host/docker.sock",
123+
"-e", "DOCKER_HOST=unix:///host/docker.sock",
164124
"--name", containerName,
165125
containerImageName,
166126
)
@@ -171,47 +131,6 @@ func startDockerContainer(t *testing.T, containerName string, containerImageName
171131

172132
}
173133

174-
func getAppCliVersion(t *testing.T, containerName string) string {
175-
t.Helper()
176-
177-
cmd := exec.Command(
178-
"docker", "exec",
179-
"--user", "arduino",
180-
containerName,
181-
"arduino-app-cli", "version", "--format", "json",
182-
)
183-
output, err := cmd.CombinedOutput()
184-
if err != nil {
185-
log.Fatalf("command failed: %v\nOutput: %s", err, output)
186-
}
187-
188-
var version struct {
189-
Version string `json:"version"`
190-
DaemonVersion string `json:"daemon_version"`
191-
}
192-
err = json.Unmarshal(output, &version)
193-
require.NoError(t, err)
194-
// TODO to enable after 0.6.7
195-
// require.Equal(t, version.Version, version.DaemonVersion, "client and daemon versions should match")
196-
require.NotEmpty(t, version.Version)
197-
return version.Version
198-
199-
}
200-
201-
func runSystemUpdate(t *testing.T, containerName string) {
202-
t.Helper()
203-
204-
cmd := exec.Command(
205-
"docker", "exec",
206-
"--user", "arduino",
207-
containerName,
208-
"arduino-app-cli", "system", "update", "--yes",
209-
)
210-
output, err := cmd.CombinedOutput()
211-
require.NoError(t, err, "system update failed: %s", output)
212-
t.Logf("system update output: %s", output)
213-
}
214-
215134
func stopDockerContainer(t *testing.T, containerName string) {
216135
t.Helper()
217136

@@ -224,30 +143,6 @@ func stopDockerContainer(t *testing.T, containerName string) {
224143

225144
}
226145

227-
func putUpdateRequest(t *testing.T, host string) {
228-
229-
t.Helper()
230-
231-
url := fmt.Sprintf("http://%s/v1/system/update/apply", host)
232-
233-
req, err := http.NewRequest(http.MethodPut, url, nil)
234-
if err != nil {
235-
log.Fatalf("Error creating request: %v", err)
236-
}
237-
238-
req.Header.Set("Content-Type", "application/json")
239-
240-
client := &http.Client{}
241-
resp, err := client.Do(req)
242-
if err != nil {
243-
log.Fatalf("Error sending request: %v", err)
244-
}
245-
defer resp.Body.Close()
246-
247-
require.Equal(t, 202, resp.StatusCode)
248-
249-
}
250-
251146
func NewSSEClient(ctx context.Context, method, url string) iter.Seq2[Event, error] {
252147
return func(yield func(Event, error) bool) {
253148
req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
@@ -320,17 +215,21 @@ func waitForPort(t *testing.T, host string, timeout time.Duration) { // nolint:u
320215

321216
func runAppStart(t *testing.T, containerName, appName string) {
322217
t.Helper()
323-
appCommand := fmt.Sprintf("arduino-app-cli app start %s", appName)
218+
fixCmd := exec.Command("docker", "exec", containerName,
219+
"chmod", "666", "/host/docker.sock")
220+
221+
outputFix, errFix := fixCmd.CombinedOutput()
222+
require.NoError(t, errFix, "Failed to chmod docker socket: %s", outputFix)
223+
appCommand := fmt.Sprintf("/usr/bin/arduino-app-cli app start %s", appName)
324224

325225
cmd := exec.Command(
326226
"docker", "exec",
327227
containerName,
328-
"su", "-", "arduino",
329-
"-c", appCommand,
228+
"su", "arduino", "-c", appCommand,
330229
)
331230

332231
output, err := cmd.CombinedOutput()
333-
require.NoError(t, err, "start command filed: %s", output)
232+
require.NoError(t, err, "Start command failed: %s", output)
334233
t.Logf("Output comando 'start': %s", output)
335234
}
336235

internal/e2e/startapp/start_test.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ package startapp
33
import (
44
"fmt"
55
"os"
6-
"os/exec"
76
"runtime"
8-
"strings"
97
"testing"
108
"time"
119

@@ -31,16 +29,9 @@ func TestStartApp(t *testing.T) {
3129
fmt.Println("Fetching 'arduino-router' dependency...")
3230
fetchDebPackageLatest(t, "build", "arduino-router")
3331

34-
cmd := exec.Command("stat", "-c", "%g", "/var/run/docker.sock")
35-
outputBytes, err := cmd.Output()
36-
require.NoError(t, err, "could not get docker socket GID: %v", err)
37-
38-
dockerGid := strings.TrimSpace(string(outputBytes))
39-
fmt.Printf("**** Using Docker GID from Host: %s *****\n", dockerGid)
40-
4132
const dockerImageName = "e2e-start-test-image"
4233
fmt.Println("**** BUILD docker image (e2e-test-runner) *****")
43-
buildDockerImage(t, dockerFile, dockerImageName, arch, dockerGid)
34+
buildDockerImage(t, dockerFile, dockerImageName, arch)
4435
// TODO: aggiungere t.Cleanup per rimuovere l'immagine docker. da controllare se mi serve!
4536

4637
t.Run("Test App Start Command", func(t *testing.T) {

0 commit comments

Comments
 (0)