Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
206 commits
Select commit Hold shift + click to select a range
237a988
add unit/integration test for pkg/geoip
mrpalide May 30, 2026
b438a31
add unit/integration test for pkg/pg
mrpalide May 30, 2026
43e6411
add unit/integration test for pkg/rfclient
mrpalide May 30, 2026
479cf1a
add unit/integration test for pkg/route-finder/api
mrpalide May 30, 2026
e071a80
add unit/integration test for pkg/config-bootstrapper/api
mrpalide May 30, 2026
7f8c0a8
add unit/integration test for pkg/calvin (was useless really)
mrpalide May 30, 2026
0478080
add unit/integration test for pkg/app/appdisc
mrpalide May 30, 2026
e12d0cf
add unit/integration test for pkg/app/launcher
mrpalide May 31, 2026
0f4a7b6
add unit/integration test for pkg/tpviz
mrpalide May 31, 2026
f5b96f3
add unit/integration test for pkg/transport/network
mrpalide May 31, 2026
b6512e8
add unit/integration test for cmd/skywire-cli/commands/gotop
mrpalide May 31, 2026
fbf9db5
add unit/integration test for pkg/dmsg/dmsgclient
mrpalide May 31, 2026
d6afef8
add unit/integration test for pkg/address-resolver/api
mrpalide May 31, 2026
5533852
add unit/integration test for pkg/visor/dmsgtracker
mrpalide May 31, 2026
2b2bd12
add unit/integration test for cmd/skywire-cli/commands/got
mrpalide May 31, 2026
941b5fa
add unit/integration test for pkg/services/dmsgdisc
mrpalide May 31, 2026
63a0f37
make format
mrpalide May 31, 2026
2c3c079
Merge branch 'develop' into feat/missing-tests
mrpalide May 31, 2026
83bb143
fix make check issues
mrpalide May 31, 2026
407e184
go mod tidy | go mod vendor
mrpalide May 31, 2026
089a10e
go mod tidy | go mod vendor
mrpalide May 31, 2026
ed4a467
trying to fix linter issues
mrpalide Jun 2, 2026
e84f36c
trying to fix linter issues 2
mrpalide Jun 2, 2026
afeb39a
Merge branch 'develop' into feat/missing-tests
mrpalide Jun 2, 2026
6e41a70
write unit test for cmd/dmsg/dmsgcurl/commands, cmd/skywire/commands/…
mrpalide Jun 3, 2026
24c67ab
Merge branch 'develop' into feat/missing-tests
mrpalide Jun 18, 2026
5557d6a
improve unit/integration test of pkg/visor/rpcgrpc
mrpalide Jun 18, 2026
c18b174
fix production bug on server_ping_tree.go
mrpalide Jun 18, 2026
dd4f0f0
improve unit/integration test of pkg/services/dmsgsrv
mrpalide Jun 18, 2026
41f591a
improve unit/integration test of pkg/services/sd
mrpalide Jun 18, 2026
6ad8dba
improve unit/integration test of pkg/services/ar
mrpalide Jun 18, 2026
7b8f44f
improve unit/integration test of pkg/services/rf
mrpalide Jun 18, 2026
6735cf1
improve unit/integration test of pkg/transport
mrpalide Jun 18, 2026
bc27691
fix race detection on transport handshake and vstream
mrpalide Jun 18, 2026
1849895
improve unit/integration test of pkg/transport/network/addrresolver
mrpalide Jun 18, 2026
6d26df3
improve unit/integration test of pkg/app/appnet
mrpalide Jun 18, 2026
df1920f
improve unit/integration test of pkg/services/stun
mrpalide Jun 18, 2026
a9fc9e8
improve unit/integration test of cmd/dmsg/dmsgcurl/commands
mrpalide Jun 18, 2026
ed159b5
improve unit/integration test of pkg/service-discovery/store
mrpalide Jun 18, 2026
3bb6aa4
improve unit/integration test of cmd/dmsg/dmsghttp/commands
mrpalide Jun 18, 2026
c6d0c26
improve unit/integration test of cmd/skywire-cli/commands/visor/ping
mrpalide Jun 18, 2026
c78ce91
improve unit/integration test of cmd/skywire-cli/commands/route
mrpalide Jun 18, 2026
9e50f78
improve unit/integration test of pkg/uptime-tracker/api
mrpalide Jun 18, 2026
7de9f22
improve unit/integration test of pkg/services/tps
mrpalide Jun 18, 2026
5f111d6
improve unit/integration test of pkg/transport-discovery/api
mrpalide Jun 19, 2026
c6612ec
improve unit/integration test of pkg/transport-discovery/store
mrpalide Jun 19, 2026
768ead6
improve unit/integration test of pkg/uptime-tracker/store
mrpalide Jun 19, 2026
e052d0c
improve unit/integration test of pkg/visor
mrpalide Jun 19, 2026
ce23495
improve unit/integration test of pkg/dmsg/disc/metrics
mrpalide Jun 19, 2026
7dea05c
add unit test for pkg/dmsgweb
mrpalide Jun 19, 2026
dfb4d13
add unit test for pkg/got
mrpalide Jun 19, 2026
e66b450
improve unit test for pkg/rfclient
mrpalide Jun 19, 2026
efc1b93
add unit test for pkg/skynet
mrpalide Jun 19, 2026
418497c
add unit test for pkg/tcpproxy
mrpalide Jun 19, 2026
4e86471
add unit test for pkg/visor/logstore
mrpalide Jun 19, 2026
b29a3ae
add unit test for pkg/vpn
mrpalide Jun 19, 2026
f4d2a32
add unit test for pkg/visor/visorinit
mrpalide Jun 19, 2026
036012c
add unit test for pkg/visnetwork/physics
mrpalide Jun 19, 2026
148bc4b
add unit test for pkg/transport/setup
mrpalide Jun 19, 2026
1706bc3
improve unit test for pkg/route-finder/api
mrpalide Jun 19, 2026
94c81bf
add unit test for pkg/skywire/tcpnoise
mrpalide Jun 19, 2026
9e9b618
add unit test for pkg/storeconfig
mrpalide Jun 19, 2026
ae3d3c4
add unit test for pkg/stunserver
mrpalide Jun 19, 2026
b7756f8
add unit test for pkg/uptimestats
mrpalide Jun 19, 2026
413760e
add unit test for pkg/rewards
mrpalide Jun 19, 2026
f4095e2
add unit test for pkg/transport/network/stcp
mrpalide Jun 20, 2026
4e62ce5
add unit test for pkg/transport/network/porter
mrpalide Jun 20, 2026
ade744e
add unit test for pkg/transport/network/packetfilter
mrpalide Jun 20, 2026
f7f6920
add unit test for pkg/address-resolver/metrics
mrpalide Jun 20, 2026
8cc384a
add unit test for pkg/network-monitor
mrpalide Jun 20, 2026
0ed6438
add unit test for pkg/transport-setup/config
mrpalide Jun 20, 2026
76a924d
add unit test for pkg/util/osutil
mrpalide Jun 20, 2026
baa460d
add unit test and fix a bug for pkg/util/pathutil
mrpalide Jun 20, 2026
c3efb4e
add unit test for pkg/util/rename
mrpalide Jun 20, 2026
a282330
Merge branch 'develop' into feat/missing-tests
mrpalide Jun 20, 2026
f679f25
add unit test for pkg/app/appserver/spec
mrpalide Jun 20, 2026
9b34d60
add unit test for pkg/transport/network/spec
mrpalide Jun 20, 2026
73fbaab
add unit test for pkg/transport/spec
mrpalide Jun 20, 2026
c2d6fba
add unit test for pkg/network-monitor/types
mrpalide Jun 20, 2026
a71edbb
fix test for dmsgsrv on services after yesterday changes by Moses
mrpalide Jun 20, 2026
c7b6d07
add unit test for cmd/cxo/commands
mrpalide Jun 20, 2026
b52acb7
add unit test for cmd/dmsg/conf/commands
mrpalide Jun 20, 2026
0cde8db
add unit test for cmd/dmsg/dmsg-discovery/commands
mrpalide Jun 20, 2026
e84fb39
add unit test for cmd/dmsg/dmsg-server/commands
mrpalide Jun 20, 2026
44e6cb1
add unit test for cmd/apps/vpn-client/commands
mrpalide Jun 20, 2026
d065213
add unit test for cmd/apps/skynet/commands
mrpalide Jun 20, 2026
208c798
add unit test for cmd/dmsg/dmsg/commands
mrpalide Jun 20, 2026
5aebea7
add unit test for cmd/dmsg/dmsgip/commands
mrpalide Jun 20, 2026
d353b0f
add unit test for cmd/dmsg/dmsgprobe/commands
mrpalide Jun 20, 2026
78feed7
add unit test for cmd/dmsg/dmsgweb/commands
mrpalide Jun 20, 2026
795f73a
add unit test for cmd/dmsg/pty-cli/commands
mrpalide Jun 20, 2026
971af3f
add unit test for cmd/dmsg/pty-host/commands
mrpalide Jun 20, 2026
58a67ea
add unit test for cmd/dmsg/self-ping/commands
mrpalide Jun 20, 2026
b0198e5
add unit test for cmd/apps/pty/commands
mrpalide Jun 20, 2026
96214de
add unit test for pkg/cxo/node/msg
mrpalide Jun 20, 2026
0ffa7b0
add unit test for pkg/cxo/node/transport
mrpalide Jun 20, 2026
1a5cfcc
add unit test for pkg/cxo/skyobject/statutil
mrpalide Jun 20, 2026
2418bf8
add unit test for pkg/httputil
mrpalide Jun 20, 2026
90bb87a
improve unit test for pkg/logging
mrpalide Jun 20, 2026
2fe50bd
improve unit test for pkg/netutil
mrpalide Jun 20, 2026
f7e5475
improve unit test for pkg/router
mrpalide Jun 20, 2026
cb8703f
add unit test for pkg/services/noop
mrpalide Jun 21, 2026
3b9dcc3
add unit test for pkg/servicedisc
mrpalide Jun 21, 2026
c903f54
add unit test for cmd/svc/address-resolver
mrpalide Jun 22, 2026
e7f278d
add unit test for cmd/svc/conf
mrpalide Jun 22, 2026
59616fd
add unit test for cmd/svc/config-bootstrapper
mrpalide Jun 22, 2026
bcb5fa1
add unit test for cmd/svc/geoip
mrpalide Jun 22, 2026
1863c0a
add unit test for cmd/svc/network-monitor
mrpalide Jun 22, 2026
dfa4bca
add unit test for cmd/svc/route-finder
mrpalide Jun 22, 2026
50bd689
add unit test for cmd/svc/service-discovery
mrpalide Jun 22, 2026
e9102bd
add unit test for cmd/svc/setup-node
mrpalide Jun 22, 2026
079a922
add unit test for cmd/svc/skywire-services
mrpalide Jun 22, 2026
1779f71
add unit test for cmd/svc/stun-server
mrpalide Jun 22, 2026
c584d2d
add unit test for cmd/svc/sw-env
mrpalide Jun 22, 2026
083f51c
add unit test for cmd/svc/transport-discovery
mrpalide Jun 22, 2026
380c15f
add unit test for cmd/svc/transport-setup
mrpalide Jun 22, 2026
5111d53
add unit test for cmd/svc/uptime-tracker
mrpalide Jun 22, 2026
4483993
add unit test for pkg/app/appcommon
mrpalide Jun 22, 2026
29a8d65
add unit test for pkg/app/appevent
mrpalide Jun 22, 2026
f7c1c0c
add unit test for pkg/app/appnet
mrpalide Jun 22, 2026
21c5957
add unit test for pkg/app/appserver
mrpalide Jun 22, 2026
a06a1b8
add unit test for pkg/dmsgc
mrpalide Jun 22, 2026
f69669f
add unit test for pkg/flags
mrpalide Jun 22, 2026
acb78f1
add unit test for pkg/geo
mrpalide Jun 22, 2026
b0e36f0
add skysocks_test for e2e/integration test
mrpalide Jun 22, 2026
a2e9412
fix skysocks_test for e2e/integration test
mrpalide Jun 22, 2026
a71027f
fix multihop route test
mrpalide Jun 22, 2026
0f8ba4c
improve e2e test | try 1
mrpalide Jun 27, 2026
2181c49
Merge branch 'develop' into feat/missing-tests
mrpalide Jun 27, 2026
8e2f30c
fix e2e test failing
mrpalide Jun 27, 2026
34df4c9
improve e2e test (speed) | try 2
mrpalide Jun 27, 2026
cb59ce5
make format
mrpalide Jun 27, 2026
b9690ac
make check
mrpalide Jun 28, 2026
ede53a1
Merge branch 'develop' into feat/missing-tests
mrpalide Jun 28, 2026
a0951df
fix race issue
mrpalide Jun 28, 2026
51f54e0
fix issue
mrpalide Jun 28, 2026
dac91fc
fix test failed for init dmsg
mrpalide Jun 28, 2026
bf83741
fix test failed on dmsgcurl download
mrpalide Jun 28, 2026
e2d1914
fix race on dmsg
mrpalide Jun 28, 2026
25f5f80
improve ci tests by split e2e from checking on linux and other things
mrpalide Jun 28, 2026
4530971
fix syscal issue on windows
mrpalide Jun 28, 2026
cabeda4
fix test failed on doc for windows
mrpalide Jun 28, 2026
1486068
fix test failed on windows
mrpalide Jun 29, 2026
a2f9928
make lint
mrpalide Jun 29, 2026
4250fdc
fix NIX issue
mrpalide Jun 29, 2026
3d99959
fix windows test on dmsg
mrpalide Jun 29, 2026
eaf339e
modify flake.nix for solve nix issue on github workflows
mrpalide Jun 29, 2026
8119b87
use go v1.25.6 instaed v1.26.1 for windows! guic-go has issue/bug on …
mrpalide Jun 29, 2026
1f77f33
revert version changes | skip quic-go for windows on test
mrpalide Jun 29, 2026
7ce7a56
disable quic-go (and WebTransport) for Windows, because of quic-go is…
mrpalide Jun 29, 2026
325778f
upgrade go version to 1.26.2
mrpalide Jun 30, 2026
d3377dc
upgrade go version to 1.26.4 | enable quic-go and webtransport
mrpalide Jun 30, 2026
28a84eb
make format
mrpalide Jun 30, 2026
bf20bbc
Merge branch 'develop' into feat/missing-tests
mrpalide Jun 30, 2026
88f51d6
fix issue on make check
mrpalide Jun 30, 2026
42ae6d5
add e2e test for new transports: quic, webtransport, websocket and we…
mrpalide Jul 1, 2026
298d7ed
add e2e test for sudph and stcp, add stun/nat traversal
mrpalide Jul 1, 2026
dddb95e
add unit and e2e test for dmsgpty
mrpalide Jul 1, 2026
bcfdc45
fix linting issue
mrpalide Jul 1, 2026
8f20749
add unit and e2e test for dmsgweb
mrpalide Jul 1, 2026
d766492
add unit and e2e test for dmsghttp
mrpalide Jul 1, 2026
67d22b4
add unit and e2e test for dmsgip | fix some issues on dmsgip cmd
mrpalide Jul 1, 2026
7d04d84
trying to fix data race
mrpalide Jul 1, 2026
6d44b6c
trying to fix data race on darwin
mrpalide Jul 1, 2026
adaed1d
fix e2e test failing on dmsgweb
mrpalide Jul 1, 2026
d2865fa
fix make check issue
mrpalide Jul 1, 2026
0ff1b4c
fix test issue on linux
mrpalide Jul 1, 2026
ea38206
add e2e test for skynety
mrpalide Jul 1, 2026
66a87e5
add e2e test for dmsg-over-WebTransport
mrpalide Jul 2, 2026
c9bd4ef
trying to fix e2e test issue
mrpalide Jul 2, 2026
3f54cda
fix cxotree issue on darwin
mrpalide Jul 2, 2026
b34543a
fix e2e run error
mrpalide Jul 2, 2026
62cd349
initial implement of e2e test for hypervisor
mrpalide Jul 2, 2026
6ff3d77
improve e2e test for hypervisor
mrpalide Jul 2, 2026
6929aea
fix e2e issue after hypervisor e2e test implementation
mrpalide Jul 2, 2026
daba4b9
fix linux test issue
mrpalide Jul 3, 2026
4c4ba20
Merge branch 'develop' into feat/missing-tests
mrpalide Jul 3, 2026
7726009
add unit and e2e test for transport-setup
mrpalide Jul 3, 2026
2713f8f
enable running a deployment + visor natively without Docker/redis/STU…
mrpalide Jul 3, 2026
562d9c8
initial implement of e2e on mac/windows, native e2e
mrpalide Jul 3, 2026
04bd575
complete e2e test on mac and windows, except VPN server
mrpalide Jul 3, 2026
92e6ed2
Merge branch 'develop' into feat/missing-tests
mrpalide Jul 3, 2026
e564d14
add vpn-server to mac and add vpn functionality on mac native e2e test
mrpalide Jul 3, 2026
a48d33b
fix lint issue on mac
mrpalide Jul 4, 2026
ae3496d
fix issue on e2e and darwin-e2e test
mrpalide Jul 4, 2026
a12afc0
fix issue on windows-e2e
mrpalide Jul 4, 2026
b2c54c7
trying to fix windows-e2e test issue | 1
mrpalide Jul 4, 2026
a06c0a0
trying to fix windows-e2e test issue | 2
mrpalide Jul 4, 2026
dfe6a97
implement vpn-server for windows
mrpalide Jul 4, 2026
5b87369
replace wintun URL | missing from deb.skywire.dev, so replace with mi…
mrpalide Jul 4, 2026
426001f
fix lint issue on windows
mrpalide Jul 4, 2026
befcaf7
fix test issue on windows
mrpalide Jul 4, 2026
62dd14d
trying to fix windows-e2e test issue | 3 | vpn failed
mrpalide Jul 4, 2026
f95b690
fixing e2e test
mrpalide Jul 4, 2026
ed46c80
more ci run to check issue on e2e
mrpalide Jul 4, 2026
20d282b
fix linux race issue
mrpalide Jul 4, 2026
691d4dc
undark no_ci tests
mrpalide Jul 4, 2026
47a7cd4
fix rece issue on windows
mrpalide Jul 4, 2026
4ab0ec5
fix lint issue
mrpalide Jul 4, 2026
455fba2
trying to fix windows and linux test failing
mrpalide Jul 4, 2026
94f4e65
fix e2e issue
mrpalide Jul 4, 2026
ebee25b
fix on dmsg server close issue
mrpalide Jul 4, 2026
584ce92
fix lint issue
mrpalide Jul 4, 2026
d81b4ae
fix e2e issue
mrpalide Jul 4, 2026
c5121e1
ipv6 dual-stack dmsg e2e — real build+run lane with wire-level v6 Noi…
mrpalide Jul 4, 2026
84fdb14
fix lint-shell issue
mrpalide Jul 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions .github/workflows/nix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,16 @@ jobs:

- uses: cachix/install-nix-action@v27
with:
# Authenticate Nix's github: flake fetches. Without a token,
# resolving the unpinned `nixos-unstable` branch to a commit
# hits api.github.com unauthenticated, and from shared Actions
# runner IPs that gets throttled (HTTP 429), failing the build.
# GITHUB_TOKEN raises the rate limit enough to avoid that.
github_access_token: ${{ secrets.GITHUB_TOKEN }}
extra_nix_config: |
experimental-features = nix-command flakes
accept-flake-config = true
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}

# Free shared Nix cache; speeds up consecutive runs from cold
# to warm by populating /nix/store from previous runs of this
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
- 'v*'

env:
GO_VERSION: '1.26.1'
GO_VERSION: '1.26.4'
MUSL_RELEASE: 'v1.3.29'
MODULE: github.com/skycoin/skywire

Expand Down
96 changes: 51 additions & 45 deletions .github/workflows/test-ipv6.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
# Phase 5 of the #1525 IPv6 plan: a CI lane that exercises the
# dual-stack dmsg-server + Happy Eyeballs dialer path end-to-end on
# the docker bridge configured for both IPv4 and IPv6.
# Phase 5 of the #1525 IPv6 plan: a CI lane that BUILDS and RUNS a
# dual-stack dmsg deployment on a docker bridge configured for both
# IPv4 and IPv6, then asserts, at the wire level, that dmsg works over
# IPv6 — the crown jewel being a full dmsg Noise handshake completed
# straight to the server's IPv6 endpoint.
#
# This replaces the earlier compose-syntax-only check: the images are
# built from source via a self-contained Dockerfile (no docker_build.sh
# / image_tag / base_image prerequisite), the stack is brought up, and
# docker/dmsg/scripts/assert-ipv6-e2e.sh runs the v6 assertions.
#
# Runs in addition to the existing Test lane in test.yml; the v4-only
# path there continues to validate the backward-compat case (visor
Expand All @@ -9,17 +16,21 @@
#
# Trigger: PRs that touch the IPv6 surface, or anything under
# pkg/dmsg / pkg/address-resolver / pkg/transport/network / the
# v6-aware compose + workflow files themselves. Avoids waking this
# lane for changes that can't affect v6 (docs, CI for other lanes).
# v6-aware compose + config + workflow files themselves. Avoids waking
# this lane for changes that can't affect v6 (docs, CI for other lanes).

on:
pull_request:
paths:
- 'pkg/dmsg/**'
- 'pkg/address-resolver/**'
- 'pkg/transport/network/**'
- 'docker/dmsg/docker-compose.e2e-v6.yml'
- 'pkg/services/dmsgsrv/**'
- 'pkg/services/dmsgdisc/**'
- 'cmd/dmsg/**'
- 'docker/dmsg/**'
- 'docker/config/dmsg-server-v6.json'
- 'docker/config/services-dmsg-v6.json'
- '.github/workflows/test-ipv6.yml'
workflow_dispatch:

Expand All @@ -28,23 +39,16 @@ name: Test IPv6 dual-stack
jobs:
ipv6-e2e:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
fetch-tags: true

- uses: actions/setup-go@v6
with:
go-version: '1.26.1'
cache: true
cache-dependency-path: go.sum

# Docker has IPv6 support compiled in but daemon-level IPv6 is
# off by default on ubuntu-latest runners. Enable it before
# `docker compose config` parses + validates the v6 bridge spec
# (and before the full e2e follow-up tries to actually allocate
# v6 addresses on the bridge).
# off by default on ubuntu-latest runners. Enable it before the
# compose stack tries to allocate v6 addresses on the bridge.
- name: Enable Docker IPv6
run: |
set -eux
Expand All @@ -58,42 +62,44 @@ jobs:
sudo systemctl restart docker
docker info | grep -i ipv6 || true

