tests
checks for the envoy daggerverse module.Installation
dagger install github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453Entrypoint
Return Type
Tests Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
func (m *MyModule) Example() *dagger.Tests {
return dag.
Tests()
}@function
def example() -> dagger.Tests:
return (
dag.tests()
)@func()
example(): Tests {
return dag
.tests()
}Types
Tests 🔗
admin() 🔗
Admin runs the boot-and-probe tests — Envoy comes up, we hit the admin endpoint or assert misconfigurations fail at boot, no upstream traffic.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
| parallel | Integer ! | 0 | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
admin --envoy-tag string --parallel integerfunc (m *MyModule) Example(ctx context.Context, envoyTag string, parallel int) {
return dag.
Tests().
Admin(ctx, envoyTag, parallel)
}@function
async def example(envoytag: str, parallel: int) -> None:
return await (
dag.tests()
.admin(envoytag, parallel)
)@func()
async example(envoyTag: string, parallel: number): Promise<void> {
return dag
.tests()
.admin(envoyTag, parallel)
}adminEndpointServesReady() 🔗
AdminEndpointServesReady asserts the admin /ready endpoint returns HTTP 200 from a fresh probe container service-bound to a proxy whose minimal valid config is one HTTP listener wired to one cluster.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
admin-endpoint-serves-ready --envoy-tag stringfunc (m *MyModule) Example(ctx context.Context, envoyTag string) {
return dag.
Tests().
Adminendpointservesready(ctx, envoyTag)
}@function
async def example(envoytag: str) -> None:
return await (
dag.tests()
.adminendpointservesready(envoytag)
)@func()
async example(envoyTag: string): Promise<void> {
return dag
.tests()
.adminEndpointServesReady(envoyTag)
}all() 🔗
All runs every envoy test as a convenience for local dagger call all
invocations. CI does NOT call All: each of the three sub-aggregators
below (Validation, Admin, RoundTrips) carries its own `directive, so GH Actions schedules each onto its own runner in
parallel — running All on top would double-bill the same work.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
| parallel | Integer ! | 0 | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
all --envoy-tag string --parallel integerfunc (m *MyModule) Example(ctx context.Context, envoyTag string, parallel int) {
return dag.
Tests().
All(ctx, envoyTag, parallel)
}@function
async def example(envoytag: str, parallel: int) -> None:
return await (
dag.tests()
.all(envoytag, parallel)
)@func()
async example(envoyTag: string, parallel: number): Promise<void> {
return dag
.tests()
.all(envoyTag, parallel)
}configFileOverridesRendered() 🔗
ConfigFileOverridesRendered asserts that WithConfigFile fully replaces the rendered bootstrap; listeners and clusters added via WithListener/WithCluster are ignored when an override is set.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
config-file-overrides-renderedfunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Configfileoverridesrendered(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.configfileoverridesrendered()
)@func()
async example(): Promise<void> {
return dag
.tests()
.configFileOverridesRendered()
}customHttpFilterBodyIsSpliced() 🔗
CustomHttpFilterBodyIsSpliced asserts that a CustomHttpFilter’s caller-supplied YAML body lands as the filter’s typed_config in the rendered HCM http_filters chain.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
custom-http-filter-body-is-splicedfunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Customhttpfilterbodyisspliced(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.customhttpfilterbodyisspliced()
)@func()
async example(): Promise<void> {
return dag
.tests()
.customHttpFilterBodyIsSpliced()
}customListenerBodyIsSpliced() 🔗
CustomListenerBodyIsSpliced asserts that a CustomListener’s caller-supplied YAML body round-trips verbatim under static_resources.listeners with the builder-supplied name keyed in.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
custom-listener-body-is-splicedfunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Customlistenerbodyisspliced(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.customlistenerbodyisspliced()
)@func()
async example(): Promise<void> {
return dag
.tests()
.customListenerBodyIsSpliced()
}defaultClusterTypeIsStrictDns() 🔗
DefaultClusterTypeIsStrictDns asserts a cluster built with default
clusterType renders as type: STRICT_DNS in the rendered
bootstrap YAML.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
default-cluster-type-is-strict-dnsfunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Defaultclustertypeisstrictdns(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.defaultclustertypeisstrictdns()
)@func()
async example(): Promise<void> {
return dag
.tests()
.defaultClusterTypeIsStrictDns()
}l4TcpRoundTrip() 🔗
L4TcpRoundTrip stands up an alpine nc echo upstream behind an
Envoy TcpListener and asserts that bytes sent through Envoy come
back on the same TCP connection.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
l-4-tcp-round-trip --envoy-tag stringfunc (m *MyModule) Example(ctx context.Context, envoyTag string) {
return dag.
Tests().
L4tcproundtrip(ctx, envoyTag)
}@function
async def example(envoytag: str) -> None:
return await (
dag.tests()
.l4tcproundtrip(envoytag)
)@func()
async example(envoyTag: string): Promise<void> {
return dag
.tests()
.l4TcpRoundTrip(envoyTag)
}l4TcpTlsRoundTrip() 🔗
L4TcpTlsRoundTrip stands up an nc echo upstream behind an Envoy TLS-terminated TcpListener and asserts an openssl s_client probe can complete a TLS round-trip with marker bytes echoed back.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
l-4-tcp-tls-round-trip --envoy-tag stringfunc (m *MyModule) Example(ctx context.Context, envoyTag string) {
return dag.
Tests().
L4tcptlsroundtrip(ctx, envoyTag)
}@function
async def example(envoytag: str) -> None:
return await (
dag.tests()
.l4tcptlsroundtrip(envoytag)
)@func()
async example(envoyTag: string): Promise<void> {
return dag
.tests()
.l4TcpTlsRoundTrip(envoyTag)
}l7HttpRoundTrip() 🔗
L7HttpRoundTrip stands up an HTTP upstream behind an Envoy HttpListener and asserts a request through Envoy returns a fresh random marker served by the upstream.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
l-7-http-round-trip --envoy-tag stringfunc (m *MyModule) Example(ctx context.Context, envoyTag string) {
return dag.
Tests().
L7httproundtrip(ctx, envoyTag)
}@function
async def example(envoytag: str) -> None:
return await (
dag.tests()
.l7httproundtrip(envoytag)
)@func()
async example(envoyTag: string): Promise<void> {
return dag
.tests()
.l7HttpRoundTrip(envoyTag)
}l7HttpsMtlsAcceptsAuthorizedClient() 🔗
L7HttpsMtlsAcceptsAuthorizedClient asserts that an mTLS-terminated listener accepts curl clients that present a leaf signed by the configured clientTrustStore CA.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
l-7-https-mtls-accepts-authorized-client --envoy-tag stringfunc (m *MyModule) Example(ctx context.Context, envoyTag string) {
return dag.
Tests().
L7httpsmtlsacceptsauthorizedclient(ctx, envoyTag)
}@function
async def example(envoytag: str) -> None:
return await (
dag.tests()
.l7httpsmtlsacceptsauthorizedclient(envoytag)
)@func()
async example(envoyTag: string): Promise<void> {
return dag
.tests()
.l7HttpsMtlsAcceptsAuthorizedClient(envoyTag)
}l7HttpsMtlsRejectsAnonymousClient() 🔗
L7HttpsMtlsRejectsAnonymousClient asserts that an mTLS-terminated HttpListener refuses clients that don’t present a cert signed by the configured clientTrustStore CA — curl exits non-zero.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
l-7-https-mtls-rejects-anonymous-client --envoy-tag stringfunc (m *MyModule) Example(ctx context.Context, envoyTag string) {
return dag.
Tests().
L7httpsmtlsrejectsanonymousclient(ctx, envoyTag)
}@function
async def example(envoytag: str) -> None:
return await (
dag.tests()
.l7httpsmtlsrejectsanonymousclient(envoytag)
)@func()
async example(envoyTag: string): Promise<void> {
return dag
.tests()
.l7HttpsMtlsRejectsAnonymousClient(envoyTag)
}l7HttpsRoundTrip() 🔗
L7HttpsRoundTrip stands up a plaintext HTTP upstream behind an Envoy TLS-terminated HttpListener and asserts a client trusting the CA can complete an HTTPS round-trip.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
l-7-https-round-trip --envoy-tag stringfunc (m *MyModule) Example(ctx context.Context, envoyTag string) {
return dag.
Tests().
L7httpsroundtrip(ctx, envoyTag)
}@function
async def example(envoytag: str) -> None:
return await (
dag.tests()
.l7httpsroundtrip(envoytag)
)@func()
async example(envoyTag: string): Promise<void> {
return dag
.tests()
.l7HttpsRoundTrip(envoyTag)
}mtlsServerSecurityRequiresClientCert() 🔗
MtlsServerSecurityRequiresClientCert asserts that mTLS adds require_client_certificate + a validation_context.trusted_ca pointing at the listener’s trust PEM mount path.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
mtls-server-security-requires-client-certfunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Mtlsserversecurityrequiresclientcert(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.mtlsserversecurityrequiresclientcert()
)@func()
async example(): Promise<void> {
return dag
.tests()
.mtlsServerSecurityRequiresClientCert()
}mtlsUpstreamSecurityIncludesClientLeaf() 🔗
MtlsUpstreamSecurityIncludesClientLeaf asserts that mTLS upstream renders both validation_context AND tls_certificates referencing the cluster keystore PKCS#12 path + env-var password.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
mtls-upstream-security-includes-client-leaffunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Mtlsupstreamsecurityincludesclientleaf(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.mtlsupstreamsecurityincludesclientleaf()
)@func()
async example(): Promise<void> {
return dag
.tests()
.mtlsUpstreamSecurityIncludesClientLeaf()
}plaintextServerSecurityRendersNoTransportSocket() 🔗
PlaintextServerSecurityRendersNoTransportSocket asserts that a listener built with PlaintextServerSecurity is byte-identical to one built with nil security (no transport_socket in either).
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
plaintext-server-security-renders-no-transport-socketfunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Plaintextserversecurityrendersnotransportsocket(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.plaintextserversecurityrendersnotransportsocket()
)@func()
async example(): Promise<void> {
return dag
.tests()
.plaintextServerSecurityRendersNoTransportSocket()
}plaintextUpstreamSecurityRendersNoTransportSocket() 🔗
PlaintextUpstreamSecurityRendersNoTransportSocket asserts that PlaintextUpstreamSecurity renders the same cluster as nil upstream.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
plaintext-upstream-security-renders-no-transport-socketfunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Plaintextupstreamsecurityrendersnotransportsocket(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.plaintextupstreamsecurityrendersnotransportsocket()
)@func()
async example(): Promise<void> {
return dag
.tests()
.plaintextUpstreamSecurityRendersNoTransportSocket()
}rejectsDuplicateListenerName() 🔗
RejectsDuplicateListenerName asserts that wiring two listeners sharing the same name into a Proxy causes ConfigFile() to return a non-nil error.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
rejects-duplicate-listener-namefunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Rejectsduplicatelistenername(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.rejectsduplicatelistenername()
)@func()
async example(): Promise<void> {
return dag
.tests()
.rejectsDuplicateListenerName()
}rejectsInvalidComponentName() 🔗
RejectsInvalidComponentName asserts that the typed component factories reject names that don’t match [A-Za-z0-9_-]+ with a non-nil error. AC calls out Envoy.Cluster and Envoy.VirtualHost explicitly; RoutePrefix’s cluster arg shares the same validator.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
rejects-invalid-component-namefunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Rejectsinvalidcomponentname(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.rejectsinvalidcomponentname()
)@func()
async example(): Promise<void> {
return dag
.tests()
.rejectsInvalidComponentName()
}rejectsUnknownClusterReference() 🔗
RejectsUnknownClusterReference asserts a listener whose filter chain references a cluster not registered via WithCluster causes ConfigFile() to return a non-nil error.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
rejects-unknown-cluster-referencefunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Rejectsunknownclusterreference(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.rejectsunknownclusterreference()
)@func()
async example(): Promise<void> {
return dag
.tests()
.rejectsUnknownClusterReference()
}rejectsUnknownClusterType() 🔗
RejectsUnknownClusterType asserts Envoy.Cluster rejects clusterType values outside {STATIC, STRICT_DNS, LOGICAL_DNS} with a non-nil error.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
rejects-unknown-cluster-typefunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Rejectsunknownclustertype(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.rejectsunknownclustertype()
)@func()
async example(): Promise<void> {
return dag
.tests()
.rejectsUnknownClusterType()
}roundTrips() 🔗
RoundTrips runs every L7/L4 + TLS/mTLS round-trip — each spins an Envoy proxy plus an upstream service plus a curl client. The heaviest of the three groups.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
| parallel | Integer ! | 0 | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
round-trips --envoy-tag string --parallel integerfunc (m *MyModule) Example(ctx context.Context, envoyTag string, parallel int) {
return dag.
Tests().
Roundtrips(ctx, envoyTag, parallel)
}@function
async def example(envoytag: str, parallel: int) -> None:
return await (
dag.tests()
.roundtrips(envoytag, parallel)
)@func()
async example(envoyTag: string, parallel: number): Promise<void> {
return dag
.tests()
.roundTrips(envoyTag, parallel)
}serviceWithoutConfigFails() 🔗
ServiceWithoutConfigFails asserts that Service() on a Proxy with no listeners, clusters, or override produces a container whose admin port never opens (the envoy binary refuses to start without -c).
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
service-without-config-fails --envoy-tag stringfunc (m *MyModule) Example(ctx context.Context, envoyTag string) {
return dag.
Tests().
Servicewithoutconfigfails(ctx, envoyTag)
}@function
async def example(envoytag: str) -> None:
return await (
dag.tests()
.servicewithoutconfigfails(envoytag)
)@func()
async example(envoyTag: string): Promise<void> {
return dag
.tests()
.serviceWithoutConfigFails(envoyTag)
}tlsServerSecurityRendersDownstreamTlsContext() 🔗
TlsServerSecurityRendersDownstreamTlsContext asserts that an HttpListener built with TlsServerSecurity renders a downstream TLS transport_socket on its filter chain referencing the listener’s PKCS#12 mount path and a password env var, with no require_client_certificate.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
tls-server-security-renders-downstream-tls-contextfunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Tlsserversecurityrendersdownstreamtlscontext(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.tlsserversecurityrendersdownstreamtlscontext()
)@func()
async example(): Promise<void> {
return dag
.tests()
.tlsServerSecurityRendersDownstreamTlsContext()
}tlsUpstreamSecurityRendersUpstreamTlsContext() 🔗
TlsUpstreamSecurityRendersUpstreamTlsContext asserts that a Cluster built with TlsUpstreamSecurity renders an UpstreamTlsContext transport_socket on the cluster with a validation_context pointing at the upstream trust PEM path.
Return Type
Void ! Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
tls-upstream-security-renders-upstream-tls-contextfunc (m *MyModule) Example(ctx context.Context) {
return dag.
Tests().
Tlsupstreamsecurityrendersupstreamtlscontext(ctx)
}@function
async def example() -> None:
return await (
dag.tests()
.tlsupstreamsecurityrendersupstreamtlscontext()
)@func()
async example(): Promise<void> {
return dag
.tests()
.tlsUpstreamSecurityRendersUpstreamTlsContext()
}upstreamMtlsRoundTrip() 🔗
UpstreamMtlsRoundTrip asserts Envoy presents a client leaf to a mTLS upstream that verifies it against its own clientTrust CA.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
upstream-mtls-round-trip --envoy-tag stringfunc (m *MyModule) Example(ctx context.Context, envoyTag string) {
return dag.
Tests().
Upstreammtlsroundtrip(ctx, envoyTag)
}@function
async def example(envoytag: str) -> None:
return await (
dag.tests()
.upstreammtlsroundtrip(envoytag)
)@func()
async example(envoyTag: string): Promise<void> {
return dag
.tests()
.upstreamMtlsRoundTrip(envoyTag)
}upstreamTlsRoundTrip() 🔗
UpstreamTlsRoundTrip stands up a python HTTPS upstream and asserts Envoy connects to it over TLS when the cluster’s UpstreamSecurity truststore matches the upstream’s server cert CA.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| envoyTag | String ! | "v1.32.1" | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
upstream-tls-round-trip --envoy-tag stringfunc (m *MyModule) Example(ctx context.Context, envoyTag string) {
return dag.
Tests().
Upstreamtlsroundtrip(ctx, envoyTag)
}@function
async def example(envoytag: str) -> None:
return await (
dag.tests()
.upstreamtlsroundtrip(envoytag)
)@func()
async example(envoyTag: string): Promise<void> {
return dag
.tests()
.upstreamTlsRoundTrip(envoyTag)
}validation() 🔗
Validation runs the pure-render and config-validation tests — no Envoy service is booted, just the proxy config-rendering paths and the security renderers. The fastest of the three groups.
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| parallel | Integer ! | 0 | No description provided |
Example
dagger -m github.com/z5labs/devex/daggerverse/envoy/tests@a17bf411228ae3d544c7c18bcf08dd04c295d453 call \
validation --parallel integerfunc (m *MyModule) Example(ctx context.Context, parallel int) {
return dag.
Tests().
Validation(ctx, parallel)
}@function
async def example(parallel: int) -> None:
return await (
dag.tests()
.validation(parallel)
)@func()
async example(parallel: number): Promise<void> {
return dag
.tests()
.validation(parallel)
}