Kiểm thử toàn diện B&A cho Web trên máy

1. Giới thiệu

Dịch vụ đặt giá thầu và phiên đấu giá (B&A) bao gồm 4 dịch vụ để người mua và người bán hỗ trợ phiên đấu giá Protected Audience:

Ngăn xếp người mua:

  • Dịch vụ giao diện người dùng cho người mua
  • Dịch vụ đặt giá thầu

Ngăn xếp người bán:

  • Dịch vụ giao diện người dùng dành cho người bán
  • Dịch vụ đấu giá

Lớp học lập trình này sẽ hướng dẫn bạn thiết lập và kiểm thử chế độ thiết lập toàn diện trong môi trường cục bộ. Quy trình hướng dẫn này dự kiến sẽ mất khoảng 1 giờ, không bao gồm thời gian tạo bản dựng dịch vụ ban đầu.

Mặc dù bạn có thể chỉ làm việc trên mã bên mua hoặc mã bên bán, nhưng bạn nên thiết lập quy trình toàn diện trong môi trường cục bộ để hiểu rõ hơn cách ngăn xếp bên mua và bên bán hoạt động với nhau. Bằng cách thiết lập cả hai ngăn xếp, bạn có thể tự tin hơn sau này khi tích hợp với ngăn xếp người mua hoặc người bán tương ứng của bên khác. Việc kiểm thử các dịch vụ trên máy cũng giúp bạn tiết kiệm chi phí phát triển.

Trong lớp học lập trình này, chúng ta sẽ sử dụng Ứng dụng kiểm thử cục bộ B&A làm ứng dụng đồng hành trong hướng dẫn.

Ứng dụng kiểm thử cục bộ đồng hành lưu trữ nhiều tài nguyên của người mua và người bán được dùng trong phiên đấu giá B&A. Ứng dụng này cũng cung cấp giao diện người dùng tại http://localhost:3000, nơi bạn có thể mô phỏng nhiều cấu hình đấu giá.

2. Thiết lập môi trường

2.1 Chuẩn bị máy Linux

Sử dụng máy Linux cục bộ hoặc cấp phép máy ảo Linux của nhà cung cấp dịch vụ đám mây mà bạn chọn. Để cải thiện thời gian xây dựng, bạn nên có ít nhất 16 lõi và tốt nhất là 32 lõi trở lên.

Xin lưu ý rằng chúng ta sẽ tải một trang HTML từ http://localhost:3000 của máy này. Nếu máy ảo không cung cấp giao diện người dùng đồ hoạ, hãy đảm bảo máy cục bộ của bạn có thể truy cập vào cổng 3000 để bạn có thể kết nối với máy ảo.

2.2 Cài đặt Docker

Chúng ta sử dụng Docker để chạy các dịch vụ và ứng dụng kiểm thử cục bộ.

Chúng ta sẽ sử dụng tập lệnh tiện lợi để cài đặt Docker trong môi trường thử nghiệm.

# 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

Cảnh báo: Với chế độ thiết lập không cần sudo, nhóm Docker sẽ cấp đặc quyền cấp gốc cho người dùng. Hãy đọc hướng dẫn về Docker không cần sudo để tìm hiểu thêm.

2.3 Khởi động Ứng dụng kiểm thử cục bộ đồng hành

Ứng dụng đồng hành cung cấp các tài nguyên như tập lệnh đặt giá thầu/đánh giá mô phỏng và điểm cuối BYOS K/V mô phỏng. Bạn nên khởi động ứng dụng trước khi chạy các dịch vụ B&A để có thể tải tài nguyên vào các dịch vụ đó.

Kéo xuống Kho lưu trữ ứng dụng kiểm thử cục bộ:

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

Từ thư mục gốc của kho lưu trữ, hãy chạy tập lệnh thiết lập:

./setup

Tập lệnh thiết lập sẽ tạo mạng Docker ba-dev, tạo chứng chỉ SSL và tạo hình ảnh ứng dụng kiểm thử.

Sau khi tạo bản dựng thành công, hãy chạy tập lệnh khởi động:

./start

3. Tạo và chạy B&A trên máy

3.1 Kéo xuống Dịch vụ B&A

Chúng ta sẽ chạy hai bộ Dịch vụ B&A trên cùng một máy, vì vậy, chúng ta sẽ tải kho lưu trữ xuống hai thư mục khác nhau.

Tập hợp A:

Kéo xuống kho lưu trữ B&A:

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

Tập B

Kéo xuống kho lưu trữ B&A:

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

3.2 Tạo dịch vụ

Từ thư mục gốc của mỗi thư mục B&A, hãy chạy lệnh sau để tạo cả 4 dịch vụ:

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

Lệnh trên sẽ tạo một thực thể local của bản dựng phát triển (non_prod) cho Google Cloud Platform (gcp) của cả 4 dịch vụ. Cập nhật cờ --platform cho nhà cung cấp dịch vụ đám mây mà bạn chọn nếu cần. Để tìm hiểu thêm về cờ bản dựng, hãy kiểm tra tệp build_and_test_all_docker.

Bản dựng ban đầu có thể mất 2 giờ nếu bạn sử dụng máy 64 nhân và thời gian tạo bản dựng sẽ tăng theo số lượng nhân. Nếu bạn đang dùng máy 32 nhân, thì quá trình này có thể mất 4 giờ. Nếu bạn đang sử dụng máy 16 nhân, quá trình này có thể mất 8 giờ.

Xin lưu ý rằng các bản dựng tiếp theo sẽ sử dụng bộ nhớ đệm và mỗi bản dựng sẽ mất khoảng 5 đến 20 phút.

Truyện tranh xkcd có liên quan:

Cho thấy hai lập trình viên đang lười biếng tại văn phòng, khiến người quản lý yêu cầu họ quay lại làm việc. Các nhân viên nói rằng mã đang biên dịch và người quản lý đồng ý với điều đó. Tác giả của truyện tranh này coi đó là lý do chính đáng số một để lười biếng

(Tôi đã gặp Randall Munroe của xkcd trong khi viết lớp học lập trình này và nói với anh rằng tôi đã thêm truyện tranh này vào đây)

3.3 Chạy các dịch vụ

Để kiểm thử, chúng ta sẽ chạy 8 dịch vụ (4 dịch vụ cho mỗi ngăn xếp). Mỗi lệnh được thiết lập để sử dụng các tài nguyên do Ứng dụng kiểm thử cục bộ cung cấp. Bạn nên sử dụng trình quản lý cửa sổ như tmux.

Mở ít nhất 8 cửa sổ dòng lệnh khác và chạy các lệnh sau trong mỗi phiên.

Xin lưu ý rằng máy chủ Ứng dụng kiểm thử cục bộ phải đang chạy trong một quy trình riêng biệt, vì các tập lệnh đặt giá thầu và tính điểm sẽ do ứng dụng phân phát.

3.3.1 Đặt lệnh A

Dịch vụ

Lệnh

DSP-X Dịch vụ đặt giá thầu

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 Dịch vụ 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

Dịch vụ đấu giá 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 Dịch vụ 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 Lệnh nhóm B

Dịch vụ

Lệnh

DSP-X Dịch vụ đặt giá thầu

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 Dịch vụ 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

Dịch vụ đấu giá 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 Dịch vụ 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 Biến môi trường cho tập lệnh khởi động cục bộ

Bạn có thể sử dụng các biến môi trường sau đây để kiểm soát hành vi khởi động.

Biến môi trường

Phạm vi cung cấp

Mô tả

DOCKER_RUN_ARGS_STRING

Tất cả dịch vụ

Cờ cần đặt cho lệnh docker

SKIP_TLS_VERIFICATION

Tất cả dịch vụ

Khi kiểm thử trên máy cục bộ, bạn có thể cần sử dụng chứng chỉ tự ký không vượt qua quy trình kiểm tra xác minh ngang hàng SSL của curl. Cờ này sẽ tắt tính năng xác minh ngang hàng cùng với tính năng kiểm tra tên máy chủ SSL.

Giá trị mặc định là false.

PS_VERBOSITY

Tất cả dịch vụ

Cấp nhật ký dịch vụ. Cấp cao hơn cung cấp nhiều nhật ký hơn. 0 là mức thấp nhất và 10 là mức cao nhất. Giá trị mặc định là 10.

BIDDING_PORT

Dịch vụ đặt giá thầu

Cổng của Dịch vụ đặt giá thầu. Mặc định là 50057.

BIDDING_JS_URL

Dịch vụ đặt giá thầu

URL của logic đặt giá thầu

EGRESS_SCHEMA_URL

Dịch vụ đặt giá thầu

Lưu lượng dữ liệu đi để huấn luyện mô hình

INFERENCE_ARGS

Dịch vụ đặt giá thầu

Đối số cho tính năng đặt giá thầu suy luận

BFE_PORT

Dịch vụ BFE

Cổng của Dịch vụ BFE. Mặc định là 50051.

BUYER_KV_SERVER_ADDR

Dịch vụ BFE

Địa chỉ K/V BYOS của người mua

BUYER_TKV_V2_SERVER_ADDR

Dịch vụ BFE

Địa chỉ K/V TEE của người mua

BIDDING_SERVER_ADDR

Dịch vụ BFE

Địa chỉ Dịch vụ đặt giá thầu của người mua

AUCTION_PORT

Dịch vụ đấu giá

Cổng của Dịch vụ đấu giá. Mặc định là 50061.

AUCTION_JS_URL

Dịch vụ đấu giá

URL của logic tính điểm

BUYER_REPORT_WIN_URL

Dịch vụ đấu giá

URL báo cáo chiến thắng của người mua

BUYER_REPORT_WIN_SCRIPT

Dịch vụ đấu giá

Tập lệnh báo cáo chiến thắng của người mua

BUYER_PAS_REPORT_WIN_SCRIPT

Dịch vụ đấu giá

Tập lệnh báo cáo chiến thắng của người mua cho PAS

SFE_PORT

Dịch vụ SFE

Cổng của Dịch vụ SFE. Mặc định là 50053.

AUCTION_SERVER_ADDR

Dịch vụ SFE

Địa chỉ của Dịch vụ đấu giá của người bán

KEY_VALUE_SIGNALS_ADDR

Dịch vụ SFE

Địa chỉ K/V BYOS của người bán

TRUSTED_KEY_VALUE_V2_SIGNALS_ADDR

Dịch vụ SFE

Địa chỉ K/V TEE của người bán

SELLER_ORIGIN_DOMAIN

Dịch vụ SFE

Nguồn gốc của người bán

BUYER_SERVER_ADDRS_JSON

Dịch vụ SFE

Địa chỉ BFE của người mua

4. Kiểm thử bằng tính năng Gọi bảo mật từ dòng lệnh

4.1 Kiểm thử SFE

Bạn cũng có thể sử dụng công cụ Secure Invoke (Gọi bảo mật) có trong gói Dịch vụ B&A để gọi trực tiếp các dịch vụ từ dòng lệnh.

4.1.2 Tải trọng SelectAd SFE

Yêu cầu JSON sau đây đã được điền sẵn thông tin thiết lập phiên đấu giá B&A của một người bán 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]"
          }
        ]
      }
    }
  }
}

Lưu tệp dưới dạng sfe-test.json trong thư mục gốc của kho lưu trữ Dịch vụ B&A của Tập hợp A(tập lệnh bản dựng B&A sẽ sao chép các tệp trong thư mục gốc của kho lưu trữ vào thư mục /src/workspace của hình ảnh Docker).

4.1.2 Gọi SFE bằng tính năng Gọi an toàn

Chạy lệnh sau từ thư mục gốc của kho lưu trữ Dịch vụ B&A:

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

Nếu thiết lập đúng ngăn xếp B&A, bạn sẽ nhận được phản hồi thành công sau:

{"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 Kiểm thử BFE

4.2.1 Yêu cầu GetBids 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"
}

Lưu tệp dưới dạng bfe-test.json trong thư mục gốc của kho lưu trữ Dịch vụ B&A.

4.2.2 Gọi BFE bằng Lệnh gọi bảo mật

Chạy lệnh sau từ thư mục gốc của kho lưu trữ Dịch vụ B&A:

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

Nếu bạn thiết lập đúng ngăn xếp B&A, BFE sẽ trả về phản hồi sau:

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

4.3 Kiểm tra nhật ký SFE

Truy cập vào dòng lệnh và kiểm tra nhật ký SFE. Chúng ta sẽ xem xét một số nhật ký đáng chú ý trong kết quả.

4.3.1 Tải trọng đã mã hoá của yêu cầu SelectAd

Trong kết quả nhật ký SFE này, chúng ta thấy tải trọng được mã hoá của lệnh gọi navigator.getInterestGroupAdAuctionData(). Tải trọng này do trình duyệt tạo, được gửi từ thẻ đến SAS, sau đó SAS chuyển tiếp tải trọng đó đến 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 Tải trọng đã giải mã

Trong kết quả này, chúng ta thấy tải trọng đã giải mã của lệnh gọi 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 Yêu cầu GetBids đến BFE

Yêu cầu GetBids được gửi từ SFE đến 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 Phản hồi GetBids từ BFE

BFE phản hồi bằng giá thầu:

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 Yêu cầu ScoreAds đến Dịch vụ đấu giá

Sau khi nhận được giá thầu, SFE sẽ thực hiện lệnh gọi ScoreAds đến Dịch vụ đấu giá cho mỗi giá thầu:

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 Phản hồi ScoreAds từ Dịch vụ đấu giá

Dịch vụ đấu giá của người bán phản hồi bằng điểm mức độ mong muốn:

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 Phản hồi SelectAd từ SFE

Phản hồi SelectAd của SFE được mã hoá và gửi đến 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. Kiểm thử bằng Ứng dụng kiểm thử cục bộ trên trình duyệt

5.1 Mở Chrome

Đọc bài viết của Chromium về cách khởi động Chrome từ dòng lệnh và khởi động Chrome bằng các cờ sau:

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 

Cờ này được đặt để tải khoá điều phối viên mô phỏng mà chúng tôi đã lưu trữ tại https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json

Quan trọng: Hãy đảm bảo bạn đã thoát hoàn toàn khỏi tất cả các phiên bản Chrome trước khi mở phiên bản đó từ dòng lệnh bằng cờ B&A. Để thoát khỏi tất cả các quy trình của Chrome, hãy thử chạy ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 từ dòng lệnh.

5.2 Truy cập vào giao diện người dùng của ứng dụng kiểm thử cục bộ

Bạn có thể tìm thấy giao diện người dùng của ứng dụng tại http://localhost:3000 trong phiên bản trình duyệt Chrome mà bạn đã mở bằng các cờ. Địa chỉ chính xác mà bạn truy cập có thể khác nếu bạn đang sử dụng một máy ảo có tên máy chủ khác.

Ảnh chụp màn hình ứng dụng kiểm thử cục bộ đang được truy cập trong trình duyệt

Ở hàng trên cùng của ứng dụng, bảng điều khiển "Chế độ điều khiển" chứa các nút để mô phỏng nhiều cấu hình đấu giá. Hai bảng điều khiển còn lại chứa các iframe từ trang web của nhà quảng cáo và nhà xuất bản.

Khi bạn nhấp vào nút "Tải thẻ DSP" trong iframe của trang nhà quảng cáo, một tập lệnh từ mỗi DSP sẽ được thêm vào trang. Các tập lệnh đó sẽ thêm người dùng vào các nhóm mối quan tâm. Mở Công cụ của Chrome cho nhà phát triển rồi truy cập vào "Application / Storage / Interest Groups" (Ứng dụng/Bộ nhớ/Nhóm mối quan tâm) để kiểm tra các nhóm mối quan tâm mà thẻ DSP đã tham gia:

Ảnh chụp màn hình về các nhóm mối quan tâm trong Công cụ của Chrome cho nhà phát triển

Sau đó, hãy nhấp vào các nút trong bảng điều khiển "Chế độ điều khiển" để mô phỏng nhiều loại phiên đấu giá.

Quảng cáo được hiển thị trong trình duyệt từ B&A

Nếu bạn thiết lập đúng Dịch vụ B&A và Ứng dụng kiểm thử cục bộ, thì quảng cáo trước đó sẽ hiển thị trong bảng điều khiển "iframe trang web của nhà xuất bản".

5.3 Cấu hình phiên đấu giá trong Ứng dụng kiểm thử cục bộ