# First-stage validation: parse the compose file, resolve
# dockerfile + config-file paths, confirm the v6 subnet syntax
# is well-formed. Cheap, fast, and catches the most common
# regression (broken context-relative dockerfile paths) without
# the full build cost. The actual build + run + wire-level
# assertion follows in a separate step that's allowed to
# short-circuit until the docker_build.sh integration lands
# (see "deferred to follow-up" below).
- name: Validate dual-stack compose syntax
# Build the self-contained image once (skywire + dmsgprobe from
# source). Both compose services reference this tag, so the
# subsequent `up` needs no --build and won't rebuild.
- name: Build dmsg dual-stack image
run: |
set -eux
docker build \
-f docker/dmsg/images/dmsg-e2e/Dockerfile \
-t skywire-dmsg-e2e:local .

- name: Validate dual-stack compose config
working-directory: docker/dmsg
run: |
set -eux
docker compose -f docker-compose.e2e-v6.yml config > /tmp/compose-rendered.yml
# Sanity: rendered output mentions both address families.
grep -q '172.21.0.4' /tmp/compose-rendered.yml
grep -q 'fd00:dead:beef::4' /tmp/compose-rendered.yml
# Both dockerfile context paths must resolve to real files
# on disk (compose resolves them lazily at build-time, so
# the parser doesn't catch this for us).
test -f ../images/dmsg-discovery/Dockerfile
test -f ../images/dmsg-server/Dockerfile
test -f ./images/dmsg-client/Dockerfile
# The v6 server config must exist where the volume mount
# expects it.
test -f ../config/dmsg-server-v6.json
# The v6 server config must exist and set the v6 endpoint.
grep -q '"public_address_v6"' ../config/dmsg-server-v6.json

