वेब के लिए, एंड-टू-एंड टेस्ट को स्थानीय तौर पर टेस्ट करना

1. परिचय

बिडिंग और नीलामी सेवाएं (बीए) में, खरीदारों और सेलर के लिए चार सेवाएं शामिल हैं. इनकी मदद से, Protected Audience नीलामी की सुविधा मिलती है:

खरीदार स्टैक:

  • खरीदार के लिए फ़्रंट-एंड सेवा
  • बिडिंग सेवा

सेलर स्टैक:

  • सेलर फ़्रंट-एंड सेवा
  • नीलामी सेवा

इस कोडलैब में, आपको अपने लोकल एनवायरमेंट में एंड-टू-एंड सेटअप को सेट अप करने और उसकी जांच करने का तरीका बताया गया है. इसमें करीब एक घंटा लग सकता है. हालांकि, इसमें सेवा बनाने में लगने वाला समय शामिल नहीं है.

भले ही, आप सिर्फ़ बाय-साइड कोड या सेल-साइड कोड पर काम करते हों, लेकिन अपने लोकल एनवायरमेंट में एंड-टू-एंड फ़्लो सेट अप करना फ़ायदेमंद होता है. इससे, यह बेहतर तरीके से समझा जा सकता है कि खरीदार और सेलर स्टैक, एक-दूसरे के साथ कैसे काम करते हैं. दोनों स्टैक सेट अप करने पर, किसी दूसरे पक्ष के खरीदार या सेलर स्टैक के साथ इंटिग्रेट करने पर, आपको ज़्यादा भरोसा हो सकता है. सेवाओं को स्थानीय तौर पर टेस्ट करने से, डेवलपमेंट की लागत भी कम हो जाती है.

इस कोडलैब में, हम B&A Local Testing ऐप्लिकेशन का इस्तेमाल, वॉकथ्रू के साथी के तौर पर करेंगे.

साथ में काम करने वाले स्थानीय टेस्टिंग ऐप्लिकेशन में, बिडिंग और नीलामी में इस्तेमाल होने वाले, खरीदार और सेलर के अलग-अलग संसाधन होस्ट किए जाते हैं. ऐप्लिकेशन में http://localhost:3000 पर एक यूज़र इंटरफ़ेस (यूआई) भी दिया गया है. यहां अलग-अलग ऑक्शन कॉन्फ़िगरेशन को सिम्युलेट किया जा सकता है.

2. एनवायरमेंट सेटअप करना

2.1 Linux मशीन तैयार करना

किसी स्थानीय Linux मशीन का इस्तेमाल करें या अपनी पसंद की क्लाउड सेवा देने वाली कंपनी की Linux वर्चुअल मशीन (वीएम) का प्रावधान करें. बिल्ड में लगने वाले समय को कम करने के लिए, कम से कम 16 कोर का सुझाव दिया जाता है. हालांकि, 32 से ज़्यादा कोर का इस्तेमाल करना बेहतर होता है.

ध्यान दें कि हम इस मशीन के http://localhost:3000 से एचटीएमएल पेज लोड करेंगे. अगर VM में जीयूआई नहीं है, तो पक्का करें कि पोर्ट 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-less सेटअप में, Docker ग्रुप उपयोगकर्ता को रूट-लेवल की अनुमतियां देता है. ज़्यादा जानने के लिए, sudo-less Docker गाइड पढ़ें.

2.3 कंपैनियन Local Testing ऐप्लिकेशन शुरू करना

साथी ऐप्लिकेशन, मॉक बिडिंग/स्कोरिंग स्क्रिप्ट और मॉक K/V BYOS एंडपॉइंट जैसे संसाधन उपलब्ध कराता है. B&A सेवाओं को चलाने से पहले, ऐप्लिकेशन को शुरू किया जाना चाहिए, ताकि संसाधनों को सेवाओं में लोड किया जा सके.

लोकल टेस्टिंग ऐप्लिकेशन का डेटा स्टोर खींचकर नीचे लाएं:

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

रिपॉज़िटरी के रूट से, सेटअप स्क्रिप्ट चलाएं:

./setup

सेटअप स्क्रिप्ट, ba-dev Docker नेटवर्क बनाएगी, एसएसएल सर्टिफ़िकेट जनरेट करेगी, और टेस्ट ऐप्लिकेशन इमेज बनाएगी.

बिल्ड पूरा होने के बाद, स्टार्ट स्क्रिप्ट चलाएं:

./start

3. B&A को स्थानीय तौर पर बनाना और चलाना

