Skip to content

Commit a9c764d

Browse files
committed
using run
1 parent 59014ca commit a9c764d

File tree

2 files changed

+124
-60
lines changed

2 files changed

+124
-60
lines changed

internal/testtools/test_deb_update/deb_test.go

Lines changed: 104 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -25,77 +25,121 @@ func TestStableToUnstable(t *testing.T) {
2525
buildDebVersion(t, majorTag, *arch)
2626
// fmt.Printf("Check folder structure and deb downloaded\n")
2727
// ls(t)
28-
fmt.Println("**** BUILD docker image *****")
29-
buildDockerImage(t, "test.Dockerfile", "apt-test-update-image", *arch)
30-
fmt.Println("**** RUN docker image *****")
31-
runDockerContainer(t, "apt-test-update", "apt-test-update-image")
32-
preUpdateVersion := runDockerSystemVersion(t, "apt-test-update")
33-
runDockerSystemUpdate(t, "apt-test-update")
34-
postUpdateVersion := runDockerSystemVersion(t, "apt-test-update")
35-
runDockerCleanUp(t, "apt-test-update")
36-
require.Equal(t, preUpdateVersion, "Arduino App CLI "+tagAppCli+"\n")
37-
require.Equal(t, postUpdateVersion, "Arduino App CLI "+majorTag+"\n")
28+
// fmt.Println("**** BUILD docker image *****")
29+
// buildDockerImage(t, "test.Dockerfile", "apt-test-update-image", *arch)
30+
// fmt.Println("**** RUN docker image *****")
31+
// runDockerContainer(t, "apt-test-update", "apt-test-update-image")
32+
// preUpdateVersion := runDockerSystemVersion(t, "apt-test-update")
33+
// runDockerSystemUpdate(t, "apt-test-update")
34+
// postUpdateVersion := runDockerSystemVersion(t, "apt-test-update")
35+
// runDockerCleanUp(t, "apt-test-update")
36+
// require.Equal(t, preUpdateVersion, "Arduino App CLI "+tagAppCli+"\n")
37+
// require.Equal(t, postUpdateVersion, "Arduino App CLI "+majorTag+"\n")
3838
}
3939

40-
func TestClientUpdate(t *testing.T) {
40+
// func TestClientUpdateStU(t *testing.T) {
4141

42-
fmt.Printf("***** ARCH %s ***** \n", *arch)
43-
tagAppCli := FetchDebPackage(t, "arduino-app-cli", "latest", *arch)
44-
FetchDebPackage(t, "arduino-router", "latest", *arch)
45-
majorTag := majorTag(t, tagAppCli)
42+
// fmt.Printf("***** ARCH %s ***** \n", *arch)
43+
// tagAppCli := FetchDebPackage(t, "arduino-app-cli", "latest", *arch)
44+
// FetchDebPackage(t, "arduino-router", "latest", *arch)
45+
// majorTag := majorTag(t, tagAppCli)
4646

47-
fmt.Println("**** RUN docker image *****")
48-
runDockerContainer(t, "apt-test-update", "apt-test-update-image")
49-
preUpdateVersion := runDockerSystemVersion(t, "apt-test-update")
47+
// fmt.Println("**** RUN docker image *****")
48+
// runDockerContainer(t, "apt-test-update", "apt-test-update-image")
49+
// preUpdateVersion := runDockerSystemVersion(t, "apt-test-update")
5050

51-
runDockerDaemon(t, "apt-test-update")
52-
time.Sleep(5 * time.Second) //wait for the daemon to be fully started
53-
status := putUpdateRequest(t, "http://127.0.0.1:8800/v1/system/update/apply")
54-
fmt.Printf("Response status: %s\n", status)
51+
// runDockerDaemon(t, "apt-test-update")
52+
// WaitForPort(t, "127.0.0.1", 8800, 5*time.Second)
5553

56-
itr := NewSSEClient(context.Background(), "GET", "http://localhost:8800/v1/system/update/events")
54+
// status := putUpdateRequest(t, "http://127.0.0.1:8800/v1/system/update/apply")
55+
// fmt.Printf("Response status: %s\n", status)
5756

58-
for event, err := range itr {
59-
if err != nil {
60-
log.Printf("Error receiving SSE event: %v", err)
61-
}
62-
fmt.Printf("Received event: ID=%s, Event=%s, Data=%s\n", event.ID, event.Event, string(event.Data))
63-
if string(event.Data) == "Download complete" {
64-
fmt.Println("✅ Download complete — exiting successfully.")
65-
}
66-
}
57+
// itr := NewSSEClient(context.Background(), "GET", "http://localhost:8800/v1/system/update/events")
6758

68-
postUpdateVersion := runDockerSystemVersion(t, "apt-test-update")
59+
// for event, err := range itr {
60+
// if err != nil {
61+
// log.Printf("Error receiving SSE event: %v", err)
62+
// }
63+
// fmt.Printf("Received event: ID=%s, Event=%s, Data=%s\n", event.ID, event.Event, string(event.Data))
64+
// if string(event.Data) == "Download complete" {
65+
// fmt.Println("✅ Download complete — exiting successfully.")
66+
// }
67+
// }
6968

70-
require.Equal(t, preUpdateVersion, "Arduino App CLI "+tagAppCli+"\n")
71-
require.Equal(t, postUpdateVersion, "Arduino App CLI "+majorTag+"\n")
72-
runDockerCleanUp(t, "apt-test-update")
69+
// postUpdateVersion := runDockerSystemVersion(t, "apt-test-update")
7370

74-
}
71+
// require.Equal(t, preUpdateVersion, "Arduino App CLI "+tagAppCli+"\n")
72+
// require.Equal(t, postUpdateVersion, "Arduino App CLI "+majorTag+"\n")
73+
// runDockerCleanUp(t, "apt-test-update")
74+
75+
// }
7576