# Full e2e build + run is deferred — the existing dmsg-server +
# dmsg-discovery images are built via docker/docker_build.sh
# with multi-stage build args (image_tag + base_image) that a
# plain `docker compose up --build` can't supply. The lane
# plumbing to invoke docker_build.sh as a prerequisite + then
# `compose up` against the locally-tagged images is a focused
# follow-up. Tracking via the #1525 thread.
- name: Note follow-up scope
- name: Bring up the dual-stack dmsg stack
run: |
set -eux
docker compose -f docker/dmsg/docker-compose.e2e-v6.yml up -d --wait

- name: Assert dmsg works over IPv6 (wire-level)
run: |
set -eux
bash docker/dmsg/scripts/assert-ipv6-e2e.sh

- name: Dump logs on failure
if: failure()
run: |
docker compose -f docker/dmsg/docker-compose.e2e-v6.yml ps || true
docker compose -f docker/dmsg/docker-compose.e2e-v6.yml logs --tail=200 || true

- name: Tear down
if: always()
run: |
echo "Compose syntax + paths validated. Full v6 e2e build+run lane is a"
echo "follow-up — needs docker_build.sh integration to supply image_tag"
echo "and base_image build args. See #1525 for tracking."
docker compose -f docker/dmsg/docker-compose.e2e-v6.yml down --remove-orphans -v || true
133 changes: 129 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:

- uses: actions/setup-go@v6
with:
go-version: '1.26.1'
go-version: '1.26.4'
cache: true
cache-dependency-path: go.sum

Expand All @@ -33,8 +33,27 @@ jobs:
- name: Lint Shell Scripts
run: make lint-shell

# golangci-lint already ran above (pinned, cached). check-ci skips the
# redundant second golangci-lint run but keeps go vet + config-gen smoke
# + the test suite.
- name: Check Format and Run Tests
run: make check
run: make check-ci

# e2e runs as its own job so it executes in parallel with the linux check
# job above instead of serially after it — cutting overall wall-clock.
e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0
fetch-tags: true

- uses: actions/setup-go@v6
with:
go-version: '1.26.4'
cache: true
cache-dependency-path: go.sum

- name: Setup SSH Key, Build and Run E2E
shell: bash
Expand All @@ -60,7 +79,7 @@ jobs:

- uses: actions/setup-go@v6
with:
go-version: '1.26.1'
go-version: '1.26.4'
cache: true
cache-dependency-path: go.sum

Expand All @@ -83,7 +102,7 @@ jobs:

- uses: actions/setup-go@v6
with:
go-version: '1.26.1'
go-version: '1.26.4'
cache: true
cache-dependency-path: go.sum

Expand All @@ -100,3 +119,109 @@ jobs:
$env:GO111MODULE='on'
make check-windows
shell: powershell

