2017-11-17 4 views
1

ich zum ersten Mal Nutzer von k6 bin und ich habe verwalten bereits einen Fehler zu erhalten, wenn das Skript ausgeführt wird:Lauf k6 Skript für Belastungstests gibt einen Fehler

„Request fehlgeschlagen [33merror [0m =“ Holen Sie https: ///: gestoppt nach 0 umleitet“

Script k6.js:

import http from "k6/http"; 
import { sleep } from "k6"; 

export let options = { 
stages: [ 
    { duration: "30s", target: 20 }, 
    { duration: "1m30s", target: 10 }, 
    { duration: "20s", target: 0 }, 
    ] 
}; 

export default function() { 
    let res = http.get("https://<our_page_URL>/"); 
    check(res, { 
    "status code MUST be 200": (res) => res.status == 200, 
    }) || fail("status code was *not* 200"); 
    sleep(1); 
} 

Warum ich diesen Fehler bekommen und was ist die Lösung

+0

Warum haben Sie die '|| fail() 'check, anstatt' options.throw' auf 'true' zu ​​setzen? – Sander

+0

Gute Frage. Ich fand dieses Beispiel auf der k6-Seite und schien mir nützlich zu sein, und deshalb habe ich es benutzt, um zu sehen, wie es funktioniert. Leider weiß ich nicht, wie man options.throw verwendet, sondern in die docs schaut. – jurijk

+0

@Sander & jurijk Ich denke, die Dokumente wurden vor Optionen geschrieben. Danke, dass Sie darauf hingewiesen haben. Ich werde sehen, ob ich die Dokumente aktualisieren kann! – Ragnar

Antwort

2

Sie müssen die Option maxRedirects einrichten; maxRedirects ist die maximale Anzahl von HTTP-Weiterleitungen, die k6 folgen wird, bevor eine Anfrage abgebrochen wird ($ PATH gestoppt nach $ MAX_REDIRECT_VALUE Weiterleitungen)

Sie können die Option als CLI-Argument oder Skriptoptionen übergeben. Mehr über diese Option bei https://docs.k6.io/docs/options

export let options = { 
    // Max redirects to follow (default is 10) 
    maxRedirects: 10 
}; 

Der Standardwert ist 10, so dass es wahrscheinlich ein Fehler des Standardwertes Überspringen zugewiesen wird.

Dies ist ein redirect example zu testen, wie es funktioniert.

import http from "k6/http"; 
import {check} from "k6"; 

export let options = { 
    // Max redirects to follow (default is 10) 
    maxRedirects: 5 
}; 

export default function() { 
    // If redirecting more than options.maxRedirects times, the last response will be returned 
    let res = http.get("https://httpbin.org/redirect/6"); 
    check(res, { 
     "is status 302": (r) => r.status === 302 
    }); 

    // The number of redirects to follow can be controlled on a per-request level as well 
    res = http.get("https://httpbin.org/redirect/1", {redirects: 1}); 
    console.log(res.status); 
    check(res, { 
     "is status 200": (r) => r.status === 200, 
     "url is correct": (r) => r.url === "https://httpbin.org/get" 
    }); 
} 
+0

ppcano: das hat meinen Tag gerettet! Vielen Dank! Jetzt habe ich endlich keinen Fehler mehr und der Rest funktioniert einwandfrei. – jurijk

+0

@jurijk: Gerne helfen. Ich dachte, du hättest das Problem bereits nach der Slack-Konversation gelöst, weshalb ich die Frage nicht früher beantwortet habe. Wie auch immer, lassen Sie uns wissen, wenn Sie Fragen haben oder Hilfe benötigen. Ich öffne auch ein Github-Problem für den Fehler https://github.com/loadimpact/k6/issues/369 – ppcano