3.1 B&A Services को पुल-डाउन करें

हम एक ही मशीन पर B&A Services के दो सेट चलाएंगे. इसलिए, हम रिपॉज़िटरी को दो अलग-अलग फ़ोल्डर में डाउनलोड करेंगे.

पहला सेट:

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 फ़ोल्डर के रूट फ़ोल्डर से यह कमांड चलाएं:

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

ऊपर दिया गया निर्देश, चारों सेवाओं के लिए Google Cloud Platform (gcp) के डेवलपमेंट बिल्ड (non_prod) का local इंस्टेंस बनाएगा. अगर ज़रूरी हो, तो --platform फ़्लैग को अपनी पसंद के क्लाउड सेवा देने वाली कंपनी पर अपडेट करें. बिल्ड फ़्लैग के बारे में ज़्यादा जानने के लिए, build_and_test_all_docker फ़ाइल देखें.

64-कोर मशीन का इस्तेमाल करने पर, शुरुआती बिल्ड में दो घंटे लग सकते हैं. साथ ही, कोर की संख्या के हिसाब से बिल्ड में लगने वाला समय भी बढ़ता जाता है. अगर आपके पास 32-कोर वाली मशीन है, तो इसमें चार घंटे लग सकते हैं. अगर 16-कोर मशीन का इस्तेमाल किया जा रहा है, तो इसमें आठ घंटे लग सकते हैं.

ध्यान दें कि बाद के बिल्ड, कैश मेमोरी का इस्तेमाल करते हैं. साथ ही, हर बिल्ड में करीब 5 से 20 मिनट लग सकते हैं.

काम की xkcd कॉमिक:

इसमें दो प्रोग्रामर को ऑफ़िस में काम न करते हुए दिखाया गया है. इस वजह से, मैनेजर उन्हें काम पर वापस आने के लिए कहता है. इसके जवाब में, प्रोग्रामर कहते हैं कि कोड कंपाइल हो रहा है. मैनेजर को यह जवाब पसंद आता है. इस कॉमिक के लेखक के मुताबिक, काम न करने की यह सबसे सही वजह है

(इस कोडलैब को लिखते समय, मेरी मुलाकात xkcd के रैंडल मुनरो से हुई. मैंने उन्हें बताया कि मैंने यहां यह कॉमिक जोड़ी है)

3.3 सेवाएं चलाना

टेस्टिंग के लिए, हम आठ सेवाएं चलाएंगे (हर स्टैक में चार सेवाएं). हर निर्देश, लोकल टेस्टिंग ऐप्लिकेशन से मिले संसाधनों का इस्तेमाल करने के लिए सेट अप किया जाता है. हमारा सुझाव है कि tmux जैसे विंडो मैनेजर का इस्तेमाल करें.

कम से कम आठ अन्य टर्मिनल विंडो खोलें और हर सेशन में ये कमांड चलाएं.

ध्यान दें कि लोकल टेस्टिंग ऐप्लिकेशन सर्वर पहले से ही किसी अलग प्रोसेस में चल रहा होना चाहिए, क्योंकि बिडिंग और स्कोरिंग स्क्रिप्ट, ऐप्लिकेशन से भेजी जाएंगी.

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-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 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 लोकल स्टार्ट स्क्रिप्ट के लिए एनवायरमेंट वैरिएबल

स्टार्ट-अप व्यवहार को कंट्रोल करने के लिए, इन एनवायरमेंट वैरिएबल का इस्तेमाल किया जा सकता है.

Env var

उपलब्धता

ब्यौरा

DOCKER_RUN_ARGS_STRING

सभी सेवाएं

docker कमांड के लिए सेट किए जाने वाले फ़्लैग

SKIP_TLS_VERIFICATION

सभी सेवाएं

अपनी लोकल मशीन पर जांच करते समय, आपको अपने-आप हस्ताक्षर किए गए सर्टिफ़िकेट का इस्तेमाल करना पड़ सकता है. यह सर्टिफ़िकेट, curl की एसएसएल पीयर की पुष्टि करने की जांच में पास नहीं होता. यह फ़्लैग, एसएसएल होस्टनेम की जांच के साथ-साथ, पीयर की पुष्टि करने की सुविधा को बंद कर देता है.

डिफ़ॉल्ट रूप से, यह false पर सेट होती है.

PS_VERBOSITY

सभी सेवाएं

