axes:
  - id: "mongodb-version"
    display_name: MongoDB Version
    values:
      - id: "rapid"
        display_name: "Rapid"
        variables:
          MONGODB_VERSION: "rapid"
      - id: "8.2"
        display_name: "8.2"
        variables:
          MONGODB_VERSION: "8.2"
      - id: "8.0"
        display_name: "8.0"
        variables:
          MONGODB_VERSION: "8.0"
      - id: "7.0"
        display_name: "7.0"
        variables:
          MONGODB_VERSION: "7.0"
      - id: "6.0"
        display_name: "6.0"
        variables:
          MONGODB_VERSION: "6.0"
      - id: "5.0"
        display_name: "5.0"
        variables:
          MONGODB_VERSION: "5.0"
          CRYPT_SHARED_VERSION: "6.0.5"
      - id: "4.4"
        display_name: "4.4"
        variables:
          MONGODB_VERSION: "4.4"
          CRYPT_SHARED_VERSION: "6.0.5"

  - id: "topology"
    display_name: Topology
    values:
      - id: "standalone"
        display_name: Standalone
        variables:
          TOPOLOGY: server
      - id: "replica-set"
        display_name: Replica Set
        variables:
          TOPOLOGY: replica_set
      - id: "replica-set-single-node"
        display_name: Replica Set (Single Node)
        variables:
          TOPOLOGY: replica_set
          ORCHESTRATION_FILE: single-node.json
      - id: "sharded-cluster"
        display_name: Sharded
        variables:
          TOPOLOGY: sharded_cluster
      - id: "load-balanced"
        display_name: Load Balanced
        variables:
          TOPOLOGY: sharded_cluster
          LOAD_BALANCED: 'true'

  - id: "single-mongos"
    display_name: Single Mongos
    values:
      - id: "single-mongos"
        display_name: Single Mongos
        variables:
          SINGLE_MONGOS: 'true'

  - id: "auth-and-ssl"
    display_name: Authentication and SSL
    values:
      - id: "auth-and-ssl"
        display_name: Auth SSL
        variables:
          AUTH: "auth"
          SSL: "yes"
      - id: "auth-and-nossl"
        display_name: Auth NoSSL
        variables:
          AUTH: "auth"
      - id: "noauth-and-ssl"
        display_name: NoAuth SSL
        variables:
          SSL: "yes"
      - id: "noauth-and-nossl"
        display_name: NoAuth NoSSL
      - id: "x509"
        display_name: X.509
        variables:
          AUTH: "x509"
          SSL: "yes"
      - id: kerberos
        display_name: Kerberos
        variables:
          AUTH: kerberos
      - id: aws-regular
        display_name: AWS Auth Regular Credentials
        variables:
          AUTH: aws-regular
      - id: aws-assume-role
        display_name: AWS Auth Assume Role
        variables:
          AUTH: aws-assume-role
      - id: aws-ec2
        display_name: AWS Auth EC2 Role
        variables:
          AUTH: aws-ec2
      - id: aws-ecs
        display_name: AWS Auth ECS Task
        variables:
          AUTH: aws-ecs
      - id: aws-web-identity
        display_name: AWS Auth Web Identity Task
        variables:
          AUTH: aws-web-identity

  - id: "ruby"
    display_name: Ruby Version
    values:
      - id: "ruby-dev"
        display_name: ruby-dev
        variables:
          RVM_RUBY: "ruby-dev"
      - id: "ruby-4.0"
        display_name: ruby-4.0
        variables:
          RVM_RUBY: "ruby-4.0"
      - id: "ruby-3.4"
        display_name: ruby-3.4
        variables:
          RVM_RUBY: "ruby-3.4"
      - id: "ruby-3.3"
        display_name: ruby-3.3
        variables:
          RVM_RUBY: "ruby-3.3"
      - id: "ruby-3.2"
        display_name: ruby-3.2
        variables:
          RVM_RUBY: "ruby-3.2"
      - id: "ruby-3.1"
        display_name: ruby-3.1
        variables:
          RVM_RUBY: "ruby-3.1"
      - id: "ruby-3.1"
        display_name: ruby-3.1
        variables:
          RVM_RUBY: "ruby-3.1"
      - id: "ruby-3.0"
        display_name: ruby-3.0
        variables:
          RVM_RUBY: "ruby-3.0"
      - id: "ruby-2.7"
        display_name: ruby-2.7
        variables:
          RVM_RUBY: "ruby-2.7"
      - id: "jruby-9.4"
        display_name: jruby-9.4
        variables:
          RVM_RUBY: "jruby-9.4"
      - id: "jruby-9.3"
        display_name: jruby-9.3
        variables:
          RVM_RUBY: "jruby-9.3"

  - id: "os"
    display_name: OS
    values:
      - id: ubuntu2404
        display_name: "Ubuntu 24.04"
        run_on: ubuntu2404-small
      - id: ubuntu2404-arm
        display_name: "Ubuntu 24.04 ARM64"
        run_on: ubuntu2404-arm64-small
      - id: ubuntu2204
        display_name: "Ubuntu 22.04"
        run_on: ubuntu2204-small
      - id: ubuntu2204-arm
        display_name: "Ubuntu 22.04 ARM64"
        run_on: ubuntu2204-arm64-small
      - id: ubuntu2004
        display_name: "Ubuntu 20.04"
        run_on: ubuntu2004-small
      - id: ubuntu1804
        display_name: "Ubuntu 18.04"
        run_on: ubuntu1804-small
      - id: debian11
        display_name: "Debian 11"
        run_on: debian11-small

  - id: "compressor"
    display_name: Compressor
    values:
      - id: "zlib"
        display_name: Zlib
        variables:
          COMPRESSOR: "zlib"
      - id: "snappy"
        display_name: Snappy
        variables:
          COMPRESSOR: "snappy"
      - id: "zstd"
        display_name: Zstd
        variables:
          COMPRESSOR: "zstd"

  - id: retry-reads
    display_name: Retry Reads
    values:
      - id: no-retry-reads
        display_name: No Retry Reads
        variables:
          RETRY_READS: 'false'

  - id: retry-writes
    display_name: Retry Writes
    values:
      - id: no-retry-writes
        display_name: No Retry Writes
        variables:
          RETRY_WRITES: 'false'

  - id: lint
    display_name: Lint
    values:
      - id: on
        display_name: On
        variables:
          LINT: '1'

  - id: stress
    display_name: Stress
    values:
      - id: on
        display_name: On
        variables:
          STRESS: '1'

  - id: fork
    display_name: Fork
    values:
      - id: on
        display_name: On
        variables:
          FORK: '1'

  - id: solo
    display_name: Solo
    values:
      - id: on
        display_name: On
        variables:
          SOLO: '1'

  - id: "as"
    display_name: ActiveSupport
    values:
      - id: "as"
        display_name: AS
        variables:
          WITH_ACTIVE_SUPPORT: true

  - id: bson
    display_name: BSON
    values:
      - id: master
        display_name: master
        variables:
          BSON: master
      - id: 4-stable
        display_name: 4-stable
        variables:
          BSON: 4-stable
      - id: min
        display_name: min
        variables:
          BSON: min

  - id: "fle"
    display_name: FLE
    values:
      - id: "helper"
        display_name: via LMC helper
        variables:
          FLE: helper
      - id: "path"
        display_name: via LMC path
        variables:
          FLE: path
      - id: "mongocryptd"
        display_name: mongocryptd (no crypt_shared)
        variables:
          FLE: mongocryptd

  - id: ocsp-algorithm
    display_name: OCSP Algorithm
    values:
      - id: rsa
        display_name: RSA
        variables:
          OCSP_ALGORITHM: rsa
      - id: ecdsa
        display_name: ECDSA
        variables:
          OCSP_ALGORITHM: ecdsa

  - id: ocsp-status
    display_name: OCSP Status
    values:
      - id: valid
        display_name: Valid
      - id: revoked
        display_name: Revoked
        variables:
          OCSP_STATUS: revoked
      - id: unknown
        display_name: Unknown
        variables:
          OCSP_STATUS: unknown

  - id: ocsp-delegate
    display_name: OCSP Delegate
    values:
      - id: on
        display_name: on
        variables:
          OCSP_DELEGATE: 1

  - id: ocsp-must-staple
    display_name: OCSP Must Staple
    values:
      - id: on
        display_name: on
        variables:
          OCSP_MUST_STAPLE: 1

  - id: ocsp-verifier
    display_name: OCSP Verifier
    values:
      - id: true
        display_name: true
        variables:
          OCSP_VERIFIER: 1

  - id: ocsp-connectivity
    display_name: OCSP Connectivity
    values:
      <% %w(pass fail).each do |value| %>
      - id: <%= value %>
        display_name: <%= value %>
        variables:
          OCSP_CONNECTIVITY: <%= value %>
      <% end %>

  - id: extra-uri-options
    display_name: extra URI options
    values:
      - id: none
        display_name: None
      <% %w(tlsInsecure=true tlsAllowInvalidCertificates=true).each do |value| %>
      - id: "<%= value %>"
        variables:
          EXTRA_URI_OPTIONS: "<%= value %>"
      <% end %>

  - id: api-version-required
    display_name: API version required
    values:
      - id: yes
        display_name: Yes
        variables:
          API_VERSION_REQUIRED: 1
          REQUIRE_API_VERSION: 1
      - id: no
        display_name: No
