Testowanie na poziomie lokalnym pełnego procesu obsługi zapytań B&A w przypadku stron internetowych

1. Wprowadzenie

Usługi określania stawek i usługi aukcyjne (B&A) obejmują 4 usługi, które ułatwiają kupującym i sprzedającym przeprowadzanie aukcji z użyciem Protected Audience API:

Technologie kupującego:

  • Usługa interfejsu kupującego
  • Usługa określania stawek

Technologie sprzedawcy:

  • Usługa frontendu sprzedawcy
  • Serwis aukcyjny

W tym module nauczysz się konfigurować i testować kompleksową konfigurację w środowisku lokalnym. Przewodnik powinien zająć około 1 godziny, nie licząc czasu potrzebnego na utworzenie usługi.

Nawet jeśli pracujesz tylko nad kodem po stronie kupującego lub sprzedającego, warto skonfigurować pełny proces w środowisku lokalnym, aby lepiej zrozumieć, jak działają ze sobą platformy kupującego i sprzedającego. Skonfigurowanie obu stosów pozwoli Ci później z większą pewnością przeprowadzić integrację z odpowiednim stosem kupującego lub sprzedającego innej firmy. Testowanie usług lokalnie pozwala też obniżyć koszty programowania.

W tym samouczku będziemy korzystać z aplikacji B&A Local Testing App.

Aplikacja towarzysząca do testów lokalnych zawiera różne zasoby dla kupujących i sprzedawców używane w aukcji B&A. Aplikacja udostępnia też interfejs użytkownika pod adresem http://localhost:3000, w którym możesz symulować różne konfiguracje aukcji.

2. Konfigurowanie środowiska

2.1 Przygotuj komputer z systemem Linux

Użyj lokalnego komputera z systemem Linux lub udostępnij maszynę wirtualną z systemem Linux u wybranego dostawcy usług chmurowych. Aby skrócić czas kompilacji, zalecamy co najmniej 16 rdzeni, a najlepiej 32 rdzenie lub więcej.

Pamiętaj, że będziemy wczytywać stronę HTML z http://localhost:3000 tego urządzenia. Jeśli maszyna wirtualna nie udostępnia graficznego interfejsu użytkownika, upewnij się, że port 3000 jest dostępny dla Twojego komputera lokalnego, aby można było się z nim połączyć.

2.2 Instalowanie Dockera

Do uruchamiania usług i aplikacji do testowania lokalnego używamy platformy Docker.

Do zainstalowania Dockera w środowisku testowym użyjemy skryptu ułatwiającego.

# Install Docker
> curl -fsSL https://get.docker.com -o get-docker.sh
> sudo sh get-docker.sh

# Set up sudo-less Docker
> sudo groupadd docker
> sudo usermod -aG docker $USER
> newgrp docker

# Test
> docker run hello-world

Ostrzeżenie: w przypadku konfiguracji bez sudo grupa Docker przyznaje użytkownikowi uprawnienia na poziomie roota. Więcej informacji znajdziesz w przewodniku po Dockerze bez sudo.

2.3 Uruchom aplikację towarzyszącą do testowania lokalnego

Aplikacja towarzysząca udostępnia zasoby takie jak skrypty symulujące określanie stawek lub ocenianie oraz symulowane punkty końcowe BYOS typu klucz/wartość. Aplikację należy uruchomić przed uruchomieniem usług B&A, aby można było załadować do nich zasoby.

Pobierz repozytorium aplikacji do testów lokalnych:

git clone https://github.com/privacysandbox/bidding-auction-local-testing-app.git

W katalogu głównym repozytorium uruchom skrypt konfiguracji:

./setup

Skrypt konfiguracji utworzy sieć Dockera ba-dev, wygeneruje certyfikaty SSL i zbuduje obraz aplikacji testowej.

Po pomyślnym utworzeniu uruchom skrypt startowy:

./start

3. Tworzenie i uruchamianie B&A lokalnie

3.1 Rozwiń menu Usługi B&A

Na tym samym urządzeniu uruchomimy 2 zestawy usług B&A, więc pobierzemy repozytorium do 2 różnych folderów.

Zestaw A:

Pobierz repozytorium B&A:

git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-a

Zestaw B

Pobierz repozytorium B&A:

git clone https://github.com/privacysandbox/bidding-auction-servers.git bidding-auction-servers-set-b
`

3.2 Tworzenie usług

W folderze głównym każdego folderu B&A uruchom to polecenie, aby utworzyć wszystkie 4 usługi:

production/packaging/build_and_test_all_in_docker \
  --service-path bidding_service \
  --service-path auction_service \
  --service-path buyer_frontend_service \
  --service-path seller_frontend_service \
  --platform gcp \
  --instance local \
  --no-precommit \
  --no-tests \
  --build-flavor non_prod \
  --gcp-skip-image-upload

To polecenie utworzy instancję local wersji deweloperskiej (non_prod) dla Google Cloud (gcp) wszystkich 4 usług. W razie potrzeby zmień flagę --platform na wybranego dostawcę usług w chmurze. Więcej informacji o flagach kompilacji znajdziesz w pliku build_and_test_all_docker.

Pierwsza kompilacja może potrwać 2 godziny, jeśli używasz maszyny z 64 rdzeniami. Czas kompilacji jest proporcjonalny do liczby rdzeni. Jeśli korzystasz z maszyny z 32 rdzeniami, może to potrwać 4 godziny. Jeśli używasz maszyny 16-rdzeniowej, może to zająć 8 godzin.

Pamiętaj, że kolejne kompilacje korzystają z pamięci podręcznej, a każda z nich powinna zająć około 5–20 minut.

Odpowiedni komiks xkcd:

Dwóch programistów leniuchuje w biurze. Menedżer mówi im, żeby wrócili do pracy, a oni odpowiadają, że kod się kompiluje. Menedżer akceptuje tę odpowiedź. Autor tego komiksu uważa, że to najważniejsza wymówka, która usprawiedliwia lenistwo. Dwóch programistów leniuchuje, gdy trwa kompilacja.

(Podczas pisania tych ćwiczeń z programowania spotkałem się z Randallem Munroe z xkcd i powiedziałem mu, że dodałem tu ten komiks)

3.3 Uruchamianie usług

Na potrzeby testów uruchomimy 8 usług (4 usługi na stos). Każde polecenie jest skonfigurowane tak, aby korzystać z zasobów udostępnianych przez aplikację do testowania lokalnego. Zdecydowanie zalecamy używanie menedżera okien, takiego jak tmux.

Otwórz co najmniej 8 dodatkowych okien terminala i w każdej sesji uruchom te polecenia.

Pamiętaj, że serwer aplikacji do testowania lokalnego musi już działać w osobnym procesie, ponieważ skrypty określania stawek i oceniania będą obsługiwane przez aplikację.

3.3.1 Polecenia z zestawu A

Usługa

Polecenie

DSP-X Usługa określania stawek

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.101 --network=ba-dev" \

BIDDING_JS_URL=https://192.168.84.100:5003/generate-bid.js \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bidding

DSP-X Usługa BFE

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.102 --network=ba-dev" \

BUYER_KV_SERVER_ADDR=https://192.168.84.100:5003/kv \

BIDDING_SERVER_ADDR=192.168.84.101:50057 \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bfe

SSP-BA Usługa aukcyjna

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.103 --network=ba-dev" \

AUCTION_JS_URL="https://192.168.84.100:6002/score-ad.js" \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_auction

SSP-BA SFE Service

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.104 --network=ba-dev" \

SELLER_ORIGIN_DOMAIN="https://localhost:6002" \

AUCTION_SERVER_ADDR="192.168.84.103:50061" \

KEY_VALUE_SIGNALS_ADDR="https://192.168.84.100:6002/kv" \

BUYER_SERVER_ADDRS_JSON='{"https://localhost:5003":{"url":"192.168.84.102:50051","cloudPlatform":"LOCAL"},"https://localhost:5004":{"url":"192.168.84.202:50051","cloudPlatform":"LOCAL"}}' \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

3.3.2 Polecenia Set B

Usługa

Polecenie

DSP-Y Usługa określania stawek

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.201 --network=ba-dev" \

BIDDING_JS_URL=https://192.168.84.100:5004/generate-bid.js \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bidding

DSP-Y Usługa BFE

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.202 --network=ba-dev" \

BUYER_KV_SERVER_ADDR=https://192.168.84.100:5004/kv \

BIDDING_SERVER_ADDR=192.168.84.201:50057 \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bfe

SSP-BA Usługa aukcyjna

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.203 --network=ba-dev" \

AUCTION_JS_URL="https://192.168.84.100:6003/score-ad.js" \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_auction

SSP-BA SFE Service

DOCKER_RUN_ARGS_STRING="--ip=192.168.84.204 --network=ba-dev" \

SELLER_ORIGIN_DOMAIN="https://localhost:6003" \

AUCTION_SERVER_ADDR="192.168.84.203:50061" \

KEY_VALUE_SIGNALS_ADDR="https://192.168.84.100:6003/kv" \

BUYER_SERVER_ADDRS_JSON='{"https://localhost:5003":{"url":"192.168.84.102:50051","cloudPlatform":"LOCAL"},"https://localhost:5004":{"url":"192.168.84.202:50051","cloudPlatform":"LOCAL"}}' \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

3.3.2 Zmienne środowiskowe dla lokalnych skryptów startowych

Do kontrolowania zachowania podczas uruchamiania można używać tych zmiennych środowiskowych.

Zmienna środowiskowa

Dostępność

Opis

DOCKER_RUN_ARGS_STRING

Wszystkie usługi

Flagi do ustawienia dla polecenia docker

SKIP_TLS_VERIFICATION

Wszystkie usługi

Podczas testowania na komputerze lokalnym może być konieczne użycie podpisanego samodzielnie certyfikatu, który nie przejdzie weryfikacji SSL curl. Ta flaga wyłącza weryfikację równorzędną wraz ze sprawdzaniem nazwy hosta SSL.

Domyślna wartość to false.

PS_VERBOSITY

Wszystkie usługi

Poziom logów usługi. Wyższy poziom zapewnia więcej logów. 0 to najniższa, a 10 – najwyższa wartość. Domyślna wartość to 10.

BIDDING_PORT

Usługa określania stawek

Port usługi określania stawek. Domyślna wartość to 50057.

BIDDING_JS_URL

Usługa określania stawek

Adres URL logiki ustalania stawek

EGRESS_SCHEMA_URL

Usługa określania stawek

Eksportowanie danych na potrzeby trenowania modelu

INFERENCE_ARGS

Usługa określania stawek

Argumenty dotyczące wnioskowania o stawkach

BFE_PORT

Usługa BFE

Port usługi BFE. Domyślna wartość to 50051.

BUYER_KV_SERVER_ADDR

Usługa BFE

Adres BYOS K/V kupującego

BUYER_TKV_V2_SERVER_ADDR

Usługa BFE

Adres TEE K/V kupującego

BIDDING_SERVER_ADDR

Usługa BFE

Adres usługi określania stawek kupującego

AUCTION_PORT

Serwis aukcyjny

Port usługi aukcyjnej. Domyślna wartość to 50061.

AUCTION_JS_URL

Serwis aukcyjny

Adres URL logiki oceny

BUYER_REPORT_WIN_URL

Serwis aukcyjny

Adres URL raportu o wygranej kupującego

BUYER_REPORT_WIN_SCRIPT

Serwis aukcyjny

Skrypt raportowania wygranej kupującego

BUYER_PAS_REPORT_WIN_SCRIPT

Serwis aukcyjny

Skrypt raportowania wygranych kupującego w przypadku PAS

SFE_PORT

Usługa SFE

Port usługi SFE. Domyślna wartość to 50053.

AUCTION_SERVER_ADDR

Usługa SFE

Adres Serwisu aukcyjnego sprzedawcy

KEY_VALUE_SIGNALS_ADDR

Usługa SFE

Adres BYOS K/V sprzedawcy

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

Usługa SFE

Adres TEE K/V sprzedawcy

SELLER_ORIGIN_DOMAIN

Usługa SFE

Kraj pochodzenia sprzedawcy

BUYER_SERVER_ADDRS_JSON

Usługa SFE

Adresy BFE kupującego

4. Testowanie za pomocą bezpiecznego wywoływania z wiersza poleceń

4.1 Testowanie SFE

Możesz też użyć narzędzia Secure Invoke, które jest częścią pakietu usług B&A, aby wywoływać usługi bezpośrednio z wiersza poleceń.

4.1.2 Ładunek SFE SelectAd

To żądanie JSON zostało wypełnione konfiguracją aukcji B&A SSP-BA z jednym sprzedawcą:

{
  "auction_config": {
    "seller": "https://localhost:6002",
    "auction_signals": "{\"testKey\":\"someValue\"}",
    "seller_signals": "{\"testKey\":\"someValue\"}",
    "buyer_list": [
      "https://localhost:5003",
      "https://localhost:5004"
    ],
    "per_buyer_config": {
      "https://localhost:5003": { "buyer_signals": "{\"testKey\":\"someValue\"}" },
      "https://localhost:5004": { "buyer_signals": "{\"testKey\":\"someValue\"}" }
    }
  },
  "raw_protected_audience_input": {
    "publisher_name": "http://localhost:4001",
    "generation_id": "1210718540",
    "enable_debug_reporting": true,
    "raw_buyer_input": {
      "https://localhost:5003": {
        "interest_groups": [
          {
            "name": "dsp-x-demo",
            "ad_render_ids": ["1234"],
            "bidding_signals_keys": ["demo-key"],
            "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" },
            "user_bidding_signals": "[1, 2, 3]"
          }
        ]
      },
      "https://localhost:5004": {
        "interest_groups": [
          {
            "name": "dsp-x-demo",
            "ad_render_ids": ["1234"],
            "bidding_signals_keys": ["demo-key"],
            "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" },
            "user_bidding_signals": "[1, 2, 3]"
          }
        ]
      }
    }
  }
}

Zapisz plik jako sfe-test.json w folderze głównym repozytorium Set A's B&A Services(skrypt kompilacji B&A skopiuje pliki z folderu głównego repozytorium do folderu /src/workspace obrazu Dockera).

4.1.2 Wywoływanie funkcji SFE za pomocą bezpiecznego wywoływania

Uruchom to polecenie w folderze głównym repozytorium usług B&A:

DOCKER_NETWORK=ba-dev ./builders/tools/bazel-debian run //tools/secure_invoke:invoke \
  -- \
  -target_service=sfe \
  -input_file=/src/workspace/sfe-test.json \
  -host_addr=192.168.84.104:50053 \
  -client_ip=192.168.84.100 \
  -insecure=true

Jeśli stosy B&A są skonfigurowane prawidłowo, otrzymasz tę odpowiedź:

{"adRenderUrl":"https://localhost:5004/ad.html","interestGroupName":"dsp-x-demo","interestGroupOwner":"https://localhost:5004","score":39,"bid":39,"biddingGroups":{"https://localhost:5003":{"index":[0]},"https://localhost:5004":{"index":[0]}}}

4.2 Testowanie BFE

4.2.1 Żądanie BFE GetBids

{
  "buyer_input": {
    "interest_groups": {
      "name": "dsp-x-demo",
      "ad_render_ids": ["1234"],
      "bidding_signals_keys": ["demo-key"],
      "browser_signals": { "bid_count": "1", "join_count": "1", "prev_wins": "[]" }
    }
  },
  "auction_signals": "{\"testKey\":\"someValue\"}",
  "buyer_signals": "{\"testKey\":\"someValue\"}",
  "seller": "https://localhost:6002",
  "publisher_name": "http://localhost:4001",
  "enable_debug_reporting": true,
  "client_type": "CLIENT_TYPE_BROWSER"
}

Zapisz plik jako bfe-test.json w folderze głównym repozytorium usług B&A.

4.2.2 Wywołanie BFE za pomocą bezpiecznego wywołania

Uruchom to polecenie w folderze głównym repozytorium usług B&A:

DOCKER_NETWORK=ba-dev ./builders/tools/bazel-debian run //tools/secure_invoke:invoke \
  -- \
  -target_service=bfe \
  -input_file="/src/workspace/bfe-test.json" \
  -host_addr="192.168.84.102:50051" \
  -client_ip=192.168.84.100 \
  -insecure=true

Jeśli stosy B&A są prawidłowo skonfigurowane, BFE zwraca tę odpowiedź:

{"bids":[{"bid":6,"render":"https://localhost:5003/ad.html","interestGroupName":"dsp-x-demo"}],"updateInterestGroupList":{}}

4.3 Sprawdzanie logów SFE

Otwórz terminal i sprawdź dzienniki SFE. Przyjrzymy się niektórym ważnym logom w danych wyjściowych.

4.3.1 SelectAd żąda zaszyfrowanego ładunku

W tym wyjściu dziennika SFE znajduje się zaszyfrowany ładunek wywołania navigator.getInterestGroupAdAuctionData(). Ten ładunek jest generowany przez przeglądarkę, wysyłany z tagu do SAS, a następnie przekazywany przez SAS do SFE:

I1210 21:20:47.266673      37 select_ad_reactor.cc:228] Protected auction ciphertext: AEAAIAABAAKg3OQSSLEBMR1MmJiwfOT8uef41iE+DQIvKUowsQvVcGbWZ+r17ff2r/iTbEnwqLPtpAxSTy77mi+cVV5cKjkKb4piaZnKiCDIMCyEvrQUD4+BG+HgrbUFhqiWPmQhNThvInMaHuYrXG7xushbRtvSPsVzEl6iBZcLZzD7W3CHMFK7bnJ+ufu52W6B7/8dOQ1gZW6SpwXMGNcrurTGoucbwbZRIPqCcbZk76J1gB69wrDYRo1wQ6jmBleLM36nulxbEj/sHhpQIgr895aKqEGQ3Fy+/HHPTO+zHphcX44YeF6mZ/I+WxZTDxCi1x27nI4yvzC8vI4a/giJN5XUlJZGb/fMrj3/Qly+gwJ8lbxdX+4GWTooDoS4MTtiBpJqh9wkIQ5XwfO54p8Kv6j/tk+51hOfVkOdtGwX0LvVrWT9PiJOJHa23nZ1fLg/22mTe05xdbR3WVeA+xiO9YwF4ozyCYDRUkDyWB/3k9RuaaT9H5S1szVpuOuD2nYSRpT9svmpfG4kipiS6BTPZPX2whDlukpuuoFgdiDtH6cFShNhZ5C47R0ayAvaZ1QSpOZMWfA6pdl4nhvNLpOKesKY/KFDEBzpUXRDsQWsfvmdqFl1mCeX9rOrEc9rodYVLXXhM8GPycehHmvqkccTBW6kipOQlmnSdIYaFmtWSFpUrzxajGkct3mZdTjVjOf...

4.3.2 Odszyfrowany ładunek

W tych danych wyjściowych znajdziesz odszyfrowany ładunek wywołania navigator.getInterestGroupAdAuctionData():

I1210 21:20:47.267590      37 select_ad_reactor.cc:347]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Decoded BuyerInput:
https://localhost:5003 : {interest_groups { name: "dsp-x-demo" bidding_signals_keys: "demo-key" browser_signals { join_count: 1 recency: 7 prev_wins: "[]" } }}

4.3.3 GetBids prośba do BFE

Żądanie GetBids jest wysyłane z SFE do BFE:

I1210 21:20:47.267710      37 select_ad_reactor.cc:751]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Getting bid from a BFE
I1210 21:20:47.267729      37 buyer_frontend_async_client.cc:52] Raw request:
buyer_input {
  interest_groups {
    name: "dsp-x-demo"
    bidding_signals_keys: "demo-key"
    browser_signals {
      join_count: 1
      recency: 7
      prev_wins: "[]"
    }
  }
}
auction_signals: "{\"testKey\":\"someValue\"}"
buyer_signals: "{\"testKey\": \"someValue\"}"
seller: "https://localhost:6002"
publisher_name: "localhost"
enable_debug_reporting: true
log_context {
  generation_id: "c2824bfc-d515-4a1a-9de9-7660ad963252"
}
client_type: CLIENT_TYPE_BROWSER

4.3.4 GetBids odpowiedź z BFE

BFE odpowiada, podając stawkę:

I1210 21:20:47.282549      41 select_ad_reactor.cc:856]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Received response from a BFE ...
I1210 21:20:47.282552      41 select_ad_reactor.cc:859]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252)
GetBidsResponse:
bids {
  bid: 9
  render: "https://localhost:5003/ad.html"
  interest_group_name: "dsp-x-demo"
}
update_interest_group_list {
}

4.3.5 ScoreAds żądanie do usługi aukcyjnej;

Po otrzymaniu stawek SFE wywołuje w usłudze aukcji wywołanie ScoreAds dla każdej stawki:

I1210 21:20:47.287898      18 select_ad_reactor.cc:1280]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) ScoreAdsRawRequest:
ad_bids {
  bid: 9
  render: "https://localhost:5003/ad.html"
  interest_group_name: "dsp-x-demo"
  interest_group_owner: "https://localhost:5003"
  join_count: 1
  k_anon_status: true
}
seller_signals: "{\"testKey\":\"someValue\"}"
auction_signals: "{\"testKey\":\"someValue\"}"
scoring_signals: "{\"renderUrls\":{\"https://localhost:5003/ad.html\":[1,2,3],\"https://localhost:5004/ad.html\":[1,2,3]}}"
publisher_hostname: "localhost"
enable_debug_reporting: true
log_context {
  generation_id: "c2824bfc-d515-4a1a-9de9-7660ad963252"
}
per_buyer_signals {
  key: "https://localhost:5003"
  value: "{\"testKey\": \"someValue\"}"
}
per_buyer_signals {
  key: "https://localhost:5004"
  value: "{\"testKey\": \"someValue\"}"
}
seller: "https://localhost:6002"

4.3.6 ScoreAds odpowiedź z usługi aukcyjnej

Usługa aukcyjna sprzedawcy odpowiada, podając wynik atrakcyjności:

I1210 21:20:47.298029      33 default_async_grpc_client.h:134] Decrypting the response ...
I1210 21:20:47.298100      33 default_async_grpc_client.h:152] Decryption/decoding of response succeeded: ad_score {
  desirability: 9
  render: "https://localhost:5003/ad.html"
  interest_group_name: "dsp-x-demo"
  buyer_bid: 9
  interest_group_owner: "https://localhost:5003"
  win_reporting_urls {
    top_level_seller_reporting_urls {
    }
  }
  ad_type: AD_TYPE_PROTECTED_AUDIENCE_AD
}

4.3.7 Odpowiedź SelectAd z SFE

Odpowiedź SFE SelectAd jest szyfrowana i wysyłana do SAS:

I1210 21:20:47.298428      33 select_ad_reactor.cc:1413]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Encrypted SelectAdResponse:
auction_result_ciphertext: "\023\233\252\321\000\331M\327\216\201S\332kl?\322\255\247\312\375h\007W\367\016\366FR\364\275\377\326\027h\204\203\265\t\271-\333\266\tH\342\033F\001k\211C\026V\013\271\255(\236\273\353\260\275\007\346\027\340?\005|\235S\244\265\2563U\246\322\177%\200/\3175\034 \020\024\362\345\3263\356F.s\261\005\231\262Z\000\330x\0230\335>\"\217\254\010\254\330>\206\007\274\235\037`\370W\032\207\356\367\206\026\341.i\"$\370\367\2554i\247\354\304e\306\2466S\337\321w\327+!\316\035:\002\231\246\362\366qm\211\000\013\343\345\224{\365py\361\374\316\202\217-\244\302\331\216D\025W#.\304nH\235\315\311<#\342\344\324\257\354\2441\251\312\320\226\342\021\377>3`\347/\350\254h\306\273\023\365\340@\321\2412\254\323\213\0137,\013n\220|\211\323/\030)\314\263\223\355>\254\312aa`!\375\335\023Z\234p\206\037\001\355\261{$\025+\341\275\327Ny\342\342\264=\376\2138\224\026\2058\251\020\202\245*46\023\307)K\342\364k<\2104r\247\034\216}\034\001\374\215\363\210\026\275\371S>\031;f.b\260\363\257.\255\023I\341A\237*_T\355\262\005\344L\336D%\327\267@\302$\300\340\203c\350|\337>C\275c\260\202o\315xp\260\257\241\305U\nK\033\274L6\025\350\373a:\253\212&>p\210\215\017&^\327\005_\037\020\212\362\351\341\231@g\372\0037\275b:)\207\303d\243?\261O\266\343\214\200\004\247\372\022S\326\200\037\330\252r\257+e\273[\231\202\3625{\330\213\240\370\245\\\214\350/\313\ty/\004\313\0304k\223\354\374\305\233\264\224K\344\241\251\322?\323q6\314D\027\200\203\035]\023O\306\230?\203\237:\254\305\265\332\330\2641l\322\020\022\330O-\242\207>Q\364_{F\235\353tk\207\035\205\005\221\373\207\0143\035\014\322\240H\220\347%\262f\347\017\352\273\265\231\014\204\r\312\254z\000\340&\354\222\323\245\356\217(i\246"

5. Testowanie za pomocą lokalnej aplikacji testowej w przeglądarce

5.1 Otwieranie Chrome

Przeczytaj artykuł o Chromium na temat uruchamiania Chrome z wiersza poleceń i uruchom przeglądarkę z tymi flagami:

google-chrome --enable-privacy-sandbox-ads-apis --disable-features=EnforcePrivacySandboxAttestations,FledgeEnforceKAnonymity --enable-features=FledgeBiddingAndAuctionServerAPI,FledgeBiddingAndAuctionServer:FledgeBiddingAndAuctionKeyURL/https%3A%2F%2Fstorage.googleapis.com%2Fba-test-buyer%2Fcoordinator-test-key.json

Flaga jest ustawiona tak, aby wczytywać klucz koordynatora testowego, który hostujemy pod adresem https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json.

Ważne: zanim otworzysz Chrome z wiersza poleceń za pomocą flag B&A, upewnij się, że wszystkie wystąpienia Chrome zostały zamknięte. Aby zamknąć wszystkie procesy Chrome, spróbuj uruchomić ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 z wiersza poleceń.

5.2 Otwórz interfejs aplikacji do testów lokalnych

Interfejs aplikacji znajdziesz pod adresem http://localhost:3000 w instancji przeglądarki Chrome otwartej z flagami. Jeśli używasz maszyny wirtualnej z inną nazwą hosta, dokładny adres, który odwiedzasz, może być inny.

Zrzut ekranu przedstawiający aplikację do testowania lokalnego otwartą w przeglądarce Zrzut ekranu aplikacji do testowania lokalnego otwartej w przeglądarce

W górnym wierszu aplikacji panel „Controls” (Elementy sterujące) zawiera przyciski do symulowania różnych konfiguracji aukcji. Pozostałe 2 panele zawierają elementy iframe z witryn reklamodawcy i wydawcy.

Zrzut ekranu przedstawiający grupy zainteresowań w Narzędziach deweloperskich w Chrome. Zrzut ekranu przedstawiający grupy zainteresowań w Narzędziach deweloperskich w Chrome.

Następnie kliknij przyciski w panelu „Elementy sterujące”, aby symulować różne typy aukcji.

Reklama renderowana w przeglądarce z B&A.

Jeśli usługi B&A i aplikacja do testowania lokalnego są prawidłowo skonfigurowane, powyższa reklama zostanie wyrenderowana w panelu „Publisher site iframe” (Element iframe witryny wydawcy).

5.3 Konfiguracja aukcji aplikacji do testów lokalnych

W aplikacji towarzyszącej do testowania lokalnego znajdują się te uczestniczące strony, które są rozróżniane na podstawie numeru portu (inny port jest traktowany jako pochodzący z innej domeny):

Uczestnik

Opis

Port

Reklamodawca

Wczytuje tagi DSP na stronie.

4001

Wydawca

Wczytuje tagi SSP na stronie.

4002

DSP-A

Kupujący na urządzeniu

5001

DSP-B

Kupujący na urządzeniu

5002

DSP-X

Kupujący B&A

5003

DSP-Y

Kupujący B&A

5004

SSP-TOP

Sprzedawca najwyższego poziomu

6001

SSP-OD

Sprzedawca oferujący tylko produkty na urządzeniu

6002

SSP-BA

Sprzedawca korzystający tylko z usługi B&A

6003

SSP-MIX

Sprzedawca w trybie mieszanym

6004

Dostępne są 4 platformy DSP:

  • DSP-ADSP-B uczestniczą w aukcjach na urządzeniu.
  • DSP-XDSP-Y uczestniczyć w aukcjach z określaniem stawek i automatyzacją.

Są 4 platformy SSP, a każdy sprzedawca stosuje inną konfigurację aukcji:

  • SSP-OD przeprowadza aukcję tylko na urządzeniu.
  • SSP-BA przeprowadza aukcję tylko z licytowaniem ceny minimalnej.
  • SSP-MIX przeprowadza aukcję w trybie mieszanym.
  • SSP-TOP przeprowadza aukcję wielu sprzedawców
    • SSP-OD/BA/MIX uczestniczyć jako sprzedawcy komponentów w aukcji wielu sprzedawców SSP-TOP;

Pełną architekturę znajdziesz na schemacie projektu.

5.4 Konfiguracja usług określania stawek i aukcji

W tym ćwiczeniu z programowania uruchomimy obok siebie 2 zestawy testów porównawczych.

Ustaw

Usługa

Uczestnik

ba-dev adres sieciowy

Zestaw A

Usługa określania stawek

DSP-X

192.168.84.101:50057

Usługa BFE

DSP-X

192.168.84.102:50051

Serwis aukcyjny

SSP-BA

192.168.84.103:50061

Usługa SFE

SSP-BA

192.168.84.104:50053

Zestaw B

Usługa określania stawek

DSP-Y

192.168.84.201:50057

Usługa BFE

DSP-Y

192.168.84.202:50051

Serwis aukcyjny

SSP-MIX

192.168.84.203:50061

Usługa SFE

SSP-MIX

192.168.84.204:50053

Promująca aplikację

Aplikacja do testów lokalnych

Wszystkie

https://192.168.84.100:PORT

  • W grupie A usługi kupującego są używane przez DSP-X, a usługi sprzedającego – przez SSP-BA.
  • W grupie B z usług kupującego korzysta DSP-Y, a z usług sprzedającego – SSP-MIX.

Do komunikacji między aplikacją do testowania lokalnego a usługami B&A używana jest sieć pomostowa Docker. Sieć pomostowa ba-dev jest tworzona przez skrypt konfiguracji aplikacji do testowania lokalnego. Usługom B&A przypisywany jest adres IP w podsieci 192.168.84.0.

Na przykład, gdy dzwonisz do SFE zestawu A z aplikacji, używany jest adres sieciowy 192.168.84.104:50053. Gdy wczytujesz skrypt symulacji ustalania stawek z platformy DSP-X do BFE, używany jest znak https://192.168.84.100:5003/generate-bid.js.

6. Podsumowanie

Mamy nadzieję, że udało Ci się już zapoznać z uruchamianiem lokalnie na komputerze stosu usług B&A i lepiej zrozumieć, jak te usługi komunikują się ze sobą.

6.1. Pomoc techniczna

6.2 Więcej informacji