7677
func TestUnstableToStable(t *testing.T) {
77-
tagAppCli := FetchDebPackage(t, "arduino-app-cli", "latest", *arch)
78-
FetchDebPackage(t, "arduino-router", "latest", *arch)
79-
minorTag := minorTag(t, tagAppCli)
80-
moveDeb(t, "build/stable", "build/", "arduino-app-cli", tagAppCli, *arch)
81-
82-
fmt.Printf("Updating from unstable version %s to stable version %s \n", minorTag, tagAppCli)
83-
fmt.Printf("Building local deb version %s \n", minorTag)
84-
buildDebVersion(t, minorTag, *arch)
85-
moveDeb(t, "build/", "build/stable", "arduino-app-cli", minorTag, *arch)
86-
87-
fmt.Printf("Check folder structure and deb downloaded\n")
88-
ls(t)
89-
90-
fmt.Println("**** BUILD docker image *****")
91-
buildDockerImage(t, "test.Dockerfile", "test-apt-update-unstable-image", *arch)
92-
fmt.Println("**** RUN docker image *****")
93-
runDockerContainer(t, "apt-test-update-unstable", "test-apt-update-unstable-image")
94-
preUpdateVersion := runDockerSystemVersion(t, "apt-test-update-unstable")
95-
runDockerSystemUpdate(t, "apt-test-update-unstable")
96-
postUpdateVersion := runDockerSystemVersion(t, "apt-test-update-unstable")
97-
runDockerCleanUp(t, "apt-test-update-unstable")
98-
require.Equal(t, preUpdateVersion, "Arduino App CLI "+minorTag+"\n")
99-
require.Equal(t, postUpdateVersion, "Arduino App CLI "+tagAppCli+"\n")
78+
79+
t.Run("CLI Update Testing", func(t *testing.T) {
80+
tagAppCli := FetchDebPackage(t, "arduino-app-cli", "latest", *arch)
81+
FetchDebPackage(t, "arduino-router", "latest", *arch)
82+
minorTag := minorTag(t, tagAppCli)
83+
//Move the stable package to the build (unstable) folder
84+
moveDeb(t, "build/stable", "build/", "arduino-app-cli", tagAppCli, *arch)
85+
fmt.Printf("Updating from unstable version %s to stable version %s \n", minorTag, tagAppCli)
86+
fmt.Printf("Building local deb version %s \n", minorTag)
87+
//Build unstable with a minor tag w.r.t stable
88+
buildDebVersion(t, minorTag, *arch)
89+
//Move the unstable package to the stable folder
90+
moveDeb(t, "build/", "build/stable", "arduino-app-cli", minorTag, *arch)
91+
fmt.Printf("Check folder structure and deb downloaded\n")
92+
ls(t)
93+
fmt.Println("**** BUILD docker image *****")
94+
buildDockerImage(t, "test.Dockerfile", "test-apt-update-unstable-image", *arch)
95+
fmt.Println("**** RUN docker image *****")
96+
runDockerContainer(t, "apt-test-update-unstable", "test-apt-update-unstable-image")
97+
preUpdateVersion := runDockerSystemVersion(t, "apt-test-update-unstable")
98+
runDockerSystemUpdate(t, "apt-test-update-unstable")
99+
postUpdateVersion := runDockerSystemVersion(t, "apt-test-update-unstable")
100+
runDockerCleanUp(t, "apt-test-update-unstable")
101+
require.Equal(t, preUpdateVersion, "Arduino App CLI "+minorTag+"\n")
102+
require.Equal(t, postUpdateVersion, "Arduino App CLI "+tagAppCli+"\n")
103+
})
104+
105+
t.Run("Client Daemon Request Testing", func(t *testing.T) {
106+
tagAppCli := FetchDebPackage(t, "arduino-app-cli", "latest", *arch)
107+
FetchDebPackage(t, "arduino-router", "latest", *arch)
108+
minorTag := minorTag(t, tagAppCli)
109+
//Move the stable package to the build (unstable) folder
110+
moveDeb(t, "build/stable", "build/", "arduino-app-cli", tagAppCli, *arch)
111+
fmt.Printf("Updating from unstable version %s to stable version %s \n", minorTag, tagAppCli)
112+
fmt.Printf("Building local deb version %s \n", minorTag)
113+
//Build unstable with a minor tag w.r.t stable
114+
buildDebVersion(t, minorTag, *arch)
115+
//Move the unstable package to the stable folder
116+
moveDeb(t, "build/", "build/stable", "arduino-app-cli", minorTag, *arch)
117+
fmt.Printf("Check folder structure and deb downloaded\n")
118+
fmt.Println("**** RUN docker image *****")
119+
runDockerContainer(t, "apt-test-update-unstable", "test-apt-update-unstable-image")
120+
preUpdateVersion := runDockerSystemVersion(t, "apt-test-update-unstable")
121+
runDockerDaemon(t, "apt-test-update-unstable ")
122+
WaitForPort(t, "127.0.0.1", 8800, 5*time.Second)
123+
status := putUpdateRequest(t, "http://127.0.0.1:8800/v1/system/update/apply")
124+
fmt.Printf("Response status: %s\n", status)
125+
126+
itr := NewSSEClient(context.Background(), "GET", "http://localhost:8800/v1/system/update/events")
127+
128+
for event, err := range itr {
129+
if err != nil {
130+
log.Printf("Error receiving SSE event: %v", err)
131+
}
132+
fmt.Printf("Received event: ID=%s, Event=%s, Data=%s\n", event.ID, event.Event, string(event.Data))
133+
if string(event.Data) == "Download complete" {
134+
fmt.Println("✅ Download complete — exiting successfully.")
135+
}
136+
}
137+
138+
postUpdateVersion := runDockerSystemVersion(t, "apt-test-update")
139+
runDockerCleanUp(t, "apt-test-update-unstable")
140+
require.Equal(t, preUpdateVersion, "Arduino App CLI "+tagAppCli+"\n")
141+
require.Equal(t, postUpdateVersion, "Arduino App CLI "+minorTag+"\n")
142+
143+
})
100144

101145
}

