Комплексное тестирование B&A для Интернета локально

1. Введение

Служба торгов и аукционов (B&A) состоит из 4 служб для покупателей и продавцов, которые помогают проводить аукционы с защищенной аудиторией :

Стек покупателя:

  • Обслуживание покупателей
  • Служба торгов

Стек продавца:

  • Внешнее обслуживание продавца
  • Аукционный сервис

В этой лаборатории кода вы узнаете, как настроить и протестировать комплексную настройку в вашей локальной среде. Ожидается, что пошаговое руководство займет около 1 часа, не считая времени на начальную сборку службы.

Несмотря на то, что вы можете работать только над кодом на стороне покупателя или кодом на стороне продавца, полезно настроить сквозной поток в вашей локальной среде, чтобы лучше понять, как стеки покупателя и продавца работают друг с другом. Настроив оба стека, вы сможете быть более уверенными в дальнейшем при интеграции с соответствующим стеком покупателя или продавца другой стороны. Локальное тестирование сервисов также экономит затраты на разработку.

В этой лаборатории кода мы будем использовать приложение B&A Local Testing App в качестве сопутствующего руководства.

Сопутствующее приложение для локального тестирования содержит различные ресурсы для покупателей и продавцов, используемые на аукционе B&A. Приложение также предоставляет пользовательский интерфейс по адресу http://localhost:3000 , где вы можете моделировать различные конфигурации аукциона.

2. Настройка среды

2.1 Подготовьте машину с Linux

Используйте локальный компьютер с Linux или подготовьте виртуальную машину Linux от выбранного вами облачного провайдера. Чтобы сократить время сборки, рекомендуется использовать как минимум 16 ядер, а предпочтительно — 32+ ядер.

Обратите внимание, что мы будем загружать HTML-страницу с http://localhost:3000 этого компьютера. Если виртуальная машина не имеет графического интерфейса, убедитесь, что порт 3000 доступен вашему локальному компьютеру, чтобы вы могли подключиться к нему.

2.2 Установите Докер

Мы используем Docker для запуска сервисов и приложения для локального тестирования.

Мы будем использовать удобный скрипт для установки Docker в тестовой среде.

# 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

Предупреждение. При настройке без sudo группа Docker предоставляет пользователю привилегии корневого уровня. Чтобы узнать больше, прочтите руководство по Docker без sudo.

2.3. Запустите сопутствующее приложение для локального тестирования.

Сопутствующее приложение предоставляет такие ресурсы, как макеты сценариев назначения ставок и оценки, а также макеты конечных точек K/V BYOS. Приложение следует запускать перед запуском служб B&A, чтобы ресурсы можно было загрузить в службы.

Откройте репозиторий приложения для локального тестирования :

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

Из корня репозитория запустите скрипт установки :

./setup

Сценарий установки создаст сеть Docker ba-dev , сгенерирует сертификаты SSL и создаст образ тестового приложения.

После успешной сборки запустите стартовый скрипт :

./start

3. Создайте и запустите B&A локально.

3.1 Удаление служб B&A

Мы запустим два набора служб B&A на одном компьютере, поэтому перенесем репозиторий в две разные папки.

Набор А:

Разверните репозиторий B&A:

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

Набор Б

Разверните репозиторий B&A:

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

3.2 Создание сервисов

В корневой папке каждой папки B&A выполните следующую команду, чтобы собрать все 4 службы:

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

Приведенная выше команда создаст local экземпляр версии для разработки ( non_prod ) для Google Cloud Platform ( gcp ) всех четырех сервисов. При необходимости обновите флаг --platform для выбранного вами облачного провайдера. Чтобы узнать больше о флагах сборки, проверьте файл build_and_test_all_docker .

Первоначальная сборка может занять 2 часа при использовании 64-ядерной машины, а время сборки линейно зависит от количества ядер. Если вы используете 32-ядерную машину, это может занять 4 часа. Если вы используете 16-ядерный компьютер, это может занять 8 часов.

Обратите внимание, что последующие сборки используют кеш, и каждая сборка должна занимать около 5–20 минут.

Соответствующий комикс xkcd :

Показано, как два программиста бездельничают в офисе, что заставляет менеджера приказать им вернуться к работе, а рабочие говорят, что код компилируется, и менеджера это устраивает, а автор этого комикса считает, что это номер один законное оправдание для расслабления

( Во время написания этой кодовой лаборатории я встретил Рэндалла Манро из xkcd и сказал ему, что добавил сюда этот комикс .)

3.3 Запуск служб

Для нашего тестирования мы запустим 8 сервисов (по 4 сервиса на стек). Каждая команда настроена на использование ресурсов, предоставляемых приложением локального тестирования. Настоятельно рекомендуется использовать оконный менеджер, например tmux .

Откройте как минимум 8 дополнительных окон терминала и выполните следующие команды в каждом сеансе.

Обратите внимание, что сервер приложения для локального тестирования уже должен быть запущен в отдельном процессе, поскольку сценарии назначения ставок и оценки будут обслуживаться приложением.

