Skip to content

Commit 6ffbe45

Browse files
committed
dood test e2e start app 3 part
1 parent bd4fbe8 commit 6ffbe45

File tree

4 files changed

+63
-17
lines changed

4 files changed

+63
-17
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/bin/bash
2+
set -e
3+
4+
# Mock GPU path
5+
mkdir -p /dev/dri || true
6+
if [ ! -e /dev/dri/renderD128 ]; then
7+
mknod /dev/dri/renderD128 c 226 128 || true
8+
fi
9+
10+
# Mock camera
11+
if [ ! -e /dev/video0 ]; then
12+
mknod /dev/video0 c 81 0 || true
13+
fi
14+
15+
# Continue with the actual CMD
16+
exec "$@"

internal/e2e/startapp/helper.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"bytes"
66
"context"
77
"fmt"
8+
"io"
89
"iter"
910
"log"
1011
"net"
@@ -118,6 +119,7 @@ func startDockerContainer(t *testing.T, containerName string, containerImageName
118119
"-p", "8800:8800",
119120
"--privileged",
120121
"--cgroupns=host",
122+
"--network", "host",
121123
"-v", "/sys/fs/cgroup:/sys/fs/cgroup:rw",
122124
"-v", "/var/run/docker.sock:/host/docker.sock",
123125
"-e", "DOCKER_HOST=unix:///host/docker.sock",
@@ -253,3 +255,25 @@ func stopAppContainer(t *testing.T, appContainerName string) {
253255
t.Helper()
254256
stopDockerContainer(t, appContainerName)
255257
}
258+
259+
func postCreateApp(t *testing.T, host string) {
260+
t.Helper()
261+
262+
url := fmt.Sprintf("http://%s/v1/apps?skip-python=false&skip-sketch=true", host)
263+
264+
payload := `{"name": "HelloWorld","description": "My HelloWorld description","icon": ""}`
265+
req, err := http.NewRequest(http.MethodPost, url, strings.NewReader(payload))
266+
require.NoError(t, err)
267+
268+
req.Header.Set("Content-Type", "application/json")
269+
270+
client := &http.Client{Timeout: 5 * time.Second}
271+
resp, err := client.Do(req)
272+
require.NoError(t, err)
273+
defer resp.Body.Close()
274+
275+
require.Equal(t, 200, resp.StatusCode)
276+
277+
body, _ := io.ReadAll(resp.Body)
278+
t.Logf("Response body: %s", body)
279+
}

internal/e2e/startapp/start_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,36 +32,36 @@ func TestStartApp(t *testing.T) {
3232
const dockerImageName = "e2e-start-test-image"
3333
fmt.Println("**** BUILD docker image (e2e-test-runner) *****")
3434
buildDockerImage(t, dockerFile, dockerImageName, arch)
35-
// TODO: aggiungere t.Cleanup per rimuovere l'immagine docker. da controllare se mi serve!
3635

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

3938
const containerA_Name = "e2e-test-runner"
40-
const containerB_AppName = "examples:object-detection"
41-
42-
//todo devo creare un app senza sketch, ma con qualche brick magari! oppure usare un esempio?
39+
const appToStart = "user:helloworld"
4340

4441
t.Cleanup(func() {
45-
stopDockerContainer(t, containerA_Name)
46-
stopAppContainer(t, containerB_AppName)
42+
//stopDockerContainer(t, containerA_Name)
43+
//stopAppContainer(t, appToStart)
4744
})
4845

4946
fmt.Println("**** RUN docker image (board container) *****")
5047
startDockerContainer(t, containerA_Name, dockerImageName)
5148

5249
waitForPort(t, daemonHost, 20*time.Second)
5350

54-
fmt.Printf("**** Telling e2e-test-runner to start app '%s' *****\n", containerB_AppName)
55-
runAppStart(t, containerA_Name, containerB_AppName)
51+
fmt.Println("**** Creating user app 'user:helloworld' *****")
52+
postCreateApp(t, daemonHost)
53+
54+
fmt.Printf("**** Telling e2e-test-runner to start app '%s' *****\n", appToStart)
55+
runAppStart(t, containerA_Name, appToStart)
5656

57-
fmt.Printf("**** Verifying on HOST if '%s' (Container B) is running *****\n", containerB_AppName)
57+
fmt.Printf("**** Verifying on HOST if '%s' ( app to start) is running *****\n", appToStart)
5858

5959
time.Sleep(1 * time.Second)
6060

61-
isRunning := checkContainerRunningOnHost(t, containerB_AppName)
61+
isRunning := checkContainerRunningOnHost(t, appToStart)
6262

63-
require.True(t, isRunning, "Il container B (%s) not foud", containerB_AppName)
63+
require.True(t, isRunning, "Il container B (%s) not foud", appToStart)
6464

65-
fmt.Printf("Success: e2e-test-runner successfully launched Container B (%s) on host.\n", containerB_AppName)
65+
fmt.Printf("Success: e2e-test-runner successfully launched app to start (%s) on host.\n", appToStart)
6666
})
6767
}
Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
FROM debian:trixie
22

3+
# Install packages first
34
RUN apt update && \
45
apt install -y systemd systemd-sysv dbus \
5-
sudo docker.io ca-certificates curl gnupg \
6-
dpkg-dev apt-utils adduser gzip && \
6+
sudo docker.io docker-compose \
7+
ca-certificates curl gnupg \
8+
dpkg-dev apt-utils adduser gzip && \
79
rm -rf /var/lib/apt/lists/*
810

911
ARG ARCH=amd64
@@ -14,12 +16,16 @@ COPY build/arduino-router*_${ARCH}.deb /tmp/router.deb
1416
RUN apt update && apt install -y /tmp/router.deb /tmp/app.deb \
1517
&& rm /tmp/app.deb /tmp/router.deb
1618

17-
RUN sed -i 's/--port 8800/--port 8800 --address 0.0.0.0/' /etc/systemd/system/arduino-app-cli.service
18-
1919
RUN usermod -s /bin/bash arduino || true
2020
RUN mkdir -p /home/arduino && chown -R arduino:arduino /home/arduino
2121
RUN usermod -aG docker arduino
2222

23+
# Copy + enable mock devices script
24+
COPY create-mock-devices.sh /usr/local/bin/create-mock-devices.sh
25+
RUN chmod +x /usr/local/bin/create-mock-devices.sh
26+
2327
EXPOSE 8800
2428

25-
CMD ["/sbin/init"]
29+
# ENTRYPOINT must remain last
30+
ENTRYPOINT ["/usr/local/bin/create-mock-devices.sh"]
31+
CMD ["/sbin/init"]

0 commit comments

Comments
 (0)