# Native (no-Docker) client-side e2e on macOS: runs a small skywire deployment
# + two visors as host processes on 127.0.0.1 and exercises the CLIENT runtime
# (visor, hypervisor, skysocks-client, vpn-client) — the OS-specific code the
# Linux Docker `e2e` job can't reach. See internal/nativee2e. The test binary is
# compiled as the runner user, then run under sudo so vpn-client/vpn-server can
# create TUN devices and set up pf NAT (macOS vpn-server: os_server_darwin.go).
e2e-darwin:
runs-on: macos-latest
steps:
- uses: actions/checkout@v5

- uses: actions/setup-go@v6
with:
go-version: '1.26.4'
cache: true
cache-dependency-path: go.sum

- name: Build binaries + compile native e2e
run: |
set -e
mkdir -p ./_nbin
go build -mod=vendor -o ./_nbin/skywire ./cmd/skywire
for a in skychat skysocks skysocks-client vpn-server vpn-client; do
go build -mod=vendor -o ./_nbin/$a ./cmd/apps/$a
done
go test -c -mod=vendor -tags client_e2e -o ./nativee2e.test ./internal/nativee2e

- name: Run native client e2e (root for vpn TUN + pf)
run: sudo env SKYWIRE_NATIVEE2E_BIN="$PWD/_nbin" ./nativee2e.test -test.v -test.timeout=25m

# Native client-side e2e on Windows: visor + hypervisor + skysocks-client +
# vpn-client/vpn-server (WinTUN + WinNAT, os_server_windows.go). The runner is
# admin, so TUN creation + NAT work; wintun.dll is provisioned next to the
# binary since it isn't embedded in the wintun Go binding.
e2e-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v5

- uses: actions/setup-go@v6
with:
go-version: '1.26.4'
cache: true
cache-dependency-path: go.sum

- name: Build binaries + provision WinTUN driver
shell: pwsh
run: |
$env:GO111MODULE='on'
New-Item -ItemType Directory -Force -Path ./_nbin | Out-Null
go build -mod=vendor -o ./_nbin/skywire.exe ./cmd/skywire
foreach ($a in 'skychat','skysocks','skysocks-client','vpn-server','vpn-client') {
go build -mod=vendor -o ./_nbin/$a.exe ./cmd/apps/$a
}
# WinTUN driver DLL is NOT embedded in the golang.zx2c4.com/wintun
# binding (it LoadLibraryEx's wintun.dll from the app dir / System32).
# The visor runs vpn-client/vpn-server in-process, so the DLL must sit
# next to skywire.exe (= _nbin) for TUN creation to work. Zip layout:
# wintun/bin/amd64/wintun.dll. Try the skywire mirror first, then upstream.
$urls = @('https://freeshell.de/~mrpalide/wintun-0.14.1.zip','https://deb.skywire.dev/wintun-0.14.1.zip','https://www.wintun.net/builds/wintun-0.14.1.zip')
$ok = $false
foreach ($u in $urls) {
try { Invoke-WebRequest -Uri $u -OutFile wintun.zip -ErrorAction Stop; $ok = $true; Write-Host "downloaded wintun from $u"; break }
catch { Write-Host "wintun download failed from ${u}: $_" }
}
if (-not $ok) { throw 'could not download wintun.dll from any source' }
Expand-Archive -Path wintun.zip -DestinationPath wintun-extracted -Force
Copy-Item wintun-extracted/wintun/bin/amd64/wintun.dll ./_nbin/wintun.dll
Write-Host "wintun.dll present:" (Test-Path ./_nbin/wintun.dll)

