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 kodu 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 tworzenie 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 strony. Testowanie usług lokalnie pozwala też zaoszczędzić na kosztach rozwoju.

W tym laboratorium kodu użyjemy aplikacji B&A Local Testing App jako przykładu.

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

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

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 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 ustalania stawek i 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 Wyświetlanie usług 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:

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 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

Powyższe polecenie skompiluje instancję local wersji rozwojowej (non_prod) dla Google Cloud Platform (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:

Obraz przedstawiający 2 programistów leniuchujących w biurze, co powoduje, że menedżer prosi ich o powrót do pracy. Pracownicy mówią, że kod jest kompilowany, a menedżer się z tym zgadza. Autor tego komiksu uważa, że to najlepsze usprawiedliwienie dla lenistwa

(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 (po 4 na każdy stos). Każde polecenie jest skonfigurowane tak, aby używać zasobów udostępnianych 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 Usługa aukcji

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-X 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-X 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 aukcji

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 dla 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ługi. Im wyższy poziom, tym 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 kupującego w ramach usługi BYOS

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 zwycięstwa kupującego

BUYER_PAS_REPORT_WIN_SCRIPT

Serwis aukcyjny

Skrypt raportowania skuteczności w kampaniach typu „wygrana” dla kupujących w przypadku kampanii 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 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 Payload SFE SelectAd

Poniższe żądanie JSON zostało wypełnione konfiguracją aukcji B&A dla pojedynczego 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 w celu zapewnienia bezpieczeństwa danych

4.2.1 Prośba o wysłanie zapytania GetBids do 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

Na tym wyjściu 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 żądanie do usługi aukcyjnej

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ń w Chromium 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ń z flagami B&A, upewnij się, że wszystkie wystąpienia Chrome są 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 Local Testing

Interfejs aplikacji znajdziesz pod adresem http://localhost:3000 w przykładowej instancji przeglądarki Chrome, którą otworzyłeś za pomocą flag. 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

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.

Gdy klikniesz przycisk „Wczytaj tagi DSP” w ramce reklamodawcy, na stronie zostanie dodany skrypt z każdego systemu reklamowego. Te skrypty dodają użytkownika do grup zainteresowań. Otwórz Narzędzia deweloperskie w Chrome i wejdź w „Aplikacja / Pamięć / Grupy zainteresowań”, aby sprawdzić grupy zainteresowań połączone przez tagi DSP:

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 wyświetlana 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 dostępnej w ramach aplikacji towarzyszącej są hostowane następujące komponenty, które różnią się numerem portu (inny port jest uważany za pochodzący z innego źródła):

Uczestnik

Opis

Port

Reklamodawca

Ładuje 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 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 oferuje tylko B&A,

6003

SSP-MIX

Sprzedawca w trybie mieszanym

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 określania stawek i usług aukcyjnych

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

Do startu

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ługom B&A jest przypisywany 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