使用 Locust 加载测试视频流

Load Test Video Streaming with Locust

我正在研究如何使用 Locust 对视频流播放器进行负载测试,但无法使其正常工作。基本上,我有一个加载播放器的回放 URL,我可以将参数传递给播放器,包括 autoPlay=true.

因此,我尝试通过自动播放参数来播放 URL,但这似乎还不够。如果您熟悉视频流,视频通常被分成 2 到 10 秒的块;每个块都有一个唯一的 URI,玩家可以在其中获取下一个片段。

Locust 目前可以做到这一点吗?

这是我的完整性代码:

from locust import HttpUser, task, between


class GenerateViewers(HttpUser):
    wait_time = between(1, 5)

    @task
    def index(self):
        self.client.get("/")

然后我可以打开 Locust UI 并输入我的测试参数,包括播放器 URL。我假设发生的事情是 Locust 正在点击 URL 我传递 UI 并立即退出(即,它只是发送一个 GET 请求)。

Locust 可以,但简单的 built-in 用户则不行。你是对的,Locust 只会在你给它的端点做一个简单的 GET。我使用 Locust 进行视频流负载测试,但我不得不编写自己的用户流来模拟视频播放器以获得我想要的行为。根据您的具体用例,您需要执行相同的操作。

我建议编写一个 Python 脚本来执行您希望它执行的操作。在基本情况下,您可以将整个内容复制并粘贴到 Locust 中并将其标记为 @task 并将您的网络调用替换为 Locust 的。

对于更高级的场景,您可以编写 Python 代码来执行您需要它执行的任何操作,并在所需的时间点手动触发事件以将事情的状态报告回 Locust。在文档中,这被称为使用自定义客户端测试其他系统。你可以在这里查看 https://docs.locust.io/en/stable/testing-other-systems.html