- name: Run native client e2e (admin runner → vpn TUN + NAT)
shell: pwsh
run: |
$env:GO111MODULE='on'
$env:SKYWIRE_NATIVEE2E_BIN = "$PWD/_nbin"
go test -mod=vendor -tags client_e2e -v -timeout=25m ./internal/nativee2e/

# Redis-backed store tests. redis_store_test.go / redis_test.go live behind
# //go:build !no_ci because they need a real Redis (redis://localhost:6379),
# so the tag-free unit lanes (which run with -tags no_ci) skip them — leaving
# them running in NO job. This lane provides a Redis service and runs those
# store packages WITHOUT no_ci so the redis-backed tests actually execute.
redis-store:
runs-on: ubuntu-latest
services:
redis:
image: redis:7
ports:
- 6379:6379
options: >-
--health-cmd "redis-cli ping"
--health-interval 5s
--health-timeout 3s
--health-retries 10
steps:
- uses: actions/checkout@v5

- uses: actions/setup-go@v6
with:
go-version: '1.26.4'
cache: true
cache-dependency-path: go.sum

- name: Run redis-backed store tests
run: go test -mod=vendor -timeout=5m ./pkg/address-resolver/store/... ./pkg/dmsg/discovery/store/...
3 changes: 2 additions & 1 deletion .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ linters:
exclusions:
generated: lax
paths:
- third_party$
- vendor/
- third_party/
- cmd/skywire-cli/commands/gotop
- builtin$
- examples$
Expand Down
12 changes: 8 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,11 @@ check-help: ## Cursory check of the help menus
go run . --help
@echo "compilation successful"

vet: ## Run go vet (the non-golangci-lint half of 'lint')
CGO_ENABLED=0 ${OPTS} go vet -mod=vendor -tags 'withoutsystray withoutgotop' ./...

check-ci: vet check-cg check-help test ## CI check: like 'check' but skips golangci-lint (CI runs it as a separate pinned, cached step). Keeps go vet + config-gen smoke + tests.

check-windows: lint-windows test-windows ## Run linters and tests on windows image

build: clean build-merged ## Install dependencies, build apps and binaries. `go build` with ${OPTS}
Expand Down Expand Up @@ -316,7 +321,6 @@ lint-shell:
find ./docker -type f -iname '*.sh' -print0 | xargs -0 -I {} bash -c "$$(command -v ./shellcheck || command -v shellcheck) -e SC2086 \"{}\""

test: ## Run tests
-go clean -testcache &>/dev/null
${OPTS} go test ${TEST_OPTS} ./internal/... ./pkg/... ./cmd/...
${OPTS} go test ${TEST_OPTS}

Expand Down Expand Up @@ -556,9 +560,9 @@ e2e-run: ## E2E. Start e2e environment and wait for all health checks to pass
@# uptime-tracker + its postgres are gone (uptime is integrated
@# into the discovery services).
bash -c "DOCKER_TAG=e2e docker compose up -d --wait redis"
bash -c "DOCKER_TAG=e2e docker compose up -d --wait deployment-services"
bash -c "DOCKER_TAG=e2e docker compose up -d --wait visor-b"
bash -c "DOCKER_TAG=e2e docker compose up -d --wait visor-a visor-c"
bash -c "DOCKER_TAG=e2e docker compose up -d --wait deployment-services || { echo '=== deployment-services unhealthy — logs: ==='; docker compose logs --tail=150 deployment-services; exit 1; }"
bash -c "DOCKER_TAG=e2e docker compose up -d --wait visor-b || { echo '=== visor-b unhealthy — deployment-services (dmsg-server side) + visor-b logs: ==='; docker compose logs --tail=200 deployment-services; docker compose logs --tail=120 visor-b; exit 1; }"
bash -c "DOCKER_TAG=e2e docker compose up -d --wait visor-a visor-c || { echo '=== visor-a/visor-c unhealthy — logs: ==='; docker compose logs --tail=150 visor-a visor-c; exit 1; }"
bash -c "DOCKER_TAG=e2e docker compose ps"

e2e-logs:
Expand Down
Loading
Loading