GenericRandomErrorPlugin

Falha nas solicitações com um erro selecionado aleatório no arquivo que contém erros simulados.

Captura de tela de um prompt de comando com o Proxy de Desenvolvimento simulando um dos erros para uma solicitação de API OpenAI, conforme definido no arquivo de configuração.

Exemplo de configuração

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "genericRandomErrorPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.openai.com/*"
  ],
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.schema.json",
    "errorsFile": "errors.json"
  }
}

Propriedades de configuração

Propriedade Descrição Inadimplência
errorsFile Caminho para o arquivo que contém respostas de erro. errors.json
rate O percentual de solicitações a falhar com um erro aleatório. Valor entre 0 e 100. 50
retryAfterInSeconds O número de segundos a aguardar antes de repetir a solicitação. Incluído no cabeçalho de resposta Retry-After para limitação dinâmica. 5

Opções de linha de comando

Nome Descrição Inadimplência
-f, --failure-rate <failure rate> O percentual de solicitações a falhar com um erro aleatório. Valor entre 0 e 100. 50

Observações

Corpo da resposta

Se você definir a body propriedade de uma resposta de erro para um objeto JSON ou matriz, o Proxy de Desenvolvimento a serializará como JSON. Se você defini-la como uma cadeia de caracteres, o Proxy de Desenvolvimento enviará a cadeia de caracteres as-is, sem aspas ao redor. Uma cadeia de caracteres que começa com @ é tratada como um caminho para um arquivo, em relação ao arquivo de erros, com o corpo da resposta. Como o Proxy de Desenvolvimento usa o Content-Type cabeçalho como application/jsonpadrão, defina o Content-Type cabeçalho para corresponder ao conteúdo quando você retornar conteúdo não JSON, por exemplo text/plain.

Valores por resposta Retry-After

O Proxy de Desenvolvimento é resolvido @dynamic no Retry-After cabeçalho para qualquer código de status, como 429, 503ou 529. Ele corresponde ao nome do cabeçalho, independentemente do caso. Quando ele é resolvido @dynamic, ele também registra a solicitação com o RetryAfterPlugin, que relata as solicitações que seu aplicativo envia antes do Retry-After tempo acabar.

Por padrão, o Retry-After cabeçalho usa o valor global retryAfterInSeconds . Você pode substituir esse valor por resposta usando a @dynamic=N sintaxe no arquivo de respostas de erro, onde N está o número de segundos a aguardar antes de tentar novamente.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/genericrandomerrorplugin.errorsfile.schema.json",
  "errors": [
    {
      "request": {
        "url": "https://api.openai.com/*"
      },
      "responses": [
        {
          "statusCode": 429,
          "headers": [
            {
              "name": "Retry-After",
              "value": "@dynamic=17"
            }
          ],
          "body": {
            "error": {
              "message": "Rate limit exceeded. Wait 17 seconds."
            }
          }
        }
      ]
    }
  ]
}

Neste exemplo, o Retry-After cabeçalho usa segundos 17 para essa resposta, independentemente da configuração global retryAfterInSeconds . O valor incrementa em cada solicitação limitada subsequente, como com o token sem formatação @dynamic .

Cabeçalho padrão Content-Type

Se uma resposta de erro tiver um body cabeçalho e não definir um Content-Type cabeçalho, o Proxy de Desenvolvimento retornará a resposta com o Content-Type: application/json cabeçalho. Para retornar um tipo de conteúdo diferente, adicione o Content-Type cabeçalho à resposta no arquivo de erros. O Proxy de Desenvolvimento usa o valor especificado.

Próxima etapa