Basic Concepts
Core concepts for writing and running .gctf tests.
What a test contains
php
--- ADDRESS ---
localhost:4770
--- ENDPOINT ---
package.Service/Method
--- REQUEST ---
{
"id": 1
}
--- ASSERTS ---
.id == 1Main sections
ADDRESS- target host and portENDPOINT- gRPC method inpackage.Service/MethodformatREQUEST- JSON payload (multiple allowed)RESPONSE- expected JSON payload (multiple allowed)ERROR- expected error payloadASSERTS- validation expressionsREQUEST_HEADERS- request metadataTLS- TLS/mTLS parametersPROTO- descriptor/reflection configurationOPTIONS- parsed, validated, and used for per-test runtime overrides (timeout,retry,retry-delay,no-retry)
RPC patterns
- Unary: one
REQUEST+ oneRESPONSE - Client streaming: multiple
REQUEST+ oneRESPONSE - Server streaming: one
REQUEST+ multipleRESPONSEorASSERTS - Bidirectional streaming: alternating
REQUESTand validations
Assertion examples
php
--- ASSERTS ---
.status == "ok"
.items | length > 0
@header("x-request-id") != null
@uuid(.user.id, "v4")Runtime configuration
Use CLI flags for execution behavior:
bash
grpctestify tests/ --parallel 4 --timeout 30
grpctestify tests/ --log-format json --log-output results.jsonUseful environment variables:
bash
export GRPCTESTIFY_ADDRESS="localhost:4770"
export GRPCTESTIFY_COMPRESSION="gzip"
export GRPCTESTIFY_TLS_CA_FILE="./certs/ca.pem"