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

1. परिचय

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

खरीदार की पिछली गतिविधियां:

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

सेलर स्टैक:

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

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

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

इस कोडलैब में, हम B&A Local Testing App का इस्तेमाल करेंगे.

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

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

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

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

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

2.3 कंपैनियन लोकल टेस्टिंग ऐप्लिकेशन शुरू करें

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

Local Testing App repository को नीचे खींचें:

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 सेवाओं के दो सेट चलाएंगे. इसलिए, हम रिपॉज़िटरी को दो अलग-अलग फ़ोल्डर में डाउनलोड करेंगे.

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

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 (gcp) के लिए, चारों सेवाओं की डेवलपमेंट बिल्ड (non_prod) का local इंस्टेंस बनाया जाएगा. अगर ज़रूरी हो, तो अपनी पसंद की क्लाउड सेवा देने वाली कंपनी के लिए --platform फ़्लैग अपडेट करें. बिल्ड फ़्लैग के बारे में ज़्यादा जानने के लिए, build_and_test_all_docker फ़ाइल देखें.

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

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

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

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

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

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

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

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

ध्यान दें कि Local Testing App सर्वर को पहले से ही किसी दूसरी प्रोसेस में चालू होना चाहिए, क्योंकि बिडिंग और स्कोरिंग स्क्रिप्ट, ऐप्लिकेशन से ही दिखाई जाएंगी.

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

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

BUYER_KV_SERVER_ADDR=https://192.168.84.100:5003/kv \

BIDDING_SERVER_ADDR=192.168.84.101:50057 \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bfe

SSP-BA नीलामी सेवा

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

AUCTION_JS_URL="https://192.168.84.100:6002/score-ad.js" \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_auction

SSP-BA एसएफ़ई सेवा

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

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

AUCTION_SERVER_ADDR="192.168.84.103:50061" \

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

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

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

3.3.2 सेट B के निर्देश

सेवा

निर्देश

DSP-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 बीएफ़ई सेवा

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

BUYER_KV_SERVER_ADDR=https://192.168.84.100:5004/kv \

BIDDING_SERVER_ADDR=192.168.84.201:50057 \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_bfe

SSP-BA नीलामी सेवा

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

AUCTION_JS_URL="https://192.168.84.100:6003/score-ad.js" \

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_auction

SSP-BA एसएफ़ई सेवा

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

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

AUCTION_SERVER_ADDR="192.168.84.203:50061" \

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

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

SKIP_TLS_VERIFICATION=true \

./tools/debug/start_sfe

3.3.2 लोकल स्टार्ट स्क्रिप्ट के लिए एनवायरमेंट वैरिएबल

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

एनवायरमेंट वैरिएबल

उपलब्धता

ब्यौरा

DOCKER_RUN_ARGS_STRING

सभी सेवाएं

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

SKIP_TLS_VERIFICATION

सभी सेवाएं

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

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

PS_VERBOSITY

सभी सेवाएं

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

BIDDING_PORT

बिडिंग सेवा

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

BIDDING_JS_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 सेवा

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

BIDDING_SERVER_ADDR

BFE सेवा

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

AUCTION_PORT

नीलामी सेवा

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

AUCTION_JS_URL

नीलामी सेवा

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

BUYER_REPORT_WIN_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 सेवा

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

SELLER_ORIGIN_DOMAIN

SFE सेवा

विक्रेता का देश

BUYER_SERVER_ADDRS_JSON

SFE सेवा

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

4. कमांड लाइन से Secure Invoke की जांच करना

4.1 एसएफ़ई की टेस्टिंग

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

4.1.2 एसएफ़ई 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]"
          }
        ]
      }
    }
  }
}

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

4.1.2 Secure Invoke का इस्तेमाल करके 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 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"
}

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

4.2.2 Secure Invoke का इस्तेमाल करके 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 एसएफ़ई लॉग की जांच करना

टर्मिनल पर जाएं और एसएफ़ई लॉग देखें. हम आउटपुट में मौजूद कुछ अहम लॉग के बारे में बताएंगे.

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, बिड के साथ जवाब देता है:

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 SFE से SelectAd जवाब

एसएफ़ई का SelectAd जवाब एन्क्रिप्ट (सुरक्षित) किया जाता है और इसे एसएएस को भेजा जाता है:

I1210 21:20:47.298428      33 select_ad_reactor.cc:1413]  (generationId: c2824bfc-d515-4a1a-9de9-7660ad963252) Encrypted SelectAdResponse:
auction_result_ciphertext: "\023\233\252\321\000\331M\327\216\201S\332kl?\322\255\247\312\375h\007W\367\016\366FR\364\275\377\326\027h\204\203\265\t\271-\333\266\tH\342\033F\001k\211C\026V\013\271\255(\236\273\353\260\275\007\346\027\340?\005|\235S\244\265\2563U\246\322\177%\200/\3175\034 \020\024\362\345\3263\356F.s\261\005\231\262Z\000\330x\0230\335>\"\217\254\010\254\330>\206\007\274\235\037`\370W\032\207\356\367\206\026\341.i\"$\370\367\2554i\247\354\304e\306\2466S\337\321w\327+!\316\035:\002\231\246\362\366qm\211\000\013\343\345\224{\365py\361\374\316\202\217-\244\302\331\216D\025W#.\304nH\235\315\311<#\342\344\324\257\354\2441\251\312\320\226\342\021\377>3`\347/\350\254h\306\273\023\365\340@\321\2412\254\323\213\0137,\013n\220|\211\323/\030)\314\263\223\355>\254\312aa`!\375\335\023Z\234p\206\037\001\355\261{$\025+\341\275\327Ny\342\342\264=\376\2138\224\026\2058\251\020\202\245*46\023\307)K\342\364k<\2104r\247\034\216}\034\001\374\215\363\210\026\275\371S>\031;f.b\260\363\257.\255\023I\341A\237*_T\355\262\005\344L\336D%\327\267@\302$\300\340\203c\350|\337>C\275c\260\202o\315xp\260\257\241\305U\nK\033\274L6\025\350\373a:\253\212&>p\210\215\017&^\327\005_\037\020\212\362\351\341\231@g\372\0037\275b:)\207\303d\243?\261O\266\343\214\200\004\247\372\022S\326\200\037\330\252r\257+e\273[\231\202\3625{\330\213\240\370\245\\\214\350/\313\ty/\004\313\0304k\223\354\374\305\233\264\224K\344\241\251\322?\323q6\314D\027\200\203\035]\023O\306\230?\203\237:\254\305\265\332\330\2641l\322\020\022\330O-\242\207>Q\364_{F\235\353tk\207\035\205\005\221\373\207\0143\035\014\322\240H\220\347%\262f\347\017\352\273\265\231\014\204\r\312\254z\000\340&\354\222\323\245\356\217(i\246"

5. ब्राउज़र से Local Test App की मदद से टेस्ट करना

5.1 Chrome खोलें

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

google-chrome --enable-privacy-sandbox-ads-apis --disable-features=EnforcePrivacySandboxAttestations,FledgeEnforceKAnonymity --enable-features=FledgeBiddingAndAuctionServerAPI,FledgeBiddingAndAuctionServer:FledgeBiddingAndAuctionKeyURL/https%3A%2F%2Fstorage.googleapis.com%2Fba-test-buyer%2Fcoordinator-test-key.json

इस फ़्लैग को, मॉक कोऑर्डिनेटर कुंजी को लोड करने के लिए सेट किया गया है. इसे हमने https://storage.googleapis.com/ba-test-buyer/coordinator-test-key.json पर होस्ट किया है

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

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

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

इस स्क्रीनशॉट में, ब्राउज़र में लोकल टेस्टिंग ऐप्लिकेशन को ऐक्सेस करते हुए दिखाया गया है ब्राउज़र में लोकल टेस्टिंग ऐप्लिकेशन का स्क्रीनशॉट

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

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

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

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

अगर B&A Services और Local Testing App को सही तरीके से सेट अप किया गया है, तो ऊपर दिया गया विज्ञापन "Publisher site 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, B&A की नीलामियों में हिस्सा लेते हैं

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

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

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

5.4 Bidding and Auction Services को कॉन्फ़िगर करना

इस कोडलैब में, हम दो 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

ऐप्लिकेशन

Local Testing App

सभी

https://192.168.84.100:PORT

  • सेट A में, खरीदार के लिए उपलब्ध सेवाओं का इस्तेमाल DSP-X करता है और सेलर के लिए उपलब्ध सेवाओं का इस्तेमाल SSP-BA करता है
  • सेट B में, खरीदार के लिए उपलब्ध सेवाओं का इस्तेमाल DSP-Y करता है और सेलर के लिए उपलब्ध सेवाओं का इस्तेमाल SSP-MIX करता है

लोकल टेस्टिंग ऐप्लिकेशन और B&A सेवाओं के बीच कम्यूनिकेट करने के लिए, Docker ब्रिज नेटवर्क का इस्तेमाल किया जाता है. ba-dev ब्रिज नेटवर्क, Local Testing App की सेटअप स्क्रिप्ट से बनाया जाता है. 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 ज़्यादा जानें