#!/usr/bin/env fuchsia-vendored-python
# Copyright 2025 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""FFX host tool E2E stress tests."""

import logging

import ffxtestcase
from mobly import test_runner

_LOGGER: logging.Logger = logging.getLogger(__name__)


# These tests just hammer the ffx connection to see if it falls over.
class FfxDirectDaemonTest(ffxtestcase.FfxTestCase):
    """FFX host tool E2E stress test"""

    def test_stress(self) -> None:
        """Run multiple `ffx speedtest` instances to stress the ffx connection."""
        instances = []
        for i in range(20):
            cmd = [
                "speedtest",
                "-r",
                "5",
                "socket",
                "-L",
                "10",
                "-b",
                "1000",
            ]
            if i % 2 == 0:
                cmd += ["-R"]
            instances.append(self.spawn_ffx(cmd))

        for instance in instances:
            instance.wait()


if __name__ == "__main__":
    test_runner.main()
