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

1. Введение

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

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

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

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

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

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

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

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

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

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

2.1 Подготовка машины Linux

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

Обратите внимание, что мы будем загружать HTML-страницу с http://localhost:3000 этой машины. Если виртуальная машина не предоставляет GUI, убедитесь, что порт 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-less группа Docker предоставляет пользователю привилегии root-уровня. Прочитайте руководство Docker sudo-less, чтобы узнать больше.

2.3 Запустите сопутствующее приложение Local Testing

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

Загрузите репозиторий приложения Local Testing :

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 ( gcp ) всех 4 сервисов. При необходимости обновите флаг --platform до выбранного вами облачного провайдера. Чтобы узнать больше о флагах сборки, проверьте файл build_and_test_all_docker .

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

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

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

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

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

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

Для нашего тестирования мы запустим 8 служб (4 службы на стек). Каждая команда настроена на использование ресурсов, предоставляемых приложением Local Testing. Настоятельно рекомендуется использовать оконный менеджер, такой как 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 SFE Service

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

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

AUCTION_SERVER_ADDR="192.168.84.103:50061" \

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

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

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

3.3.2 Набор команд 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 Service

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

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

AUCTION_SERVER_ADDR="192.168.84.203:50061" \

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

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

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

3.3.2 Переменные среды для локальных стартовых скриптов

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

Окружение вар

Доступность

Описание

DOCKER_RUN_ARGS_STRING

Все услуги

Флаги для установки команды docker

SKIP_TLS_VERIFICATION

Все услуги

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

По умолчанию — false .

PS_VERBOSITY

Все услуги

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

BIDDING_PORT

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

Порт Bidding Service. По умолчанию 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 с помощью безопасного вызова

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

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, который вы открыли с флагами. Точный адрес, который вы посещаете, может отличаться, если вы используете виртуальную машину с другим именем хоста.

Скриншот локального тестового приложения, посещаемого в браузере Скриншот локального тестового приложения, посещаемого в браузере

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

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

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

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

Если B&A Services и приложение Local Testing настроены правильно, предыдущее объявление отображается на панели «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

BFE-сервис

DSP-X

192.168.84.102:50051

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

SSP-BA

192.168.84.103:50061

SFE-сервис

SSP-BA

192.168.84.104:50053

Набор Б

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

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

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

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

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

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

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

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