Como grep resposta para descobrir quantas chamadas foram esgotadas?

0

Eu tenho um comando curl que está chamando um dos nossos serviços, então, se o tempo limite do serviço for interrompido, ele retornará a resposta JSON, como abaixo:

[{"results":{"response":null},"error":{"errorCode":1001,"message":"Service Timeout","status":"FAILURE"}}]

Abaixo está o meu comando curl quando eu corro, eu vou ficar acima da resposta se houver algum tempo limite

curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120";

Estou executando meu comando curl acima em um loop for x número de vezes. Agora quero ver quantas chamadas atingiram o tempo limite verificando "message" na resposta JSON? Quero dizer, se eu fiz 1 milhão de chamadas, quantas chamadas foram temporizadas e qual foi a porcentagem de tempo limite?

Então eu tenho abaixo de uma linha para loop que chama o comando curl, mas não tenho certeza de como descobrir quantas chamadas tem tempo esgotado e qual foi a porcentagem de tempo esgotado? Isso é possível fazer?

for ((i=1;i<=1000000;i++)); do   curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120"; done

Atualização: -

Isto é o que eu vejo como uma saída depois de executar o comando:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   226  100   226    0     0  12798      0 --:--:-- --:--:-- --:--:-- 17384
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   226  100   226    0     0   4591      0 --:--:-- --:--:-- --:--:--  7290
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   226  100   226    0     0   6318      0 --:--:-- --:--:-- --:--:--  8370
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   226  100   226    0     0   5252      0 --:--:-- --:--:-- --:--:--  7793
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   226  100   226    0     0   6139      0 --:--:-- --:--:-- --:--:--  8071
1
    
por user1950349 17.03.2016 / 00:18

1 resposta

2

Eu recomendo usar jq para todas as operações de processamento de texto relacionadas ao JSON. É claro que você poderia gerenciar a análise de JSON com grep , mas o IMO não é o caminho a seguir.

Exemplo rápido assumindo que o tempo limite é igual ao código de erro 1001. O número retornado é o número de tempos limite que ocorreu:

for ((i=1;i<=1000000;i++)); do
curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120"
done \
| jq '.[].error.errorCode == 1001' | grep -c true

Como alternativa, se você quiser usar apenas o grep (isto assume que a resposta do JSON é uma única linha):

for ((i=1;i<=1000000;i++)); do
curl --header "Authorization: Bearer some token here" "http://localhost:8080/v2/line?&clientid=120"
done \
| grep -wcoE '"errorCode":1001'
    
por 17.03.2016 / 00:35