Documentation
¶
Overview ¶
Package checkhost is the spec fabric slice for the check-verb HOST-VANTAGE resolution family (#55 CHECK-ENGINE cone Option A: relocated from sdk/kit's check_endpoint.go + vnc_bridge.go) — the kind-blind host-side machinery the `charly check` verb dispatch serves back to an out-of-process verb over CheckContextService: resolving an in-venue TCP port to a host-reachable address (container publish / ssh -L forward / local), plus the UNIX-socket→TCP bridge a TCP-only RFB client needs. These are net/ssh/exec host primitives (fabric), so they live in their OWN spec slice (Rule 2) rather than dragging os/exec into a value-types consumer; charly core inlines from here while importing zero kit, and sdk/kit re-exports the same symbols so existing kit.EndpointForVenue / kit.UnixToTCPBridge / kit.CheckEndpoint call sites are untouched.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ResolveApkPath ¶
ResolveApkPath resolves a committed-APK reference against the candy's SOURCE tree. Absolute paths are used verbatim; a relative path anchors candy-dir-relative first, then each ancestor up to the candy's project / repo root (first existing match wins). This resolves a path like `tests/data/ApiDemos-debug.apk` identically whether the candy is LOCAL (candyDir under the consuming project root) or fetched via @github (candyDir under the cloned-repo cache, where a project-root-relative file lives at <repo-root>/tests/data/... several levels above candyDir).
It FAILS HARD when a relative ref has no candy dir to anchor against, or when the file is not found anywhere up the tree — the caller surfaces that, never silently passing an unresolvable path downstream.
func ResolveCommittedApk ¶
func ResolveCommittedApk(apk, origin string, candyDirs map[string]string, candyScanErr error) (string, error)
ResolveCommittedApk resolves a relative committed-APK path (the adb/appium `apk: ./tests/data/...` fixture) against the ORIGINATING candy's source tree, given the caller's own candy-name→source-dir map (candyDirs). origin must be "candy:<key>" — the check's Origin form CollectDescriptions stamps, and <key> must match a key in candyDirs.
It FAILS HARD on every condition where the fixture cannot be anchored — a non-candy origin, an absent candyDirs entry, or a file missing under the candy tree. There is NO fallback and NO silent cwd-relative pass-through.
func UnixToTCPBridge ¶
UnixToTCPBridge starts a TCP listener on 127.0.0.1:0 that pipes each accepted connection to the named UNIX socket. The returned listener owns a goroutine that exits when the listener is closed. Used wherever an RFB client (or any TCP-only peer) must reach a UNIX-socket-only service.
Types ¶
type CheckEndpoint ¶
type CheckEndpoint struct {
Addr string
// contains filtered or unexported fields
}
CheckEndpoint is a host-reachable TCP address for a port that lives inside the venue. The caller MUST Close() it when done (a no-op for container/shell venues; tears down the ssh -L forward for an ssh/vm venue).
func EndpointForVenue ¶
func EndpointForVenue(desc spec.VenueDescriptor, port int) (*CheckEndpoint, error)
EndpointForVenue returns a host-reachable "ip:port" for the given in-venue TCP port, dispatched by the descriptor's generic transport word:
"container" → the host published port via `<engine> port` (host-networked → 127.0.0.1:port) "ssh" → an ssh -L forward into the descriptor's target (vm alias / ssh host) "shell"/"" → 127.0.0.1:port directly (the local host venue)
Byte-equivalent to the former core resolveCheckEndpoint switch (container/host/vm) — the host projects its CheckVenue onto this descriptor once at construction; the resolution here is kind-blind.
func (*CheckEndpoint) Close ¶
func (e *CheckEndpoint) Close()
Close tears down any ssh -L forward the endpoint opened (no-op otherwise).