Trong ứng dụng kiểm thử cục bộ đồng hành, các bên tham gia sau đây được lưu trữ, phân biệt theo số cổng (một cổng khác được coi là nhiều nguồn gốc):

Người hoặc tổ chức tham gia

Mô tả

Cổng

Nhà quảng cáo

Tải thẻ DSP trên trang

4001

Nhà xuất bản

Tải các thẻ SSP trên trang

4002

DSP-A

Người mua trên thiết bị

5001

DSP-B

Người mua trên thiết bị

5002

DSP-X

Người mua B&A

5003

DSP-Y

Người mua B&A

5004

SSP-TOP

Người bán cấp cao nhất

6001

SSP-OD

Người bán chỉ trên thiết bị

6002

SSP-BA

Người bán chỉ bán hàng mới và hàng đã qua sử dụng

6003

SSP-MIX

Người bán kết hợp nhiều phương tiện

6004

Có 4 DSP:

  • DSP-ADSP-B tham gia phiên đấu giá trên thiết bị
  • DSP-XDSP-Y tham gia phiên đấu giá B&A

Có 4 SSP và mỗi người bán chạy một cấu hình phiên đấu giá khác nhau:

  • SSP-OD chạy phiên đấu giá chỉ trên thiết bị
  • SSP-BA chạy phiên đấu giá chỉ dành cho B&A
  • SSP-MIX chạy phiên đấu giá ở chế độ kết hợp
  • SSP-TOP chạy phiên đấu giá nhiều người bán
    • SSP-OD/BA/MIX tham gia với tư cách là người bán thành phần của phiên đấu giá nhiều người bán của SSP-TOP

Để biết toàn bộ cấu trúc, hãy xem sơ đồ thiết kế.

5.4 Cấu hình Dịch vụ đặt giá thầu và phiên đấu giá

Trong lớp học lập trình này, chúng ta sẽ chạy song song hai bộ B&A.

Chuẩn bị

Dịch vụ

Người hoặc tổ chức tham gia

Địa chỉ mạng ba-dev

Tập hợp A

Dịch vụ đặt giá thầu

DSP-X

192.168.84.101:50057

Dịch vụ BFE

DSP-X

192.168.84.102:50051

Dịch vụ đấu giá

SSP-BA

192.168.84.103:50061

Dịch vụ SFE

SSP-BA

192.168.84.104:50053

Tập B

Dịch vụ đặt giá thầu

DSP-Y

192.168.84.201:50057

Dịch vụ BFE

DSP-Y

192.168.84.202:50051

Dịch vụ đấu giá

SSP-MIX

192.168.84.203:50061

Dịch vụ SFE

SSP-MIX

192.168.84.204:50053

Ứng dụng

Ứng dụng kiểm thử cục bộ

Tất cả

https://192.168.84.100:PORT

  • Trong Tập hợp A, DSP-X sử dụng dịch vụ của người mua và SSP-BA sử dụng dịch vụ của người bán
  • Trong Tập hợp B, DSP-Y sử dụng dịch vụ của người mua và SSP-MIX sử dụng dịch vụ của người bán

Để giao tiếp giữa Ứng dụng kiểm thử cục bộ và Dịch vụ B&A, bạn có thể sử dụng mạng cầu Docker. Mạng cầu ba-dev được tạo bằng tập lệnh thiết lập của Ứng dụng kiểm thử cục bộ. Các dịch vụ B&A được chỉ định một địa chỉ IP trong mạng con của 192.168.84.0.

Ví dụ: khi bạn gọi SFE của Tập hợp A từ ứng dụng, địa chỉ mạng của 192.168.84.104:50053 sẽ được sử dụng. Khi bạn tải tập lệnh đặt giá thầu mô phỏng từ DSP-X vào BFE, https://192.168.84.100:5003/generate-bid.js sẽ được sử dụng.

6. Tóm tắt

Giờ đây, chúng tôi hy vọng bạn đã làm quen với việc chạy ngăn xếp Dịch vụ B&A cục bộ trên máy của mình và hiểu rõ hơn về cách các dịch vụ giao tiếp với nhau.

6.1. Hỗ trợ kỹ thuật

6.2 Tìm hiểu thêm