[
    {
        "function": "stream_context_create",
        "params": [],
        "return": "@mock-stream-context"
    },
    {
        "function": "stream_socket_client",
        "params": [
            "tcp:\/\/localhost:8000",
            null,
            null,
            5,
            4,
            "@mock-stream-context"
        ],
        "return": "@mock-stream"
    },
    {
        "function": "get_resource_type",
        "params": [
            "@mock-stream"
        ],
        "return": "stream"
    },
    {
        "function": "stream_set_timeout",
        "params": [
            "@mock-stream",
            5
        ],
        "return": true
    },
    {
        "function": "fwrite",
        "params": [
            "@mock-stream"
        ],
        "return-op": "key-save",
        "return": 255
    },
    {
        "function": "stream_get_line",
        "params": [
            "@mock-stream",
            1024,
            "\r\n\r\n"
        ],
        "return-op": "key-respond",
        "return": "HTTP\/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: {key}"
    },
    {
        "function": "fwrite",
        "params": [
            "@mock-stream"
        ],
        "return": 13
    }
]