Rejestrowanie i eksportowanie działania serwera proxy

Na pierwszy rzut oka
Celem: Rejestrowanie i eksportowanie działania serwera proxy deweloperskiego do pliku raportu
Czas: 10 minut
Plugins:ExecutionSummaryPlugin, MarkdownReporter
Wymagania wstępne:konfigurowanie serwera proxy deweloperskiego

Aby rejestrować i eksportować działanie serwera proxy, użyj wtyczki ExecutionSummaryPlugin i reporter w pliku konfiguracji.

W poniższym przykładzie pokazano, jak skonfigurować serwer proxy dev do rejestrowania i eksportowania działania serwera proxy przy użyciu wtyczki ExecutionSummaryPlugin i MarkdownReporter .

Plik: devproxyrc.json

{
  "plugins": [
    {
      "name": "ExecutionSummaryPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    },
    {
        "name": "MarkdownReporter",
        "enabled": true,
        "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*"
  ]
}

Wskazówka

Zamiast tworzyć konfigurację samodzielnie, możesz pobrać gotowe api-inventory ustawienie wstępne, które rejestruje adresy URL, które wywołuje aplikacja, i podsumowanie jej działania:

devproxy config get api-inventory
devproxy --config-file "~dataFolder/configs/api-inventory/.devproxy/devproxyrc.json" --urls-to-watch "https://api.contoso.com/*"

Aby uzyskać więcej informacji, zobacz Korzystanie ze wstępnie zdefiniowanych konfiguracji.

Uwaga

Aby wyeksportować działanie, wtyczka reportera musi być włączona w pliku konfiguracji i umieszczona po ExecutionSummaryPlugin na liście wtyczek. Zaleca się umieszczenie wtyczki reportera na końcu listy wtyczek.

Aby rejestrować aktywność, Dev Proxy musi być umieszczony w trybie rejestrowania.

Istnieją dwa sposoby rozpoczęcia nagrywania:

  • Zarejestruj natychmiast. Uruchom serwer proxy z opcją --record , na przykład devproxy --record.
  • Zarejestruj doraźnie. Naciśnij pozycję R , gdy serwer proxy jest uruchomiony.

Gdy rejestrowanie jest włączone, ◉ Recording... jest wyświetlane w danych wyjściowych proxy.

Aby wygenerować raport z zarejestrowanego działania, zatrzymaj nagrywanie.

Istnieją dwa sposoby zatrzymania rejestrowania:

  • Zatrzymaj serwer proxy. Naciśnij Ctrl + C.
  • Zatrzymaj doraźnie. Naciśnij S.

Domyślnie działania pogrupowane według adresu URL. Aby pogrupować działanie według typu komunikatu --summary-group-by , użyj opcji .

devproxy --record --summary-group-by messageType

Gdzie raporty są tworzone

Po zatrzymaniu rejestrowania każdy z włączonych reporterów zapisuje jeden plik dla każdego raportu wygenerowanego przez wtyczkę raportowania. Dev Proxy zapisuje pliki w bieżącym katalogu roboczym, który jest folderem, z którego uruchomiono Dev Proxy. Po uruchomieniu Dev Proxy w tle, na przykład w potoku ciągłej integracji, upewnij się, że uruchamiasz go z folderu, w którym mają być przechowywane raporty.

Pliki raportów używają następującego wzorca nazewnictwa:

<ReportingPlugin>_<Reporter>.<ext>

Na przykład konfiguracja w tym artykule generuje plik o nazwie ExecutionSummaryPlugin_MarkdownReporter.md.

Jeśli plik o tej nazwie już istnieje, Dev Proxy nie nadpisuje go. Zamiast tego dołącza znacznik czasu w yyyyMMddHHmmss formacie do nazwy pliku, na przykład ExecutionSummaryPlugin_MarkdownReporter_20261105103000.md. Dev Proxy rejestruje nazwę każdego pliku raportu, który zapisuje, na przykład:

Writing report ExecutionSummaryPlugin to ExecutionSummaryPlugin_MarkdownReporter.md...

W poniższej tabeli wymieniono rozszerzenia używane przez każdego raportującego.

Dziennikarz Extension
JsonReporter .json (niektóre raporty używają innego rozszerzenia, na przykład .jsonc UrlDiscoveryPlugin)
MarkdownReporter .md
PlainTextReporter .txt

Uwaga

Wszystkie nagrania są lokalne. Żadne dane nie są wysyłane do firmy Microsoft.

Nagrywanie za pomocą skryptów i ciągłej integracji

W skryptach i potokach ciągłej integracji/ciągłego wdrażania nie można nacisnąć klawiszy, aby rozpocząć i zatrzymać nagrywanie. Zamiast tego uruchom Dev Proxy w tle i steruj rejestrowaniem przy użyciu interfejsu API Dev Proxy. Wszystkie żądania interfejsu API wymagają tokenu okaziciela. Aby poznać token z góry, przed uruchomieniem Dev Proxy ustaw DEV_PROXY_API_TOKEN zmienną środowiskową na wartość co najmniej 32 znaków.

Minimalna sekwencja to:

  1. Ustaw DEV_PROXY_API_TOKEN na losową wartość składającą się z co najmniej 32 znaków.
  2. Uruchom Dev Proxy w tle: devproxy --detach --as-system-proxy false -c devproxyrc.json.
  3. Poczekaj, aż GET /proxy zakończy się powodzeniem.
  4. Rozpocznij nagrywanie: POST /proxy z użyciem {"recording": true}.
  5. Uruchom obciążenie z ustawionymi zmiennymi środowiskowymi HTTP_PROXY i HTTPS_PROXY wskazującymi na Dev Proxy.
  6. Zatrzymaj nagrywanie: POST /proxy z użyciem {"recording": false}. Żądanie jest zwracane po zakończeniu pracy reporterów, więc raporty są gotowe, gdy żądanie się zakończy.
  7. Wyłącz Dev Proxy: POST /proxy/stopProxy.

Dev Proxy zapisuje raporty w folderze, z którego został uruchomiony.

#!/usr/bin/env bash
set -euo pipefail

# 1. use a known API token (at least 32 characters)
export DEV_PROXY_API_TOKEN=$(openssl rand -hex 32)
api=http://127.0.0.1:8897
auth="Authorization: Bearer $DEV_PROXY_API_TOKEN"

# 2. start Dev Proxy in the background
devproxy --detach --as-system-proxy false -c devproxyrc.json

# 3. wait for the API
until curl -sf -H "$auth" "$api/proxy" > /dev/null; do sleep 1; done

# 4. start recording
curl -sf -X POST "$api/proxy" -H "$auth" -H "Content-Type: application/json" -d '{"recording": true}'

# 5. run the workload through Dev Proxy
HTTP_PROXY=http://127.0.0.1:8000 HTTPS_PROXY=http://127.0.0.1:8000 npm test

# 6. stop recording and wait for the reports
curl -sf -X POST "$api/proxy" -H "$auth" -H "Content-Type: application/json" -d '{"recording": false}'

# 7. shut down Dev Proxy
curl -sf -X POST "$api/proxy/stopProxy" -H "$auth"

W przykładach użyto domyślnego portu 8000 serwera proxy i portu 8897interfejsu API . Ustaw zmienne środowiskowe serwera proxy tylko dla workloadu, aby wywołania interfejsu API nie przechodziły przez Dev Proxy. Aby przechwycić ruch HTTPS, obciążenie robocze musi ufać głównemu certyfikatowi Dev Proxy. Aby uzyskać więcej informacji na temat uruchamiania Dev Proxy w potokach, w tym zaufania do certyfikatu, zobacz Use Dev Proxy in CI/CD scenarios.

Zobacz także