3.3.1 Команды установки А

Услуга

Команда

Служба торгов DSP-X

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

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 СФЭ Сервис

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 Команды набора B

Услуга

Команда

Служба торгов DSP-X

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

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 СФЭ Сервис

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 Переменные среды для локальных сценариев запуска

Следующие переменные среды можно использовать для управления поведением при запуске.

Конверт вар

Доступность

Описание

DOCKER_RUN_ARGS_STRING

Все услуги

Флаги, которые нужно установить для команды docker

SKIP_TLS_VERIFICATION

Все услуги

При тестировании на локальном компьютере вам может потребоваться использовать самозаверяющий сертификат, который не проходит проверку однорангового SSL-сервера curl . Флаг отключает проверку однорангового узла вместе с проверкой имени хоста SSL.

По умолчанию установлено значение false .

PS_VERBOSITY

Все услуги

Уровень обслуживания журналов. Более высокий уровень предоставляет больше журналов. 0 — самый низкий, а 10 — самый высокий. По умолчанию 10 .

BIDDING_PORT

Служба торгов

Порт Службы торгов. По умолчанию 50057

BIDDING_JS_URL

Служба торгов

URL логики назначения ставок

EGRESS_SCHEMA_URL

Служба торгов

Выход данных для обучения модели

INFERENCE_ARGS

Служба торгов

Аргументы в пользу заключения ставок

BFE_PORT

БФЭ Сервис

Порт службы BFE. По умолчанию 50051

BUYER_KV_SERVER_ADDR

БФЭ Сервис

Адрес покупателя BYOS K/V

BUYER_TKV_V2_SERVER_ADDR

БФЭ Сервис

Адрес покупателя TEE K/V

BIDDING_SERVER_ADDR

БФЭ Сервис

Адрес службы торгов покупателя

AUCTION_PORT

Аукционный сервис

Порт аукционного сервиса. По умолчанию 50061

AUCTION_JS_URL

Аукционный сервис

URL-адрес логики оценки

BUYER_REPORT_WIN_URL

Аукционный сервис

URL отчета о выигрыше покупателя

BUYER_REPORT_WIN_SCRIPT

Аукционный сервис

Скрипт отчета о выигрыше покупателя

BUYER_PAS_REPORT_WIN_SCRIPT

Аукционный сервис

Скрипт отчета о выигрыше покупателя для PAS

SFE_PORT

СФЭ Сервис

Порт Службы SFE. По умолчанию 50053

AUCTION_SERVER_ADDR

СФЭ Сервис

Адрес аукционной службы продавца

KEY_VALUE_SIGNALS_ADDR

СФЭ Сервис

Адрес BYOS K/V продавца

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

СФЭ Сервис

Адрес TEE K/V продавца

SELLER_ORIGIN_DOMAIN

СФЭ Сервис

Происхождение продавца

BUYER_SERVER_ADDRS_JSON

СФЭ Сервис

Адреса BFE покупателя

4. Протестируйте с помощью Secure Invoke из командной строки.

4.1 Тестирование SFE

Вы также можете использовать инструмент Secure Invoke , включенный в пакет B&A Services, для вызова служб непосредственно из командной строки.

4.1.2 Полезная нагрузка SFE SelectAd

Следующий запрос JSON был заполнен настройкой аукциона B&A с одним продавцом 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]"
          }
        ]
      }
    }
  }
}

Сохраните файл как sfe-test.json в корневой папке репозитория B&A Services Set A (сценарий сборки B&A скопирует файлы из корневой папки репозитория в папку /src/workspace образа Docker).

4.1.2 Вызов SFE с безопасным вызовом

Запустите следующую команду из корневой папки репозитория B&A Services:

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

Если стеки B&A настроены правильно, вы получите следующий успешный ответ:

{"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 Тестирование BFE

4.2.1 Запрос 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"
}

Сохраните файл как bfe-test.json в корневой папке репозитория B&A Services.

4.2.2 Вызов BFE с безопасным вызовом

Запустите следующую команду из корневой папки репозитория B&A Services:

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

Если стеки B&A настроены правильно, BFE возвращает следующий ответ:

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

4.3 Проверка журналов SFE

Посетите терминал и проверьте журналы SFE. Мы пройдемся по некоторым примечательным журналам выходных данных.

4.3.1 Зашифрованная полезная нагрузка запроса SelectAd

В этих выводах журнала SFE мы находим зашифрованные полезные данные вызова navigator.getInterestGroupAdAuctionData() . Эта полезная нагрузка генерируется браузером, отправляется из тега в SAS, а затем SAS пересылает ее в 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 Расшифрованная полезная нагрузка

В этом выводе мы находим расшифрованную полезную нагрузку вызова 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 к BFE

Запрос GetBids отправляется от SFE к 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 от BFE

BFE отвечает предложением:

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 в службу аукционов

После получения ставок SFE отправляет вызов ScoreAds в службу аукционов для каждой ставки:

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 от аукционной службы

Аукционная служба продавца отвечает с оценкой желательности:

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 от SFE

