Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ElNiak opened this issue Feb 19, 2025 · 1 comment
Labels
bug Something isn't working

Comments

@ElNiak
Copy link
Owner

ElNiak commented Feb 19, 2025

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
@ElNiak ElNiak added the bug Something isn't working label Feb 19, 2025
Copy link

Thanks for reporting an issue <3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant