Scope

test_spec_config is a developer-only surface for tests, benchmarks, fault isolation, and implementation experiments. Normal deployments should omit the entire block. These switches may bypass production paths or change performance behavior, and they are not part of the stable user configuration contract.

The stable user-facing block for network policy and transport tuning is network. There is no public protocol YAML block. Protocol selection remains test-only under test_spec_config.protocol_type.

Unknown fields are rejected. The runtime accepts test_spec_config in Fluxon KV master and client configurations; TestStack accepts the same fields under profiles.<id>.runtime.test_stack.runtime_config.kv_base.test_spec_config and adds one runner-only field described below.

Protocol selection

Select TCP for a test with:

test_spec_config:
  protocol_type: tcp

Select RDMA and pin test devices with:

test_spec_config:
  protocol_type: rdma
  rdma_device_names:
    - mlx5_0

If protocol_type is omitted, the current Fluxon KV default remains RDMA. rdma_device_names in this block is a test override and takes precedence over network.rdma_device_names. The Mooncake test path remains RDMA and does not consume this Fluxon KV protocol override.

Runtime fields

Observability, indexes, and data-path controls

FieldType and defaultEffect
disable_observabilitybool, falseDisables Fluxon KV observability and OTLP background work.
disable_master_replica_cachebool, falseDisables master replica-cache maintenance.
disable_prefix_indexbool, falseDisables master prefix-index maintenance.
prefer_local_placementbool, falseReserved parsed test field; no current runtime branch consumes it.
short_circuit_put_payload_pathbool, falseKeeps put allocation but skips payload copy and transfer for path isolation.
skip_put_end_commitbool, falseReturns after payload transfer without the put_end commit; cleanup relies on inflight-put TTL.

Protocol, IPC, and thread tuning

FieldType and defaultEffect
protocol_typetcp / rdma; omitted means RDMA except for derived side-transfer workersSelects the Fluxon KV protocol for a test.
transport_modetransfer_only / transfer_with_rpc; effective default transfer_with_rpc except for side-transfer workersEnables or disables the transfer RPC fast path.
rdma_device_namesnon-empty string list; omittedPins and fans out RDMA devices for a test; values are trimmed, deduplicated, and sorted.
disable_local_ipcbool, falseDisables all same-machine local IPC so peers use direct transport.
disable_crossowner_ipcbool, falseKeeps same-owner local IPC but sends same-host cross-owner traffic through direct transport.
enable_iceoryx_logsbool, falseEnables normally suppressed iceoryx2 logs.
iceoryx_external_busy_pollbool, falseUses busy polling for the external local-IPC receiver instead of its wait set.
iceoryx_owner_client_busy_pollbool, trueUses busy polling for the owner/client local-IPC receiver.
tcp_thread_reactor_shard_countinteger 1..16; omittedOverrides the TCP-thread reactor shard count.
tcp_thread_bulk_lane_countinteger 1..8; omittedOverrides the TCP-thread bulk-lane count.
tcp_thread_control_lane_countinteger 1..8; omittedOverrides the TCP-thread control-lane count.
user_rpc_sync_handler_thread_countpositive integer; omittedOverrides the dedicated synchronous user-RPC worker count.
require_transfer_rpc_fast_path_ready_timeout_secondspositive integer; omittedMakes owner readiness wait for the transfer RPC fast path, with the given timeout.

Side transfer and KV SSD experiments

FieldType and defaultEffect
enable_side_transferbool, falseEnables the TCP side-transfer fast path for the configured client.
side_transfer_worker_countnon-negative integer, 0Makes an owner start the requested number of side-transfer workers.
side_transfer_worker_p2p_port_basenon-zero u16; omittedPins worker ports to base + worker_index.
side_transfer_roleworker; omittedMarks a zero-contribution client as an internal side-transfer worker. Its protocol is derived as TCP.
kv_ssd_storage_backendnative / foyer, nativeSelects the KV SSD implementation for a test.
kv_ssd_uring_modesingle_buffer / iovec, single_bufferSelects the native KV SSD io_uring buffer mode.

Combination constraints

  • rdma_device_names is valid only with effective RDMA. It is rejected with protocol_type: tcp.
  • An explicitly configured transport_mode on an RDMA test requires explicit test_spec_config.rdma_device_names; this prevents implicit device selection in benchmark variants. TCP does not require an RDMA device list.
  • require_transfer_rpc_fast_path_ready_timeout_seconds requires transport_mode: transfer_with_rpc. RDMA also requires an explicit test device list; TCP must be selected explicitly.
  • side_transfer_role: worker requires zero-contribution client mode. A worker cannot set protocol_type or rdma_device_names, because its TCP protocol is derived from the role.
  • A positive side_transfer_worker_count is valid only on an owner. If a port base is set, it must be non-zero and every derived worker port must fit in u16.
  • kv_ssd_storage_backend: foyer supports only kv_ssd_uring_mode: single_buffer; iovec is native-only.

TestStack-only field

TestStack additionally accepts:

FieldType and defaultEffect
p2p_transport_impltcp / tcp_thread; omittedSelects the matching staged P2P transport artifact set. The runner consumes this field and removes it before generating runtime YAML.

Example location:

profiles:
  example_profile:
    runtime:
      test_stack:
        runtime_config:
          kv_base:
            test_spec_config:
              protocol_type: tcp
              p2p_transport_impl: tcp_thread

Do not place p2p_transport_impl directly in a Fluxon KV master or client runtime configuration.