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

1. Введение

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

Набор товаров для покупателей:

  • Обслуживание покупателей на переднем плане
  • Услуги по проведению торгов

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

  • Сервис для продавцов на стороне клиента
  • Аукционная служба

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

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

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

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

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

2.1 Подготовка машины под управлением Linux

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

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

2.2 Установка Docker

Для запуска сервисов и локального тестового приложения мы используем 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 предоставляет пользователю права root. Подробнее см. в руководстве по настройке 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

Загрузите репозиторий 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 ( gcp ) для всех 4 сервисов. При необходимости измените флаг --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 Команды набора A

Услуга

Командование

Сервис торгов 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 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 Команды набора B

Услуга

Командование

Сервис торгов DSP-Y

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

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

Переменная окружения

Доступность

Описание

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

Порт службы BFE. По умолчанию используется 50051

BUYER_KV_SERVER_ADDR

Сервис BFE

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

BUYER_TKV_V2_SERVER_ADDR

Сервис BFE

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

BIDDING_SERVER_ADDR

Сервис BFE

Адрес службы приема заявок покупателей

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

Порт службы SFE. По умолчанию используется 50053

AUCTION_SERVER_ADDR

Сервис SFE

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

KEY_VALUE_SIGNALS_ADDR

Сервис SFE

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

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

Сервис SFE

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

SELLER_ORIGIN_DOMAIN

Сервис SFE

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

BUYER_SERVER_ADDRS_JSON

Сервис SFE

Адреса покупателей в зоне 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 из набора A (скрипт сборки B&A скопирует файлы из корневой папки репозитория в папку /src/workspace образа Docker).

4.1.2 Вызов SFE с помощью Secure Invoke

Выполните следующую команду из корневой папки репозитория 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 с помощью Secure Invoke

Выполните следующую команду из корневой папки репозитория 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. Протестируйте с помощью локального тестового приложения из браузера.

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-элементы с сайтов рекламодателей и издателей.

Скриншот групп интересов в инструментах разработчика Chrome. Скриншот групп интересов в инструментах разработчика Chrome.

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

Рекламное объявление, отображаемое в браузере от 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 участвуют в аукционах по слияниям и поглощениям.

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

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

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

5.4 Настройка сервисов для проведения торгов и аукционов

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

Набор

Услуга

Участник

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

Набор А

Услуги по проведению торгов

DSP-X

192.168.84.101:50057

Сервис BFE

DSP-X

192.168.84.102:50051

Аукционная служба

SSP-BA

192.168.84.103:50061

Сервис SFE

SSP-BA

192.168.84.104:50053

Набор B

Услуги по проведению торгов

DSP-Y

192.168.84.201:50057

Сервис BFE

DSP-Y

192.168.84.202:50051

Аукционная служба

SSP-MIX

192.168.84.203:50061

Сервис SFE

SSP-MIX

192.168.84.204:50053

Приложение

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

Все

https://192.168.84.100:PORT

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

Для связи между локальным тестовым приложением и сервисами B&A используется мостовая сеть Docker . Мостовая сеть ba-dev создается скриптом настройки локального тестового приложения. Сервисам B&A назначается IP-адрес в подсети 192.168.84.0 .

Например, при вызове SFE из набора A из приложения используется сетевой адрес 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 Узнать больше