- संपूर्ण परीक्षण किट (सूट, लाइव, Docker): परीक्षण
- अपडेट और Plugin पैकेज सत्यापन: अपडेट और Plugin का परीक्षण
एजेंट डिफ़ॉल्ट
एजेंट सत्र केवल विश्वसनीय स्रोत के लिए और मौजूदा निर्भरता इंस्टॉलेशन तैयार होने पर स्थानीय रूप से एक/कुछ केंद्रित परीक्षण और कम लागत वाली स्थिर जाँच चलाते हैं। अविश्वसनीय रिपॉज़िटरी टूलिंग को कभी भी स्थानीय रूप से निष्पादित न करें। बड़े सूट, typecheck/lint फ़ैन-आउट वाले परिवर्तित गेट, बिल्ड, Docker, पैकेज लेन, E2E, लाइव प्रमाण और क्रॉस-प्लेटफ़ॉर्म सत्यापन Crabbox के माध्यम से दूरस्थ रूप से चलते हैं। विश्वसनीय मेंटेनर के भारी प्रमाण के लिए डिफ़ॉल्ट Blacksmith Testbox है। कॉन्फ़िगर किया गया Testbox वर्कफ़्लो क्रेडेंशियल हाइड्रेट करता है, इसलिए अविश्वसनीय योगदानकर्ता या फ़ोर्क कोड को इसके बजाय सीक्रेट-रहित फ़ोर्क CI या सैनिटाइज़ किया हुआ प्रत्यक्ष AWS Crabbox उपयोग करना चाहिए। अनुमानित कार्य के लिए पहले से वार्म-अप न करें। जब पहला भारी कमांड तैयार हो, तब बैकएंड को लेज़ी रूप से प्राप्त करें, बाद के भारी कमांड के लिए लौटाई गईtbx_... आईडी का
पुनः उपयोग करें, प्रत्येक रन पर वर्तमान चेकआउट सिंक करें और हैंडऑफ़ से पहले उसे रोकें।
पहले सफल पुनः उपयोग के बाद, रैपर लीज़ के बेस,
निर्भरता और Testbox वर्कफ़्लो फ़िंगरप्रिंट को .crabbox/testbox-leases/ के अंतर्गत रिकॉर्ड करता है।
केवल स्रोत में किए गए संपादन वार्म किए गए बॉक्स का पुनः उपयोग जारी रखते हैं। परिवर्तित मर्ज बेस, लॉकफ़ाइल,
पैकेज-मैनेजर इनपुट, रैपर या Testbox वर्कफ़्लो बंद स्थिति में विफल होता है और इसके लिए
नई लीज़ आवश्यक होती है। प्रत्येक रन फिर भी वर्तमान चेकआउट को सिंक करता है।
OPENCLAW_TESTBOX_ALLOW_STALE=1 केवल जानबूझकर किए जाने वाले निदान के लिए है,
रिलीज़ प्रमाण के लिए नहीं।
नीचे दिए गए स्थानीय परीक्षण कमांड मानवीय वर्कफ़्लो और सीमित एजेंट प्रमाण के लिए हैं।
दूरस्थ प्रदाता की अनुपलब्धता की रिपोर्ट करना आवश्यक है; यह
व्यापक स्थानीय गेट को चुपचाप चलाने की अनुमति नहीं है।
अविश्वसनीय भारी प्रमाण के लिए, --provider aws के साथ लेज़ी रूप से वार्म करें। प्रत्येक रन को
CRABBOX_ENV_ALLOW=CI सेट करना, --provider aws --no-hydrate पास करना और
निर्भरताएँ इंस्टॉल करने या परीक्षण चलाने से पहले एक नए अस्थायी दूरस्थ HOME का उपयोग करना
आवश्यक है। उस अविश्वसनीय स्रोत के लिए समर्पित नई वार्म की गई लीज़ का उपयोग करें; किसी
विश्वसनीय या पहले हाइड्रेट की गई लीज़ का कभी पुनः उपयोग न करें। स्वच्छ विश्वसनीय
main चेकआउट से इंस्टॉल किया गया विश्वसनीय Crabbox बाइनरी लॉन्च करें और केवल दूरस्थ PR को
--fresh-pr के साथ फ़ेच करें; अविश्वसनीय चेकआउट के रैपर या कॉन्फ़िग को कभी स्थानीय रूप से निष्पादित न करें।
CRABBOX_AWS_INSTANCE_PROFILE को अनसेट करें और तब तक बंद स्थिति में विफल हों, जब तक समाधान किया गया
aws.instanceProfile खाली न हो। किसी भी इंस्टॉल/परीक्षण से पहले, IMDSv2 टोकन आवश्यक बनाने,
IAM क्रेडेंशियल एंडपॉइंट द्वारा 404 लौटाना प्रमाणित करने और यह सत्यापित करने के लिए विश्वसनीय
निरपेक्ष-पथ टूल का उपयोग करें कि दूरस्थ git rev-parse HEAD पूर्ण
समीक्षित PR हेड SHA के बराबर है। लीज़ को उस SHA से बाँधें और हेड
बदलने पर उसे रोककर फिर से वार्म करें। स्वच्छ
main से विश्वसनीय scripts/crabbox-untrusted-bootstrap.sh को --fresh-pr के साथ अपलोड करें; यह पिन किए गए Node/pnpm को इंस्टॉल करता है, SHA
और पैकेज-मैनेजर पिन को सत्यापित करता है, HOME को पृथक करता है, निर्भरताएँ इंस्टॉल करता है और फिर
अनुरोधित परीक्षण निष्पादित करता है। यदि ब्रोकर कोई भूमिका न होना प्रमाणित नहीं कर सकता या कोई दूरस्थ PR मौजूद नहीं है,
तो सीक्रेट-रहित फ़ोर्क CI का उपयोग करें। hydrate-github, --no-sync या
क्रेडेंशियल-हाइड्रेटेड Testbox वर्कफ़्लो का उपयोग न करें।
सभी CRABBOX_TAILSCALE* ओवरराइड अनसेट करें, --network public --tailscale=false बाध्य करें, एग्ज़िट-नोड/LAN फ़्लैग साफ़ करें और कोई स्क्रिप्ट अपलोड करने से पहले crabbox inspect से
बिना किसी Tailscale स्थिति वाली सार्वजनिक नेटवर्किंग की रिपोर्ट करना आवश्यक बनाएँ।
नियमित स्थानीय क्रम
- परिवर्तित-स्कोप Vitest प्रमाण के लिए
pnpm test:changed। - एक फ़ाइल, डायरेक्टरी या स्पष्ट लक्ष्य के लिए
pnpm test <path-or-filter>। - केवल तभी
pnpm test, जब आपको जानबूझकर पूर्ण स्थानीय Vitest सूट की आवश्यकता हो।
pnpm test* / pnpm check* / pnpm crabbox:run से बचते हैं:
- तैयार निर्भरताओं के साथ सीमित केंद्रित प्रमाण:
node scripts/run-vitest.mjs <path-or-filter>। - पहले वर्गीकृत करने वाली परिवर्तित जाँच:
node scripts/check-changed.mjs; केवल दस्तावेज़, कोई परिवर्तन नहीं और छोटी मेटाडेटा योजनाएँ निर्भरताएँ तैयार होने पर स्थानीय रहती हैं, जबकि भारी या निर्भरता-रहित योजनाएँ Testbox को सौंप दी जाती हैं। - स्पष्ट रखी गई लीज़ का व्यापक प्रमाण:
node scripts/crabbox-wrapper.mjs run --provider blacksmith-testbox ... -- env OPENCLAW_CHECK_CHANGED_REMOTE_CHILD=1 OPENCLAW_CHANGED_LANES_RAW_SYNC=1 corepack pnpm check:changed, ताकि pnpm Testbox के भीतर चले। - रैपर का अंतिम
exitCodeऔर टाइमिंग JSON कमांड का परिणाम हैं। सफल SSH कमांड के बाद सौंपा गया Blacksmith GitHub Actions रनcancelledदिखा सकता है, क्योंकि Testbox को कीपअलाइव एक्शन के बाहर से रोका जाता है; इसे विफलता मानने से पहले रैपर सारांश और कमांड आउटपुट जाँचें। OPENCLAW_HEAVY_CHECK_LOCK_SCOPE=worktree <local-heavy-check command>:pnpm check:changedऔर लक्षितpnpm test ...जैसे कमांड के लिए भारी-जाँच क्रमबद्धता को Git कॉमन डायरेक्टरी के बजाय वर्तमान वर्कट्री के भीतर रखता है। इसका उपयोग केवल उच्च-क्षमता वाले स्थानीय होस्ट पर करें, जब आप जानबूझकर लिंक की गई वर्कट्री में स्वतंत्र जाँच चलाते हैं।
मुख्य कमांड
परीक्षण रैपर रन एक संक्षिप्त[test] passed|failed|skipped ... in ... सारांश के साथ समाप्त होते हैं; Vitest की अपनी अवधि पंक्ति प्रति-शार्ड विवरण बनी रहती है।
साझा परीक्षण स्थिति और प्रक्रिया सहायक
src/test-utils/openclaw-test-state.ts: Vitest से इसका उपयोग तब करें, जब किसी परीक्षण को पृथकHOME,OPENCLAW_STATE_DIR,OPENCLAW_CONFIG_PATH, कॉन्फ़िग फ़िक्स्चर, वर्कस्पेस, एजेंट डायरेक्टरी या ऑथ-प्रोफ़ाइल स्टोर की आवश्यकता हो।pnpm test:env-mutations:report: ऐसे परीक्षणों/हार्नेस की नॉन-ब्लॉकिंग रिपोर्ट, जोHOME,OPENCLAW_STATE_DIR,OPENCLAW_CONFIG_PATH,OPENCLAW_WORKSPACE_DIRया संबंधित env कुंजियों को सीधे बदलते हैं। साझा परीक्षण-स्थिति सहायक के लिए माइग्रेशन उम्मीदवार खोजने हेतु इसका उपयोग करें।test/helpers/openclaw-test-instance.ts: एक ही स्थान पर चल रहे Gateway, CLI env, लॉग कैप्चर और क्लीनअप की आवश्यकता वाले प्रक्रिया-स्तरीय E2E परीक्षण।scripts/lib/docker-e2e-image.shको सोर्स करने वाले Docker/Bash E2E लेन कंटेनर मेंdocker_e2e_test_state_shell_b64 <label> <scenario>पास कर सकते हैं और उसेscripts/lib/openclaw-e2e-instance.shसे डीकोड कर सकते हैं; मल्टी-होम स्क्रिप्टdocker_e2e_test_state_function_b64पास कर सकती हैं और प्रत्येक प्रवाह मेंopenclaw_test_state_create <label> <scenario>को कॉल कर सकती हैं।node scripts/lib/openclaw-test-state.mjs -- create --label <name> --scenario <name> --env-file <path> --jsonसोर्स की जा सकने वाली होस्ट env फ़ाइल लिखता है (createसे पहले का--नए Node रनटाइम को--env-fileको Node फ़्लैग मानने से रोकता है)। Gateway लॉन्च करने वाले लेन एंट्रीपॉइंट रिज़ॉल्यूशन, मॉक OpenAI स्टार्टअप, फ़ोरग्राउंड/बैकग्राउंड लॉन्च, तत्परता जाँच, स्थिति env एक्सपोर्ट, लॉग डंप और प्रक्रिया क्लीनअप के लिएscripts/lib/openclaw-e2e-instance.shको सोर्स कर सकते हैं।
Control UI, TUI और एक्सटेंशन लेन
- मॉक किया गया Control UI E2E:
pnpm test:ui:e2eVitest + Playwright लेन चलाता है, जो Vite Control UI शुरू करता है और मॉक किए गए Gateway WebSocket के विरुद्ध वास्तविक Chromium पेज संचालित करता है। परीक्षणui/src/**/*.e2e.test.tsमें हैं; साझा मॉक/नियंत्रणui/src/test-helpers/control-ui-e2e.tsमें हैं।pnpm test:e2eमें यह लेन शामिल है। लक्षित प्रमाण सहित, एजेंट रन डिफ़ॉल्ट रूप से Testbox/Crabbox का उपयोग करते हैं; केवल स्पष्ट स्थानीय फ़ॉलबैक के लिएnode scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner ui/src/ui/e2e/chat-flow.e2e.test.tsका उपयोग करें। - TUI PTY परीक्षण:
node scripts/run-vitest.mjs run --config test/vitest/vitest.tui-pty.config.tsतेज़ नकली-बैकएंड PTY लेन चलाता है।OPENCLAW_TUI_PTY_INCLUDE_LOCAL=1याpnpm tui:pty:test:watch --mode localधीमाtui --localस्मोक चलाता है, जो केवल बाहरी मॉडल एंडपॉइंट को मॉक करता है। अपरिष्कृत ANSI स्नैपशॉट के बजाय स्थिर दृश्यमान टेक्स्ट या फ़िक्स्चर कॉल का अभिकथन करें। pnpm test:extensionsऔरpnpm test extensionsसभी एक्सटेंशन/Plugin शार्ड चलाते हैं। भारी चैनल Plugin, ब्राउज़र Plugin और OpenAI समर्पित शार्ड के रूप में चलते हैं; अन्य Plugin समूह बैच में रहते हैं।pnpm test extensions/<id>एक बंडल किया गया Plugin लेन चलाता है।- सिबलिंग परीक्षणों वाली स्रोत फ़ाइलें, व्यापक डायरेक्टरी ग्लॉब पर फ़ॉलबैक करने से पहले, उस सिबलिंग से मैप होती हैं।
src/channels/plugins/contracts/test-helpers,src/plugin-sdk/test-helpers, औरsrc/plugins/contractsके अंतर्गत हेल्पर संपादन, निर्भरता पथ सटीक होने पर हर शार्ड को व्यापक रूप से चलाने के बजाय आयात करने वाले परीक्षणों को चलाने के लिए स्थानीय आयात ग्राफ़ का उपयोग करते हैं। - कॉन्ट्रैक्ट डायरेक्टरी लक्ष्य अपनी कॉन्ट्रैक्ट लेन में विभाजित होते हैं:
pnpm test src/channels/plugins/contractsचार चैनल कॉन्ट्रैक्ट कॉन्फ़िग चलाता है औरpnpm test src/plugins/contractsPlugin कॉन्ट्रैक्ट कॉन्फ़िग चलाता है, क्योंकि सामान्यchannels/pluginsप्रोजेक्टcontracts/**को बाहर रखते हैं। auto-replyतीन समर्पित कॉन्फ़िग (core,top-level,reply) में विभाजित होता है, ताकि रिप्लाई हार्नेस हल्के शीर्ष-स्तरीय स्टेटस/टोकन/हेल्पर परीक्षणों पर हावी न हो।- चयनित
plugin-sdkऔरcommandsपरीक्षण फ़ाइलें समर्पित हल्की लेन से रूट होती हैं, जो केवलtest/setup.tsको रखती हैं और रनटाइम-भारी मामलों को उनकी मौजूदा लेन पर छोड़ती हैं। - बेस Vitest कॉन्फ़िग डिफ़ॉल्ट रूप से
pool: "threads"औरisolate: falseका उपयोग करता है, और साझा गैर-पृथक रनर सभी रिपॉज़िटरी कॉन्फ़िग में सक्षम रहता है। pnpm test:channelsvitest.channels.config.tsचलाता है।
Gateway और E2E
- Gateway इंटीग्रेशन वैकल्पिक रूप से सक्षम होता है:
OPENCLAW_TEST_INCLUDE_GATEWAY=1 pnpm testयाpnpm test:gateway। pnpm test:e2e: रिपॉज़िटरी E2E समुच्चय =pnpm test:e2e:gateway && pnpm test:ui:e2e।pnpm test:e2e:gateway: Gateway एंड-टू-एंड स्मोक परीक्षण (मल्टी-इंस्टेंस WS/HTTP/Node पेयरिंग)।vitest.e2e.config.tsमें अनुकूली वर्करों के साथ डिफ़ॉल्ट रूप सेthreads+isolate: false;OPENCLAW_E2E_WORKERS=<n>से समायोजित करें, औरOPENCLAW_E2E_VERBOSE=1से विस्तृत लॉग सक्षम करें।pnpm test:live: प्रोवाइडर लाइव परीक्षण (Claude/Minimax/DeepSeek/z.ai/आदि,*.live.test.tsद्वारा नियंत्रित)। स्किप हटाने के लिए API कुंजियाँ औरLIVE=1(याOPENCLAW_LIVE_TEST=1) आवश्यक हैं;OPENCLAW_LIVE_TEST_QUIET=0से विस्तृत आउटपुट सक्षम करें।
पूर्ण Docker सुइट (pnpm test:docker:all)
साझा लाइव-परीक्षण इमेज बनाता है, OpenClaw को एक बार npm टारबॉल के रूप में पैक करता है, एक न्यूनतम Node/Git रनर इमेज और उस टारबॉल को /app में इंस्टॉल करने वाली कार्यात्मक इमेज बनाता/पुनः उपयोग करता है, फिर भारित शेड्यूलर के माध्यम से Docker स्मोक लेन चलाता है। scripts/package-openclaw-for-docker.mjs एकमात्र स्थानीय/CI पैकेज पैकर है और Docker द्वारा उपयोग किए जाने से पहले टारबॉल तथा dist/postinstall-inventory.json को सत्यापित करता है।
- न्यूनतम इमेज (
OPENCLAW_DOCKER_E2E_BARE_IMAGE): इंस्टॉलर/अपडेट/Plugin-निर्भरता लेन; कॉपी किए गए रिपॉज़िटरी स्रोतों के बजाय पहले से बने टारबॉल को माउंट करती है। - कार्यात्मक इमेज (
OPENCLAW_DOCKER_E2E_FUNCTIONAL_IMAGE): सामान्य निर्मित-ऐप कार्यक्षमता लेन। - लेन परिभाषाएँ:
scripts/lib/docker-e2e-scenarios.mjs। प्लानर:scripts/lib/docker-e2e-plan.mjs। एक्ज़ीक्यूटर:scripts/test-docker-all.mjs। node scripts/test-docker-all.mjs --plan-jsonDocker बनाए या चलाए बिना शेड्यूलर-स्वामित्व वाली CI योजना (लेन, इमेज प्रकार, पैकेज/लाइव-इमेज आवश्यकताएँ, स्टेट परिदृश्य, क्रेडेंशियल जाँच) उत्सर्जित करता है।
संसाधन सीमाओं के लिए पर्यावरण चर पैटर्न
OPENCLAW_DOCKER_ALL_<RESOURCE>_LIMIT है (संसाधन नाम अपरकेस में, गैर-अल्फ़ान्यूमेरिक वर्ण _ में संकुचित)।
अन्य व्यवहार: रनर डिफ़ॉल्ट रूप से Docker की प्रीफ़्लाइट जाँच करता है, पुराने OpenClaw E2E कंटेनर साफ़ करता है, संगत लेन के बीच प्रोवाइडर CLI टूल कैश साझा करता है, और पहली विफलता के बाद नई पूल की गई लेन शेड्यूल करना बंद कर देता है, जब तक OPENCLAW_DOCKER_ALL_FAIL_FAST=0 सेट न हो। यदि कम-समानांतरता वाले होस्ट पर कोई लेन प्रभावी भार/संसाधन सीमा से अधिक हो जाती है, तो भी वह खाली पूल से शुरू होकर क्षमता जारी करने तक अकेले चल सकती है। प्रति-लेन लॉग, summary.json, failures.json, और चरण समय-निर्धारण .artifacts/docker-tests/<run-id>/ के अंतर्गत लिखे जाते हैं; धीमी लेन की जाँच के लिए pnpm test:docker:timings <summary.json> और कम लागत वाले लक्षित पुनः-रन कमांड प्रिंट करने के लिए pnpm test:docker:rerun <run-id|summary.json|failures.json> का उपयोग करें।
उल्लेखनीय Docker लेन
स्थानीय PR गेट
स्थानीय PR लैंडिंग/गेट जाँच के लिए चलाएँ:pnpm check:changedpnpm checkpnpm check:test-typespnpm buildpnpm testpnpm check:docs
pnpm test कभी-कभार विफल हो, तो उसे प्रतिगमन मानने से पहले एक बार पुनः चलाएँ, फिर pnpm test <path/to/test> से पृथक करें। सीमित मेमोरी वाले होस्ट के लिए:
OPENCLAW_VITEST_MAX_WORKERS=1 pnpm testOPENCLAW_VITEST_FS_MODULE_CACHE_PATH=/tmp/openclaw-vitest-cache pnpm test:changed
परीक्षण प्रदर्शन टूलिंग
pnpm test:perf:imports: स्पष्ट फ़ाइल/डायरेक्टरी लक्ष्यों के लिए सीमित लेन रूटिंग का उपयोग जारी रखते हुए Vitest आयात-अवधि + आयात-विवरण रिपोर्टिंग सक्षम करता है।pnpm test:perf:imports:changedउसी प्रोफ़ाइलिंग कोorigin/mainके बाद बदली गई फ़ाइलों तक सीमित करता है।pnpm test:perf:changed:bench -- --ref <git-ref>समान कमिट किए गए git अंतर के लिए रूट किए गए changed-mode पथ का नेटिव रूट-प्रोजेक्ट रन से बेंचमार्क करता है;pnpm test:perf:changed:bench -- --worktreeपहले कमिट किए बिना वर्तमान वर्कट्री परिवर्तन सेट का बेंचमार्क करता है।pnpm test:perf:profile:mainVitest मुख्य थ्रेड के लिए CPU प्रोफ़ाइल लिखता है (.artifacts/vitest-main-profile);pnpm test:perf:profile:runnerयूनिट रनर के लिए CPU + हीप प्रोफ़ाइल लिखता है (.artifacts/vitest-runner-profile)।pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/baseline-before.json: प्रत्येक पूर्ण-सुइट Vitest लीफ़ कॉन्फ़िगरेशन को क्रमिक रूप से चलाता है और समूहबद्ध अवधि डेटा के साथ प्रति-कॉन्फ़िगरेशन JSON/लॉग आर्टिफ़ैक्ट लिखता है। पूर्ण-सुइट रिपोर्ट डिफ़ॉल्ट रूप से फ़ाइलों को पृथक करती हैं, ताकि पिछली फ़ाइलों से बने रहे मॉड्यूल ग्राफ़ और GC विराम बाद के अभिकथनों में न जोड़े जाएँ; साझा-वर्कर संचय की जानबूझकर प्रोफ़ाइलिंग करते समय ही-- --no-isolateपास करें। Test Performance Agent धीमे परीक्षणों को ठीक करने का प्रयास करने से पहले इसे अपनी आधाररेखा के रूप में उपयोग करता है।pnpm test:perf:groups:compare .artifacts/test-perf/baseline-before.json .artifacts/test-perf/after-agent.jsonप्रदर्शन-केंद्रित परिवर्तन के बाद समूहबद्ध रिपोर्ट की तुलना करता है।- पूर्ण, एक्सटेंशन और include-pattern शार्ड रन
.artifacts/vitest-shard-timings.jsonमें स्थानीय समय डेटा अपडेट करते हैं; बाद के संपूर्ण-कॉन्फ़िगरेशन रन धीमे और तेज़ शार्ड संतुलित करने के लिए इन समयों का उपयोग करते हैं। Include-pattern CI शार्ड समय कुंजी में शार्ड का नाम जोड़ते हैं, जिससे फ़िल्टर किए गए शार्ड के समय संपूर्ण-कॉन्फ़िगरेशन समय डेटा को प्रतिस्थापित किए बिना दिखाई देते रहते हैं। स्थानीय समय आर्टिफ़ैक्ट को अनदेखा करने के लिएOPENCLAW_TEST_PROJECTS_TIMINGS=0सेट करें।
बेंचमार्क
मॉडल विलंबता (scripts/bench-model.ts)
मॉडल विलंबता (scripts/bench-model.ts)
MINIMAX_API_KEY, MINIMAX_BASE_URL, MINIMAX_MODEL, ANTHROPIC_API_KEY। डिफ़ॉल्ट प्रॉम्प्ट: “केवल एक शब्द में उत्तर दें: ok. कोई विराम-चिह्न या अतिरिक्त टेक्स्ट नहीं।”CLI स्टार्टअप (scripts/bench-cli-startup.ts)
CLI स्टार्टअप (scripts/bench-cli-startup.ts)
startup:--version,--help,health,health --json,status --json,statusreal:health,status,status --json,sessions,sessions --json,tasks --json,tasks list --json,tasks audit --json,agents list --json,gateway status,gateway status --json,gateway health --json,config get gateway.portall: दोनों प्रीसेट संयुक्त रूप से
sampleCount, औसत, p50, p95, न्यूनतम/अधिकतम, निकास-कोड/सिग्नल वितरण और अधिकतम RSS शामिल होते हैं। --cpu-prof-dir / --heap-prof-dir प्रत्येक रन के लिए V8 प्रोफ़ाइल लिखते हैं।सहेजा गया आउटपुट: pnpm test:startup:bench:smoke, .artifacts/cli-startup-bench-smoke.json लिखता है; pnpm test:startup:bench:save, .artifacts/cli-startup-bench-all.json (runs=5 warmup=1) लिखता है। चेक-इन किया गया फ़िक्स्चर: test/fixtures/cli-startup-bench.json, जिसे pnpm test:startup:bench:update द्वारा रीफ़्रेश और pnpm test:startup:bench:check द्वारा तुलना किया जाता है।Gateway स्टार्टअप (scripts/bench-gateway-startup.ts)
Gateway स्टार्टअप (scripts/bench-gateway-startup.ts)
डिफ़ॉल्ट रूप से केस आईडी:
dist/entry.js पर निर्मित CLI एंट्री का उपयोग होता है; पहले pnpm build चलाएँ। इसके बजाय स्रोत रनर को मापने के लिए --entry scripts/run-node.mjs पास करें और उन परिणामों को निर्मित-एंट्री बेसलाइन से अलग रखें।default, skipChannels (चैनल स्टार्टअप छोड़ा गया), oneInternalHook, allInternalHooks, fiftyPlugins (50 मैनिफ़ेस्ट Plugin), fiftyStartupLazyPlugins (50 स्टार्टअप-लेज़ी मैनिफ़ेस्ट Plugin)।आउटपुट में पहला प्रोसेस आउटपुट, /healthz, /readyz, HTTP लिसन लॉग समय, Gateway तैयार लॉग समय, CPU समय, CPU कोर अनुपात, अधिकतम RSS, हीप, स्टार्टअप ट्रेस मेट्रिक्स, इवेंट-लूप विलंब और Plugin लुकअप-टेबल के विस्तृत मेट्रिक्स शामिल होते हैं। स्क्रिप्ट चाइल्ड Gateway परिवेश में OPENCLAW_GATEWAY_STARTUP_TRACE=1 सेट करती है।/healthz लाइवनेस है (HTTP सर्वर उत्तर दे सकता है)। /readyz उपयोग योग्य तत्परता है (स्टार्टअप Plugin साइडकार, चैनल और रेडी-क्रिटिकल पोस्ट-अटैच कार्य स्थिर हो चुके हैं)। स्टार्टअप हुक असिंक्रोनस रूप से डिस्पैच होते हैं और तत्परता की गारंटी का हिस्सा नहीं हैं। तैयार लॉग समय Gateway का आंतरिक टाइमस्टैम्प है, जो प्रोसेस-पक्षीय एट्रिब्यूशन के लिए उपयोगी है, लेकिन बाहरी /readyz प्रोब का विकल्प नहीं है।परिवर्तनों की तुलना करते समय JSON आउटपुट या --output का उपयोग करें। --cpu-prof-dir का उपयोग केवल तब करें, जब ट्रेस आउटपुट इंपोर्ट, कंपाइल या CPU-बाउंड कार्य की ओर संकेत करे जिसे केवल चरण समय से समझाया नहीं जा सकता।Gateway रीस्टार्ट (scripts/bench-gateway-restart.ts)
Gateway रीस्टार्ट (scripts/bench-gateway-restart.ts)
केवल macOS और Linux (इन-प्रोसेस रीस्टार्ट के लिए SIGUSR1 का उपयोग करता है; Windows पर तुरंत विफल होता है)। ऊपर दिए गए Gateway स्टार्टअप के समान निर्मित-एंट्री डिफ़ॉल्ट और केस आईडी:
--entry scripts/run-node.mjs ओवरराइड।skipChannels, skipChannelsAcpxProbe (ACPX स्टार्टअप प्रोब चालू), skipChannelsNoAcpxProbe (प्रोब बंद), default, fiftyPlugins।आउटपुट में अगला /healthz, अगला /readyz, डाउनटाइम, रीस्टार्ट तत्परता समय, CPU, RSS, प्रतिस्थापन प्रोसेस के स्टार्टअप ट्रेस मेट्रिक्स और सिग्नल प्रबंधन, सक्रिय-कार्य निकासी, बंद करने के चरणों, अगले स्टार्ट, तत्परता समय तथा मेमोरी स्नैपशॉट के रीस्टार्ट ट्रेस मेट्रिक्स शामिल होते हैं। स्क्रिप्ट OPENCLAW_GATEWAY_STARTUP_TRACE=1 और OPENCLAW_GATEWAY_RESTART_TRACE=1 सेट करती है।जब कोई परिवर्तन रीस्टार्ट सिग्नलिंग, क्लोज़ हैंडलर, रीस्टार्ट के बाद स्टार्टअप, साइडकार शटडाउन, सेवा हैंडऑफ़ या रीस्टार्ट के बाद तत्परता को प्रभावित करता हो, तब इस बेंचमार्क का उपयोग करें। Gateway यांत्रिकी को चैनल स्टार्टअप से अलग करने के लिए skipChannels से शुरू करें; default या Plugin-बहुल केसों का उपयोग केवल तब करें, जब संकीर्ण केस रीस्टार्ट पथ को स्पष्ट कर दे। ट्रेस मेट्रिक्स एट्रिब्यूशन संकेत हैं, निर्णय नहीं — रीस्टार्ट परिवर्तन का मूल्यांकन कई नमूनों, मेल खाते स्वामी स्पैन, /healthz//readyz व्यवहार और उपयोगकर्ता को दिखाई देने वाले रीस्टार्ट अनुबंध के आधार पर करें।ऑनबोर्डिंग E2E (Docker)
वैकल्पिक; केवल कंटेनरीकृत ऑनबोर्डिंग स्मोक परीक्षणों के लिए आवश्यक। स्वच्छ Linux कंटेनर में पूर्ण कोल्ड-स्टार्ट प्रवाह:openclaw health चलाता है।