सेवा लॉग का लेवल. ज़्यादा लेवल पर ज़्यादा लॉग मिलते हैं. 0 सबसे कम और 10 सबसे ज़्यादा है. डिफ़ॉल्ट रूप से, यह 10 पर सेट होती है.

BIDDING_PORT

बिडिंग सेवा

बिडिंग सेवा का पोर्ट. डिफ़ॉल्ट रूप से 50057 पर सेट होती है

BIDDING_JS_URL

बिडिंग सेवा

बिडिंग लॉजिक का यूआरएल

EGRESS_SCHEMA_URL

बिडिंग सेवा

मॉडल को ट्रेनिंग देने के लिए डेटा एक्सग्रेस

INFERENCE_ARGS

बिडिंग सेवा

बिडिंग के अनुमान के लिए आर्ग्युमेंट

BFE_PORT

BFE सेवा

बीएफ़ई सेवा का पोर्ट. डिफ़ॉल्ट रूप से 50051 पर सेट होती है

BUYER_KV_SERVER_ADDR

BFE सेवा

खरीदार का BYOS K/V पता

BUYER_TKV_V2_SERVER_ADDR

BFE सेवा

खरीदार का टीईई के/वी पता

BIDDING_SERVER_ADDR

BFE सेवा

खरीदार की बिडिंग सेवा का पता

AUCTION_PORT

नीलामी सेवा

Auction Service का पोर्ट. डिफ़ॉल्ट रूप से 50061 पर सेट होती है

AUCTION_JS_URL

नीलामी सेवा

स्कोरिंग लॉजिक का यूआरएल

BUYER_REPORT_WIN_URL

नीलामी सेवा

खरीदार की जीत की रिपोर्टिंग का यूआरएल

BUYER_REPORT_WIN_SCRIPT

नीलामी सेवा

Buyer's win reporting 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 सेवा

सेलर का टीईई के/वी पता

SELLER_ORIGIN_DOMAIN

SFE सेवा

सेलर की जगह

BUYER_SERVER_ADDRS_JSON

SFE सेवा

खरीदार के बीएफ़ई पते

4. कमांड लाइन से Secure Invoke की मदद से टेस्ट करना

4.1 SFE टेस्टिंग

सीधे कमांड लाइन से सेवाओं को कॉल करने के लिए, B&A Services पैकेज में शामिल Secure Invoke टूल का भी इस्तेमाल किया जा सकता है.

4.1.2 SFE SelectAd पेलोड

यहां दिए गए JSON अनुरोध में, SSP-BA के सिंगल-सेलर B&A ऑक्शन सेटअप की जानकारी भरी गई है:

{
  "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]"
          }
        ]
      }
    }
  }
}

फ़ाइल को सेट A के B&A Services रिपॉज़िटरी के रूट फ़ोल्डर में sfe-test.json के तौर पर सेव करें. B&A बिल्ड स्क्रिप्ट, रिपॉज़िटरी के रूट फ़ोल्डर में मौजूद फ़ाइलों को Docker इमेज के /src/workspace फ़ोल्डर में कॉपी कर देगी.

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 बीएफ़ई (बिना फ़िल्टर वाला ईमेल) की जांच

4.2.1 बीएफ़ई 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"
}

फ़ाइल को B&A Services के रिपॉज़िटरी के रूट फ़ोल्डर में bfe-test.json के तौर पर सेव करें.

4.2.2 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 स्टैक सही तरीके से सेट अप किए गए हैं, तो बीएफ़ई यह रिस्पॉन्स दिखाता है:

{"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 बीएफ़ई से अनुरोध करना

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 बीएफ़ई से मिला जवाब

बीएफ़ई, बिड के साथ जवाब देता है:

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 से मिला जवाब

SFE का SelectAd जवाब एन्क्रिप्ट (सुरक्षित) करके 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 खोलें

कमांड लाइन से Chrome को शुरू करने के बारे में Chromium का लेख पढ़ें. साथ ही, इसे इन फ़्लैग के साथ शुरू करें:

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 पर होस्ट की गई मॉक कोऑर्डिनेटर कुंजी को लोड करने के लिए सेट है

अहम जानकारी: B&A फ़्लैग के साथ कमांड-लाइन से Chrome खोलने से पहले, पक्का करें कि आपने सभी Chrome इंस्टेंस से पूरी तरह से बाहर निकल लिया हो. Chrome की सभी प्रोसेस से बाहर निकलने के लिए, कमांड लाइन से ps aux | grep -ie chrome/chrome | awk '{print $2}' | xargs kill -9 चलाकर देखें.

5.2 लोकल टेस्टिंग ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) पर जाएं

ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई), http://localhost:3000 पर देखा जा सकता है. यह यूआई, Chrome ब्राउज़र के उस इंस्टेंस में दिखेगा जिसे आपने फ़्लैग के साथ खोला था. अगर किसी दूसरे होस्टनेम वाले वर्चुअल मशीन का इस्तेमाल किया जा रहा है, तो हो सकता है कि आपके विज़िट किए गए पते का सटीक पता अलग हो.

ब्राउज़र में, लोकल टेस्टिंग ऐप्लिकेशन का स्क्रीनशॉट

ऐप्लिकेशन की सबसे ऊपर वाली पंक्ति में, "कंट्रोल" पैनल में अलग-अलग नीलामी कॉन्फ़िगरेशन को सिम्युलेट करने के लिए बटन होते हैं. अन्य दो पैनल में, विज्ञापन देने वाले और पब्लिशर की साइटों के iframe होते हैं.

विज्ञापन देने वाले के पेज के iframe में "डीएसपी टैग लोड करें" बटन पर क्लिक करने पर, हर डीएसपी की एक स्क्रिप्ट पेज में जुड़ जाती है. ये स्क्रिप्ट, उपयोगकर्ता को दिलचस्पी के ग्रुप में जोड़ती हैं. Chrome DevTools खोलें और DSP टैग से जुड़े इंटरेस्ट ग्रुप की जांच करने के लिए, "ऐप्लिकेशन / स्टोरेज / इंटरेस्ट ग्रुप" पर जाएं:

Chrome DevTools में, दिलचस्पी के ग्रुप का स्क्रीनशॉट

इसके बाद, अलग-अलग तरह की नीलामियों को सिम्युलेट करने के लिए, "कंट्रोल" पैनल में मौजूद बटन पर क्लिक करें.

B&A से ब्राउज़र में रेंडर किया गया विज्ञापन

अगर B&A सेवाएं और लोकल टेस्टिंग ऐप्लिकेशन सही तरीके से सेट अप किए गए हैं, तो पिछला विज्ञापन "पब्लिशर साइट के iframe" पैनल में रेंडर किया जाता है.

5.3 लोकल टेस्टिंग ऐप्लिकेशन की नीलामी का कॉन्फ़िगरेशन

साथ में काम करने वाले लोकल टेस्टिंग ऐप्लिकेशन में, इन लोगों को होस्ट किया जाता है. इनके बीच अंतर, पोर्ट नंबर से किया जाता है. किसी दूसरे पोर्ट को क्रॉस-ऑरिजिन माना जाता है:

भागीदार

ब्यौरा

पोर्ट

विज्ञापन देने वाला

पेज पर डीएसपी टैग लोड करता है

4001

प्रकाशक

पेज पर एसएसपी टैग लोड करता है

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-A और DSP-B, डिवाइस पर होने वाली नीलामियों में हिस्सा लेते हैं
  • DSP-X और DSP-Y, बिडिंग और ऑप्टिमाइज़ेशन नीलामियों में हिस्सा लेते हैं

चार एसएसपी हैं और हर सेलर एक अलग नीलामी कॉन्फ़िगरेशन चलाता है:

  • SSP-OD, सिर्फ़ डिवाइस पर होने वाली नीलामी चलाता है
  • SSP-BA सिर्फ़ B&A नीलामी चलाता है
  • SSP-MIX मिक्स्ड-मोड नीलामी चलाता है
  • SSP-TOP एक से ज़्यादा सेलर वाली नीलामी करता है
    • SSP-OD/BA/MIX, SSP-TOP की मल्टी-सेलर नीलामी में कॉम्पोनेंट सेलर के तौर पर हिस्सा लेते हैं

पूरी जानकारी के लिए, डिज़ाइन डायग्राम देखें.

5.4 बिडिंग और नीलामी सेवाओं का कॉन्फ़िगरेशन

इस कोडलैब में, हम एक साथ बीए और एबी के दो सेट चलाते हैं.

सेट करें

सेवा

भागीदार

ba-dev नेटवर्क पता

सेट A

बिडिंग सेवा

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 ब्रिज नेटवर्क, Local Testing ऐप्लिकेशन की सेटअप स्क्रिप्ट से बनाया जाता है. B&A सेवाओं को 192.168.84.0 के सबनेट में एक आईपी पता असाइन किया जाता है.

उदाहरण के लिए, ऐप्लिकेशन से सेट A के 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 ज़्यादा जानें