internal/testtools/test_deb_update/helpers.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ import (
88
"io"
99
"iter"
1010
"log"
11+
"net"
1112
"net/http"
1213
"os"
1314
"os/exec"
1415
"path/filepath"
1516
"strconv"
1617
"strings"
1718
"testing"
19+
"time"
1820
)
1921

2022
func FetchDebPackage(t *testing.T, repo, version, arch string) string {
@@ -364,3 +366,21 @@ type Event struct {
364366
Event string
365367
Data []byte // json
366368
}
369+
370+
// WaitForPort waits until a TCP port is open or fails after timeout.
371+
func WaitForPort(t *testing.T, host string, port int, timeout time.Duration) {
372+
t.Helper()
373+
addr := fmt.Sprintf("%s:%d", host, port)
374+
375+
deadline := time.Now().Add(timeout)
376+
for time.Now().Before(deadline) {
377+
conn, err := net.DialTimeout("tcp", addr, 500*time.Millisecond)
378+
if err == nil {
379+
_ = conn.Close()
380+
t.Logf("Server is up on %s", addr)
381+
return
382+
}
383+
time.Sleep(200 * time.Millisecond)
384+
}
385+
t.Fatalf("Server at %s did not start within %v", addr, timeout)
386+
}

0 commit comments

Comments
 (0)