Ответ SelectAd от SFE шифруется и отправляется в 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. Протестируйте с помощью приложения Local Test App из браузера.

5.1 Откройте Chrome

Прочтите статью Chromium о запуске Chrome из командной строки и запустите его со следующими флагами:

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 

Флаг установлен для загрузки фиктивного ключа координатора, который мы разместили по адресу https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json

Важно: убедитесь, что вы полностью вышли из всех экземпляров Chrome, прежде чем открывать его из командной строки с флагами B&A. Чтобы выйти из всех процессов Chrome, попробуйте запустить ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 из командной строки.

5.2 Посетите пользовательский интерфейс приложения локального тестирования

Пользовательский интерфейс приложения можно найти по адресу http://localhost:3000 в экземпляре браузера Chrome, который вы открыли с помощью флагов. Точный адрес, который вы посещаете, может отличаться, если вы используете виртуальную машину с другим именем хоста.

Снимок экрана приложения для локального тестирования, открываемого в браузере.

В верхнем ряду приложения панель «Управление» содержит кнопки для имитации различных конфигураций аукциона. Две другие панели содержат iframe с сайтов рекламодателя и издателя.

Когда вы нажимаете кнопку «Загрузить теги DSP» в iframe страницы рекламодателя, на страницу добавляется скрипт из каждого DSP. Эти сценарии добавляют пользователя в группы по интересам. Откройте Chrome DevTools и посетите «Приложение/Хранилище/Группы интересов», чтобы изучить группы интересов, к которым присоединяются теги DSP:

Скриншот групп по интересам в Chrome DevTools

Затем нажмите кнопки на панели «Управление», чтобы смоделировать различные типы аукционов.

Реклама от B&A, отображаемая в браузере

Если службы B&A и приложение для локального тестирования настроены правильно, предыдущее объявление отображается на панели «iframe сайта издателя».

5.3 Конфигурация аукциона приложения для локального тестирования

В сопутствующем приложении для локального тестирования размещаются следующие участники, различающиеся по номеру порта (другой порт считается перекрестным источником):

Участник

Описание

Порт

Рекламодатель

Загружает теги DSP на странице

4001

Издатель

Загружает теги SSP на странице

4002

DSP-A

Покупатель на устройстве

5001

DSP-B

Покупатель на устройстве

5002

DSP-X

Покупатель B&A

5003

DSP-Y

Покупатель B&A

5004

SSP-TOP

Продавец высшего уровня

6001

SSP-OD

Продавец только на устройстве

6002

SSP-BA

Продавец только B&A

6003

SSP-MIX

Продавец смешанного режима

6004

Существует четыре DSP:

  • DSP-A и DSP-B участвуют в аукционах на устройстве
  • DSP-X и DSP-Y участвуют в аукционах B&A

Существует четыре SSP, и каждый продавец использует свою конфигурацию аукциона:

  • SSP-OD проводит аукцион только на устройстве
  • SSP-BA проводит аукцион только для B&A
  • SSP-MIX проводит аукцион смешанного режима
  • SSP-TOP проводит аукцион с несколькими продавцами
    • SSP-OD/BA/MIX участвуют в качестве продавцов компонентов на многопрофильном аукционе SSP-TOP

Полную архитектуру можно посмотреть на схеме проекта .

5.4 Настройка служб ставок и аукционов

В этой кодовой лаборатории мы запускаем два набора B&A рядом друг с другом.

Набор

Услуга

Участник

сетевой адрес ba-dev

Набор А

Служба торгов

DSP-X

192.168.84.101:50057

БФЭ Сервис

DSP-X

192.168.84.102:50051

Аукционный сервис

SSP-BA

192.168.84.103:50061

СФЭ Сервис

SSP-BA

192.168.84.104:50053

Набор Б

Служба торгов

DSP-Y

192.168.84.201:50057

БФЭ Сервис

DSP-Y

192.168.84.202:50051

Аукционный сервис

SSP-MIX

192.168.84.203:50061

СФЭ Сервис

SSP-MIX

192.168.84.204:50053

Приложение

Приложение для локального тестирования

Все

https://192.168.84.100:PORT

  • В наборе A услуги покупателя используются DSP-X , а услуги продавца используются SSP-BA
  • В наборе B услуги покупателя используются DSP-Y , а услуги продавца используются SSP-MIX

Для связи между приложением Local Testing и службами B&A используется сеть моста Docker . Сеть моста ba-dev создается сценарием установки приложения Local Testing. Службам B&A присвоен IP-адрес в подсети 192.168.84.0 .

Например, когда вы вызываете SFE Набора А из приложения, используется сетевой адрес 192.168.84.104:50053 . Когда вы загружаете сценарий ложного назначения ставок из DSP-X в BFE, используется https://192.168.84.100:5003/generate-bid.js .

6. Подведем итоги

Мы надеемся, что к этому моменту вы уже ознакомились с локальным запуском стека B&A Services на своем компьютере и лучше поняли, как службы взаимодействуют друг с другом.

6.1. Техническая поддержка

6.2 Узнать больше