Skip to content

Gperf CPU + Strace with QUIC Client and IvyServer - No response from IvyServer #66

@ElNiak

Description

@ElNiak

This configuration seems to slow down too much Ivy server so it can send message/response in time

  • TODO - Investigate

Test config:

- name: Gperf CPU and Strace - QUIC Client-IvyServer Communication Test
  description: Verify that the Picoquic client can communicate with the Picoquic server
    over Docker Compose network.
  network_environment:
    type: docker_compose
  execution_environments:
  - type: gperf_cpu
  - type: strace
  iterations: 1
  services:
    picoquic_client:
      name: picoquic_client
      timeout: 100
      implementation:
        name: picoquic
        type: iut
        shadow_compatible: false
        gperf_compatible: false
        version:
          version: rfc9000
          commit: bb67995f2d7c0e577c2c8788313c3b580d3df9a7
          dependencies:
          - name: picotls
            url: https://github.com/h2o/picotls.git
            commit: 047c5fe20bb9ea91c1caded8977134f19681ec76
          client:
            initial_version: '00000001'
            protocol:
              alpn:
                param: -a
                value: hq-interop
              additional_parameters: -l - -D -L
            binary:
              dir: /opt/picoquic
              name: ./picoquicdemo
            network:
              interface:
                param: -e
                value: lo
              port: 4443
              destination: 11.0.0.1
            certificates:
              cert:
                param: -c
                file: /opt/certs/cert.pem
                local_file: config/certs/cert.pem
              key:
                param: -k
                file: /opt/certs/key.pem
                local_file: config/certs/key.pem
            ticket_file:
              param: -T
              file: /opt/ticket/ticket.key
              local_file: config/tls_keys/
            logging:
              log_path: /app/logs/client.log
              err_path: /app/logs/client.err.log
              qlog:
                param: -q
                path: /app/logs/client.qlog
          server:
            initial_version: '00000001'
            protocol:
              alpn:
                param: -a
                value: hq-interop
              additional_parameters: -l - -n servername -D -L
            binary:
              dir: /opt/picoquic
              name: ./picoquicdemo
            network:
              interface:
                param: -e
                value: eth0
              port: 4443
              destination: 11.0.0.1
            certificates:
              cert:
                param: -c
                file: /opt/certs/cert.pem
                local_file: config/certs/cert.pem
              key:
                param: -k
                file: /opt/certs/key.pem
                local_file: config/certs/key.pem
            ticket_file:
              param: -T
              file: /opt/ticket/ticket.key
              local_file: config/tls_keys/
            logging:
              log_path: /app/logs/server.log
              err_path: /app/logs/server.err.log
              qlog:
                param: -q
                path: /app/logs/server.qlog
      protocol:
        name: quic
        version: rfc9000
        role: client
        target: ivy_server
        protocol_type: client_server
      ports:
      - 5000:5000
      - 8081:8081
      generate_new_certificates: true
      volumes: []
      directories_to_start: []
    ivy_server:
      name: ivy_server
      timeout: 60
      implementation:
        name: panther_ivy
        type: testers
        shadow_compatible: true
        gperf_compatible: true
        test: quic_client_test_max
        protocol: quic
        version:
          version: rfc9000
          commit: production
          dependencies:
          - name: picotls
            url: https://github.com/h2o/picotls.git
            commit: 047c5fe20bb9ea91c1caded8977134f19681ec76
          env:
            TEST_ALPN: hq-interop
            PROTOCOL_TESTED: quic
            ZRTT_SSLKEYLOGFILE: $SOURCE_DIR/panther_ivy/protocol-testing/quic/last_tls_key.txt
            RETRY_TOKEN_FILE: $SOURCE_DIR/panther_ivy/protocol-testing/quic/last_retry_token.txt
            NEW_TOKEN_FILE: $SOURCE_DIR/panther_ivy/protocol-testing/quic/last_new_token.txt
            ENCRYPT_TICKET_FILE: $SOURCE_DIR/panther_ivy/protocol-testing/quic/last_encrypt_session_ticket.txt
            SESSION_TICKET_FILE: $SOURCE_DIR/panther_ivy/protocol-testing/quic/last_session_ticket_cb.txt
            SAVED_PACKET: $SOURCE_DIR/panther_ivy/protocol-testing/quic/saved_packet.txt
            initial_max_stream_id_bidi: $SOURCE_DIR/panther_ivy/protocol-testing/quic/initial_max_stream_id_bidi.txt
            active_connection_id_limit: $SOURCE_DIR/panther_ivy/protocol-testing/quic/active_connection_id_limit.txt
            initial_max_stream_data_bidi_local: $SOURCE_DIR/panther_ivy/protocol-testing/quic/initial_max_stream_data_bidi_local.txt
            initial_max_stream_data_bidi_remote: $SOURCE_DIR/panther_ivy/protocol-testing/quic/initial_max_stream_data_bidi_remote.txt
            initial_max_stream_data_uni: $SOURCE_DIR/panther_ivy/protocol-testing/quic/initial_max_stream_data_uni.txt
            initial_max_data: $SOURCE_DIR/panther_ivy/protocol-testing/quic/initial_max_data.txt
            INITIAL_VERSION: '1'
          parameters:
            tests_dir:
              value: quic_tests/
              description: 'Directory where the Ivy QUIC tests are stored (default:
                quic_tests/)'
            seed:
              value: 0
              description: 'Seed for the random generator (default: 0)'
            the_cid:
              value: 0
              description: 'Client Initial connection ID (default: 0)'
            server_port:
              value: 4443
              description: 'Server port (default: 4443)'
            iversion:
              value: 1
              description: 'Initial version (default: 1)'
            server_addr:
              value: 2130706433
              description: 'Server address (default: 0x7F000001)'
            server_cid:
              value: 0
              description: 'Server connection ID (default: 0)'
            client_port:
              value: 4997
              description: 'Client port (default: 4443)'
            client_port_alt:
              value: 4444
              description: 'Client port alternative (default: 4444)'
            client_addr:
              value: 2130706433
              description: 'Client address (default: 0x7F000001)'
          client:
            initial_version: '00000001'
            protocol:
              alpn:
                param: -a
                value: hq-interop
              additional_parameters: -l - -D -L
            binary:
              dir: /opt/panther_ivy/protocol-testing/
              name: ''
            network:
              interface:
                param: -e
                value: lo
              port: 4443
              destination: 11.0.0.1
            certificates:
              cert:
                param: -c
                file: /opt/certs/cert.pem
                local_file: config/certs/cert.pem
              key:
                param: -k
                file: /opt/certs/key.pem
                local_file: config/certs/key.pem
            ticket_file:
              param: -T
              file: /opt/ticket/ticket.key
              local_file: config/tls_keys/
            logging:
              log_path: /app/logs/client.log
              err_path: /app/logs/client.err.log
              qlog:
                param: -q
                path: /app/logs/client.qlog
            tests:
              quic_server_test_stream:
                enabled: false
                description: Test QUIC server stream
              quic_server_test_max:
                enabled: false
                description: Test QUIC server max
              quic_server_test_accept_maxdata:
                enabled: false
                description: Test QUIC server accept max data
              quic_server_test_reset_stream:
                enabled: false
                description: Test QUIC server reset stream
              quic_server_test_connection_close:
                enabled: false
                description: Test QUIC server connection close
          server:
            the_cid: '0'
            iversion: '1'
            server_port: 4443
            server_addr: 2130706433
            server_cid: '1'
            client_port: 4997
            client_port_alt: 4444
            client_addr: 2130706433
            initial_version: '00000001'
            protocol:
              alpn:
                param: -a
                value: hq-interop
              additional_parameters: -l - -n servername -D -L
            binary:
              dir: /opt/panther_ivy/protocol-testing/
              name: ''
            network:
              interface:
                param: -e
                value: eth0
              port: 4443
              destination: 11.0.0.1
            certificates:
              cert:
                param: -c
                file: /opt/certs/cert.pem
                local_file: config/certs/cert.pem
              key:
                param: -k
                file: /opt/certs/key.pem
                local_file: config/certs/key.pem
            ticket_file:
              param: -T
              file: /opt/ticket/ticket.key
              local_file: config/tls_keys/
            logging:
              log_path: /app/logs/server.log
              err_path: /app/logs/server.err.log
              qlog:
                param: -q
                path: /app/logs/server.qlog
            tests:
              quic_client_test_max:
                enabled: false
                description: Test QUIC client max
              quic_client_test_ext_min_ack_delay:
                enabled: false
                description: Test QUIC client extension minimum ACK delay
              quic_client_test_unknown:
                enabled: false
                description: Test QUIC client unknown
              quic_client_test_unknown_tp:
                enabled: false
                description: Test QUIC client unknown transport parameter
        environment:
          PROTOCOL_TESTED: ''
          RUST_LOG: debug
          RUST_BACKTRACE: '1'
          SOURCE_DIR: /opt/
          IVY_DIR: $SOURCE_DIR/panther_ivy
          PYTHON_IVY_DIR: /usr/local/lib/python3.10/dist-packages/ms_ivy-1.8.25-py3.10-linux-x86_64.egg/
          IVY_INCLUDE_PATH: $IVY_INCLUDE_PATH:/usr/local/lib/python3.10/dist-packages/ms_ivy-1.8.25-py3.10-linux-x86_64.egg/ivy/include/1.7
          Z3_LIBRARY_DIRS: $IVY_DIR/submodules/z3/build
          Z3_LIBRARY_PATH: $IVY_DIR/submodules/z3/build
          LD_LIBRARY_PATH: $LD_LIBRARY_PATH:$IVY_DIR/submodules/z3/build
          PROOTPATH: $SOURCE_DIR
          ADDITIONAL_PYTHONPATH: /app/implementations/quic-implementations/aioquic/src/:$IVY_DIR/submodules/z3/build/python:$PYTHON_IVY_DIR
          ADDITIONAL_PATH: /go/bin:$IVY_DIR/submodules/z3/build
        parameters:
          tests_output_dir:
            value: temp/
            description: Directory where the tests output will be stored
          tests_build_dir:
            value: build/
            description: Directory where the tests will be built
          iterations_per_test:
            value: '1'
            description: Number of iterations per test
          internal_iterations_per_test:
            value: '100'
            description: Number of internal iterations per test
          timeout:
            value: '120'
            description: Timeout for each test (in seconds)
          keep_alive:
            value: 'False'
            description: Keep the Ivy process alive after the tests
          run_in_docker:
            value: 'True'
            description: Run the tests in a Docker container
          get_tests_stats:
            value: 'True'
            description: Get the statistics of the tests
          log_level:
            value: DEBUG
            description: Log level for Ivy
      protocol:
        name: quic
        version: rfc9000
        role: server
        target: null
        protocol_type: client_server
      ports:
      - 4443:4443
      - 4987:4987
      - 8080:8080
      generate_new_certificates: true
      volumes: []
      directories_to_start: []
  steps:
    wait: 100
  assertions: null

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions