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 dla kupujących i sprzedawców, które ułatwiają przeprowadzanie aukcji Protected Audience:

Grupa kupujących:

  • Usługa front-end dla kupującego
  • Usługa określania stawek

Grupa sprzedawców:

  • Usługa frontendu sprzedawcy
  • Serwis aukcyjny

W tym laboratorium programistycznym dowiesz się, jak skonfigurować i przetestować całą konfigurację w środowisku lokalnym. Przejście przez ten proces powinno zająć około 1 godziny (nie licząc czasu potrzebnego na początkowe skonfigurowanie 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 elementy kupującego i sprzedającego współpracują ze sobą. Dzięki skonfigurowaniu obu pakietów możesz później łatwiej zintegrować się z odpowiednim pakietem kupującego lub sprzedającego innej firmy. Testowanie usług lokalnie pozwala też zaoszczędzić na kosztach rozwoju.

W tym Codelab do wykonania ćwiczeń posłużymy się aplikacją do testowania lokalnego B&A.

Lokalna aplikacja do testowania zawiera różne zasoby kupujących i sprzedawców używane w aukcji B&A. Aplikacja udostępnia też interfejs http://localhost:3000, w którym możesz symulować różne konfiguracje aukcji.

2. Konfiguracja środowiska

2.1 Przygotuj komputer z systemem Linux

Użyj lokalnego komputera z systemem Linux lub skonfiguruj maszynę wirtualną z systemem Linux na wybranej platformie usług chmurowych. Aby skrócić czas kompilacji, zalecamy co najmniej 16 rdzeni, a najlepiej 32 lub więcej.

Pamiętaj, że wczytujemy stronę HTML z http://localhost:3000 tego komputera. Jeśli maszyna wirtualna nie ma interfejsu graficznego, sprawdź, czy port 3000 jest dostępny na Twoim komputerze lokalnym, aby można było się z nim połączyć.

2.2 Zainstaluj Dockera

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

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

# 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 root. Aby dowiedzieć się więcej, zapoznaj się z przewodnikiem dotyczącym Dockera bez sudo.

2.3 Uruchom aplikację do testowania lokalnego

Aplikacja towarzysząca udostępnia zasoby takie jak symulowane skrypty określania stawek lub oceniania oraz symulowane punkty końcowe K/V BYOS. Aplikacja powinna zostać uruchomiona przed uruchomieniem usług B&A, aby zasoby mogły zostać załadowane do tych usług.

Przeciągnij w dół repozytorium aplikacji do testowania lokalnego:

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 utworzy obraz testowej aplikacji.

Po pomyślnym utworzeniu wersji uruchom skrypt startowy:

./start

3. Tworzenie i uruchamianie testów B&A lokalnie

3.1 Usługi B&A

Na tym samym komputerze uruchomimy 2 zbiory usług B&A, więc pobieramy repozytorium do 2 różnych folderów.

Zestaw A:

Przeciągnij w dół repozytorium B&A:

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

Zestaw B

Przeciągnij w dół repozytorium B&A:

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

3.2 Utwórz usługi

W folderze głównym każdego foldera B&A uruchom to polecenie, aby skompilować 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 skompiluje instancję local wersji rozwojowej (non_prod) dla Google Cloud (gcp) wszystkich 4 usług. W razie potrzeby zaktualizuj flagę --platform dla wybranego dostawcy usług w chmurze. Więcej informacji o flagach kompilacji znajdziesz w pliku build_and_test_all_docker.

Początkowa kompilacja może potrwać 2 godziny, jeśli używasz maszyny z 64 rdzeniami, a czas kompilacji jest proporcjonalny do liczby rdzeni. Jeśli używasz komputera z 32 rdzeniami, może to zająć 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 potrwać od 5 do 20 minut.

Odpowiednio zaktualizowany komiks xkcd:

Dwóch programistów leniuchujących w biurze. Pracownicy wracają do pracy, a kierownik mówi im, żeby wrócili do pracy. Autor tego komiksu uważa, że to najlepsza wymówka na leniuchowanie. Dwóch programistów, którzy nie pracują, podczas gdy trwa kompilacja.

(podczas pisania tego ćwiczenia spotkałem Randalla Munroe'a z xkcd i powiedziałem mu, że dodałem tu ten komiks)

3.3 Uruchamianie usług

Podczas testów uruchomimy 8 usług (4 usługi na grupę). Każde polecenie jest skonfigurowane tak, aby używać zasobów udostępnionych przez aplikację do testowania lokalnego. Zdecydowanie zalecamy używanie menedżera okien, np. tmux.

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

Pamiętaj, że serwer aplikacji do testowania lokalnego musi być już uruchomiony w ramach osobnego procesu, ponieważ skrypty ustalania stawek i punktacji będą obsługiwane przez aplikację.

3.3.1 Polecenia 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 Serwis aukcyjny

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 Usługa SFE

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 typu 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 Serwis aukcyjny

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 Usługa SFE

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 w przypadku lokalnych skryptów startowych

Aby kontrolować zachowanie podczas uruchamiania, możesz użyć tych zmiennych środowiskowych.

Zmienne środowiskowe

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 samodzielnie podpisanego certyfikatu, który nie spełnia kryteriów weryfikacji peera SSL w curl. Flaga wyłącza weryfikację peera wraz z kontrolą nazwy hosta SSL.

Domyślna wartość to false.

PS_VERBOSITY

Wszystkie usługi

Poziom logów usług. Wyższy poziom zapewnia więcej logów. 0 to najniższa wartość, a 10 – najwyższa. 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

Wychodzenie danych na potrzeby trenowania modelu

INFERENCE_ARGS

Usługa określania stawek

Argumenty do inferencji stawek

BFE_PORT

Usługa BFE

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

BUYER_KV_SERVER_ADDR

Usługa BFE

Adres K/V w usłudze BYOS kupującego

BUYER_TKV_V2_SERVER_ADDR

Usługa BFE

Adres K/V kupującego w ramach usługi TEE

BIDDING_SERVER_ADDR

Usługa BFE

Adres usługi określania stawek kupującego

AUCTION_PORT

Serwis aukcyjny

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

AUCTION_JS_URL

Serwis aukcyjny

Adres URL logiki oceniania

BUYER_REPORT_WIN_URL

Serwis aukcyjny

Adres URL raportu o wygrywaniu przez kupującego

BUYER_REPORT_WIN_SCRIPT

Serwis aukcyjny

Skrypt raportowania wygranych przez kupującego

BUYER_PAS_REPORT_WIN_SCRIPT

Serwis aukcyjny

Skrypt raportowania skuteczności w kampaniach typu „wygrana” w przypadku reklam w sieci reklamowej

SFE_PORT

Usługa SFE

Port SFE Service. Domyślna wartość to 50053

AUCTION_SERVER_ADDR

Usługa SFE

Adres usługi aukcyjnej sprzedawcy

KEY_VALUE_SIGNALS_ADDR

Usługa SFE

Adres K/V w usłudze BYOS sprzedawcy

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

Usługa SFE

Adres K/V w ramach usługi TEE sprzedawcy

SELLER_ORIGIN_DOMAIN

Usługa SFE

Kraj pochodzenia sprzedawcy

BUYER_SERVER_ADDRS_JSON

Usługa SFE

adresy BFE kupującego,

4. Testowanie z użyciem Secure Invoke z poziomu wiersza poleceń

4.1. Testowanie SFE

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

4.1.2 Ładunek SelectAd SFE

Poniższe żądanie JSON zostało wypełnione konfiguracją aukcji B&A dla jednego sprzedawcy w usłudze SSP-BA:

{
  "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 usług B&A zestawu A(skrypt kompilacji usług B&A skopiuje pliki z folderu głównego repozytorium do folderu /src/workspace obrazu Dockera).

4.1.2 Wywołanie SFE za pomocą Secure Invoke

W katalogu głównym repozytorium usług B&A uruchom to polecenie:

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 grupy odpowiedzi są prawidłowo skonfigurowane, otrzymasz taką 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 Prośba o wygenerowanie zapytania GetBids w BFE

{
  "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ływanie BFE za pomocą Secure Invoke

W katalogu głównym repozytorium usług B&A uruchom to polecenie:

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 pytań i odpowiedzi są prawidłowo skonfigurowane, BFE zwraca tę odpowiedź:

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

4.3 Sprawdź dzienniki SFE

Otwórz terminal i sprawdź dzienniki SFE. Omówimy niektóre z najważniejszych logów w danych wyjściowych.

4.3.1 Zaszyfrowany ładunek żądania SelectAd

W tym wyjściu z dziennika SFE znajdziesz zaszyfrowany ładunek połączenia navigator.getInterestGroupAdAuctionData(). Ten ładunek jest generowany przez przeglądarkę, wysyłany z tagu do SAS, a następnie SAS przekazuje go 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 wyniku 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

Prośba GetBids jest wysyłana 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 Odpowiedź GetBids z BFE

BFE odpowiada 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 prośba do usługi aukcji

Po otrzymaniu stawek SFE wywołuje usługę aukcji 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 serwisu aukcyjnego

Usługa aukcji sprzedawcy odpowiada z wynikiem oceny pożądania:

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 SelectAd odpowiedź SFE

Odpowiedź SelectAd SFE jest zaszyfrowana 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 z przeglądarki

5.1 Otwórz Chrome

Przeczytaj artykuł o uruchamianiu Chrome z wiersza poleceń i uruchom go 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 hostowanego 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 przeglądarki są całkowicie 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 testowania lokalnego

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

Zrzut ekranu z aplikacją do testów lokalnych otwieraną w przeglądarce Zrzut ekranu z aplikacją do testowania lokalnego otwieraną w przeglądarce

W górnym rzędzie aplikacji panel „Controls” (Kontrolki) zawiera przyciski do symulowania różnych konfiguracji aukcji. Pozostałe 2 panele zawierają ramki iframe z witryn reklamodawcy i wydawcy.

Zrzut ekranu pokazują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, poprzedzająca reklama zostanie wyrenderowana w panelu „Element iframe witryny wydawcy”.

5.3 Konfiguracja aukcji w aplikacji do testowania lokalnego

W aplikacji do testowania lokalnego są hostowane następujące uczestnicy, którzy różnią się numerem portu (inny port jest uważany za pochodzący z innej domeny):

Uczestnik

Opis

Port

Reklamodawca

Ładuje tagi DSP na stronie.

4001

Wydawca

Ładuje 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 w ramach fuzji i przejęcia

5003

DSP-Y

Kupujący w ramach fuzji i przejęcia

5004

SSP-TOP

Najlepszy sprzedawca

6001

SSP-OD

Sprzedawca tylko na urządzeniu

6002

SSP-BA

sprzedawca, który korzysta tylko z B&A,

6003

SSP-MIX

Sprzedawca korzystający z trybu mieszanego

6004

Istnieją 4 platformy DSP:

  • DSP-ADSP-B biorą udział w aukcjach na urządzeniu
  • DSP-XDSP-Y biorą udział w aukcjach B&A.

Istnieją 4 SSP, a każdy sprzedawca korzysta z innej konfiguracji aukcji:

  • SSP-OD przeprowadza aukcję tylko na urządzeniu;
  • SSP-BA przeprowadza aukcję tylko z uwzględnieniem B&A,
  • SSP-MIX przeprowadza aukcję w trybie mieszanym
  • SSP-TOP przeprowadza aukcję wielu sprzedawców
    • SSP-OD/BA/MIX biorą udział w aukcji wielu sprzedawców SSP-TOP jako sprzedawcy komponentów.

Pełną architekturę znajdziesz na diagramie projektu.

5.4 Konfiguracja usług określania stawek i aukcji

W tym ćwiczeniu z programowania uruchamiamy 2 zbiory pytań i odpowiedzi.

Ustawiono

Usługa

Uczestnik

Adres sieciowy ba-dev

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

Wszystko

https://192.168.84.100:PORT

  • W zestawie A usługi kupującego są używane przez DSP-X, a usługi sprzedającego przez SSP-BA.
  • W zbiorze B usługi kupującego są używane przez DSP-Y, a usługi sprzedającego są używane przez SSP-MIX.

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

Na przykład podczas wywoływania SFE zestawu A z aplikacji używany jest adres sieciowy 192.168.84.104:50053. Podczas wczytywania skryptu ustalania stawek symulowanych z DSP-X do BFE używany jest parametr https://192.168.84.100:5003/generate-bid.js.

6. Podsumowanie

Mamy nadzieję, że do tej pory udało Ci się zapoznać z lokalnym uruchamianiem pakietu usług B&A na komputerze i lepiej zrozumieć, jak usługi komunikują się ze sobą nawzajem.

6.1. Pomoc techniczna

6.2 Więcej informacji