जांच स्क्रिप्ट
प्रोजेक्ट में डेवलपमेंट और टेस्टिंग में सहायता के लिए कई टेस्ट स्क्रिप्ट शामिल हैं:
Note
अतिदेय डीबगिंग, एसएमटीपी मैट्रिक्स टेस्टिंग और क्रॉन पोर्ट चेक के लिए लीगेसी रिपॉजिटरी-रूट pnpm सहायकों को हटा दिया गया। ऐप्लिकेशन यूआई (सेटिंग्स → बैकअप निगरानी), प्रमाणित HTTP APIs और क्रॉन सेवा के खिलाफ curl का उपयोग करें जैसा कि नीचे दस्तावेज़ीकृत है।
टेस्ट डेटा उत्पन्न करें
pnpm generate-test-data --servers=N
यह स्क्रिप्ट कई सर्वर और बैकअप के लिए टेस्ट बैकअप डेटा उत्पन्न करती है।
--servers=N पैरामीटर अनिवार्य है और उत्पन्न करने के लिए सर्वर की संख्या निर्दिष्ट करता है (1-30)।
/api/upload को --upload विकल्प का उपयोग करके भेजने के लिए उपयोग करें
pnpm generate-test-data --servers=N --upload
pnpm generate-test-data --servers=N --upload --api-key=YOUR_UPLOAD_KEY
--api-key आवश्यक है जब सेटिंग्स → API कुंजियाँ कुंजियों की आवश्यकता रखने के लिए सेट हो। स्क्रिप्ट HTTP 429 पर एक बार पुन: प्रयास करती है ताकि बड़ा --upload डिफ़ॉल्ट दर सीमा के भीतर रहे।
उदाहरण:
# Generate data for 5 servers
pnpm generate-test-data --servers=5
# Generate data for 1 server with upload mode
pnpm generate-test-data --upload --servers=1
# Generate data for all 30 servers
pnpm generate-test-data --servers=30
स्क्रिप्ट Duplicati संस्करणों को प्रति सर्वर असाइन करती है (उस सर्वर के लिए प्रत्येक बैकअप में एक ही रिपोर्ट स्ट्रिंग लिखी जाती है):
- 70–80% वर्तमान: उपलब्ध होने पर
configurations.duplicati_versionsसे नवीनतम कैश्ड स्थिर रिलीज का उपयोग करता है, अन्यथा एक पिन किया गया फ़ॉलबैक (2.1.0.5_stable)। - शेष पुराना: एक सख्त पिछला स्थिर संस्करण ताकि डैशबोर्ड बैज पुराने के रूप में तुलना करे (पीला)।
- डायरेक्ट-DB मोड पहले
configurationsको मिटा देता है, फिर संस्करण कैश को पुनर्स्थापित या सीड करता है ताकि वर्तमान/पुराना तुलना तुरंत काम करे। - छोटी संख्या हमेशा 70–80% में नहीं आ सकती:
--servers=1100% वर्तमान है;--servers=2या3कम से कम एक पुराना सर्वर रखता है;--servers=65 वर्तमान (83%) है।--servers=12(pnpm take-screenshotsद्वारा उपयोग किया गया) 9 वर्तमान / 3 पुराना है। - जब
pnpm take-screenshotsबाद में डेटासेट को तीन सर्वर तक कम करता है, तो यह संरक्षित अतिदेय सर्वर और कम से कम एक पुराने-संस्करण वाला सर्वर रखता है।
Caution
यह स्क्रिप्ट डेटाबेस में सभी पिछला डेटा को हटा देती है और इसे टेस्ट डेटा से बदल देती है। इस स्क्रिप्ट को चलाने से पहले अपने डेटाबेस का बैकअप लें।
अतिदेय जांच और क्रॉन कनेक्टिविटी (डेवलपमेंट)
अतिदेय बैकअप जांच चलाएं
जब ऐप चल रहा हो:
- यूआई (अनुशंसित): सेटिंग्स → बैकअप निगरानी खोलें और अतिदेय बैकअप की जांच करें का उपयोग करें। यह प्रमाणित
POST /api/notifications/check-overdueके माध्यम से निर्धारित कार्य के समान लॉजिक चलाता है।
क्रॉन सेवा स्वास्थ्य
curl http://localhost:8667/health
curl http://localhost:8666/api/cron/health
एक विशिष्ट तिथि या समय का सिमुलेशन करना
सिमुलेटेड "वर्तमान" समय इंजेक्ट करने के लिए कोई बंडल्ड CLI नहीं है। एल्गोरिदम और मैनुअल टेस्टिंग विचारों के लिए, रिपॉजिटरी फ़ाइल dev/OVERDUE_DETECTION_ALGORITHM.md और src/lib/overdue-backup-checker.ts में कार्यान्वयन देखें।
CSV निर्यात का सत्यापन करें
pnpm validate-csv-export
यह स्क्रिप्ट CSV निर्यात कार्यक्षमता का सत्यापन करती है। यह:
- CSV निर्यात जनरेशन का परीक्षण करता है
- डेटा प्रारूप और संरचना को सत्यापित करता है
- निर्यातित फ़ाइलों में डेटा अखंडता की जाँच करता है
रिलीज़ से पहले सुनिश्चित करने के लिए उपयोगी कि CSV निर्यात सही ढंग से काम करता है।
NTFY सर्वर को अस्थायी रूप से ब्लॉक करें (परीक्षण के लिए)
sudo ./scripts/temporary_ntfy.sh_block.sh
यह स्क्रिप्ट नोटिफिकेशन पुन: प्रयास तंत्र का परीक्षण करने के लिए NTFY सर्वर (ntfy.sh) पर आउटगोइंग नेटवर्क एक्सेस को अस्थायी रूप से ब्लॉक करती है। यह:
- NTFY सर्वर का आईपी पता समाधान करता है
- आउटगोइंग ट्रैफ़िक को ब्लॉक करने के लिए एक iptables नियम जोड़ता है
- 10 सेकंड के लिए ब्लॉक करता है (कॉन्फ़िगर करने योग्य)
- बाहर निकलने पर स्वचालित रूप से ब्लॉक नियम निकालता है
- रूट विशेषाधिकारों (sudo) की आवश्यकता है
Caution
यह स्क्रिप्ट iptables नियमों को संशोधित करती है और रूट विशेषाधिकारों की आवश्यकता है। केवल नोटिफिकेशन पुन: प्रयास तंत्र का परीक्षण करने के लिए उपयोग करें।
डेटाबेस माइग्रेशन परीक्षण
पुराने संस्करणों से वर्तमान संस्करण पर डेटाबेस माइग्रेशन का परीक्षण करने के लिए प्रोजेक्ट में स्क्रिप्ट शामिल हैं। ये स्क्रिप्ट सुनिश्चित करती हैं कि डेटाबेस माइग्रेशन सही ढंग से काम करता है और डेटा अखंडता को बनाए रखता है।
माइग्रेशन परीक्षण डेटा उत्पन्न करें
./scripts/generate-migration-test-data.sh
यह स्क्रिप्ट एप्लिकेशन के कई ऐतिहासिक संस्करणों के लिए परीक्षण डेटाबेस उत्पन्न करती है। यह:
- कोई मौजूदा डॉकर कंटेनर को रोकता है और हटा देता है
- प्रत्येक संस्करण के लिए (v0.4.0, v0.5.0, v0.6.1, 0.7.27, 0.8.21):
- मौजूदा डेटाबेस फ़ाइलों को हटा देता है
- एक संस्करण टैग फ़ाइल बनाता है
- विशिष्ट संस्करण के साथ एक डॉकर कंटेनर शुरू करता है
- कंटेनर के तैयार होने की प्रतीक्षा करता है
pnpm generate-test-dataका उपयोग करके परीक्षण डेटा उत्पन्न करता है- परीक्षण डेटा के साथ यूआई का एक स्क्रीनशॉट लेता है
- कंटेनर को रोकता है और हटा देता है
- WAL फ़ाइलों को फ्लश करता है और डेटाबेस स्कीमा सहेजता है
- डेटाबेस फ़ाइल को
scripts/migration_test_data/में कॉपी करता है
आवश्यकताएँ:
- डॉकर स्थापित और कॉन्फ़िगर किया जाना चाहिए
- क्रोमियम (प्लेव्राइट के माध्यम से) स्थापित किया जाना चाहिए
- डॉकर ऑपरेशन के लिए रूट/सुडो एक्सेस
- डॉकर वॉल्यूम
duplistatus_dataमौजूद होना चाहिए
आउटपुट:
- डेटाबेस फ़ाइलें:
scripts/migration_test_data/backups_<VERSION>.db - स्कीमा फ़ाइलें:
scripts/migration_test_data/backups_<VERSION>.schema - स्क्रीनशॉट:
scripts/migration_test_data/duplistatus_test_data_<VERSION>.png
कॉन्फ़िगरेशन:
- सर्वर की संख्या:
SERVERSचर के माध्यम से सेट करें (डिफ़ॉल्ट: 3) - डेटा निर्देशिका:
/var/lib/docker/volumes/duplistatus_data/_data - पोर्ट: 9666 (डॉकर कंटेनर पोर्ट)
Caution
इस स्क्रिप्ट को डॉकर की आवश्यकता है और मौजूदा कंटेनर को रोकेगा/हटा देगा। यह डॉकर ऑपरेशन और फ़ाइल सिस्टम एक्सेस के लिए सुडो एक्सेस की भी आवश्यकता है। यदि आपने पहले से ऐसा नहीं किया है तो प्लेव्राइट क्रोमियम ब्राउज़र स्थापित करने के लिए pnpm take-screenshots:install पहले चलाएँ।
Important
इस स्क्रिप्ट को केवल एक बार चलाना था, क्योंकि नए संस्करणों में डेवलपर सीधे डेटाबेस फ़ाइल और स्क्रीनशॉट को scripts/migration_test_data/ निर्देशिका में कॉपी कर सकता है। विकास के दौरान, माइग्रेशन का परीक्षण करने के लिए केवल ./scripts/test-migrations.sh स्क्रिप्ट चलाएँ।
डेटाबेस माइग्रेशन का परीक्षण करें
./scripts/test-migrations.sh
यह स्क्रिप्ट पुराने संस्करणों से वर्तमान संस्करण (4.0) पर डेटाबेस माइग्रेशन का परीक्षण करती है। यह:
- प्रत्येक संस्करण के लिए (v0.4.0, v0.5.0, v0.6.1, 0.7.27, 0.8.21):
- परीक्षण डेटाबेस की एक अस्थायी प्रति बनाता है
test-migration.tsका उपयोग करके माइग्रेशन प्रक्रिया चलाता है- माइग्रेट किए गए डेटाबेस संरचना को मान्य करता है
- आवश्यक तालिकाओं और कॉलम की जाँच करता है
- सत्यापित करता है कि डेटाबेस संस्करण 4.0 है
- अस्थायी फ़ाइलें साफ़ करता है
आवश्यकताएँ:
- परीक्षण डेटाबेस को
scripts/migration_test_data/में मौजूद होना चाहिए - पहले
generate-migration-test-data.shचलाकर उत्पन्न किया गया
आउटपुट:
- रंग-संकेतित परीक्षण परिणाम (पास के लिए हरा, विफलता के लिए लाल)
- पास हुए और विफल हुए संस्करणों का सारांश
- विफल माइग्रेशन के लिए विस्तृत त्रुटि संदेश
- यदि सभी परीक्षण पास हो जाते हैं तो एग्जिट कोड 0, यदि कोई विफल हो जाता है तो 1
यह क्या मान्य करता है:
- माइग्रेशन के बाद डेटाबेस संस्करण 4.0 है
- सभी आवश्यक तालिकाएँ मौजूद हैं:
servers,backups,configurations,users,sessions,audit_log,db_version - प्रत्येक तालिका में आवश्यक कॉलम मौजूद हैं
- डेटाबेस संरचना सही है
उदाहरण आउटपुट:
==========================================
Database Migration Test Suite
==========================================
Testing migrations from old versions to version 4.0
Test data directory: /path/to/migration_test_data
Temporary directory: /path/to/migration_test_data/.tmp
----------------------------------------
Testing version: v0.4.0
----------------------------------------
Copying database file to temporary location...
Running migration test...
✅ Version v0.4.0: Migration test PASSED
==========================================
Test Summary
==========================================
✅ Passed versions (5):
✓ v0.4.0
✓ v0.5.0
✓ v0.6.1
✓ 0.7.27
✓ 0.8.21
All migration tests passed!
उपयोग:
# Run all migration tests
./scripts/test-migrations.sh
# Check exit code
echo $? # 0 = all passed, 1 = some failed
Note
यह स्क्रिप्ट आंतरिक रूप से टाइपस्क्रिप्ट माइग्रेशन परीक्षण स्क्रिप्ट (test-migration.ts) का उपयोग करती है। परीक्षण स्क्रिप्ट माइग्रेशन के बाद डेटाबेस संरचना को मान्य करती है और डेटा अखंडता सुनिश्चित करती है।
एसएमटीपी और ईमेल (विकास)
सेटिंग्स → ईमेल के अंतर्गत एसएमटीपी कॉन्फ़िगर करें और ऐप के भीतर ईमेल परीक्षण और सूचना प्रवाह का उपयोग करें। पूर्ववर्ती pnpm set-smtp-test-config और pnpm test-smtp-connections सहायक स्क्रिप्ट्स को रिपॉजिटरी से हटा दिया गया था।
परीक्षण डॉकर एंट्रीपॉइंट स्क्रिप्ट
pnpm test-entrypoint
यह स्क्रिप्ट स्थानीय विकास में docker-entrypoint.sh के लिए एक परीक्षण व्रापर प्रदान करती है। यह एंट्रीपॉइंट लॉगिंग कार्यक्षमता का परीक्षण करने के लिए पर्यावरण सेट करती है और सुनिश्चित करती है कि लॉग data/logs/ में लिखे जाएं ताकि एप्लिकेशन उन तक पहुँच सके।
यह क्या करता है:
- हमेशा एक ताज़ा संस्करण बनाता है: परीक्षण से पहले एक ताज़ा बिल्ड बनाने के लिए स्वचालित रूप से
pnpm build-localचलाता है (पहले मैन्यल रूप से बिल्ड करने की आवश्यकता नहीं है) - क्रॉन सेवा बनाता है: सुनिश्चित करता है कि क्रॉन सेवा बनाई गई है (
dist/cron-service.cjs) - डॉकर जैसी संरचना सेट करता है: डॉकर वातावरण को नकल करने के लिए आवश्यक सिम्लिंक्स और निर्देशिका संरचना बनाता है
- एंट्रीपॉइंट स्क्रिप्ट चलाता है: उचित पर्यावरण चर के साथ
docker-entrypoint.shनिष्पादित करता है - सफाई करता है: बाहर निकलते समय स्वचालित रूप से अस्थायी फ़ाइलें हटा देता है
उपयोग:
# Run the test (builds fresh version automatically)
pnpm test-entrypoint
पर्यावरण चर:
PORT=8666- नेक्स्ट.जेएस सर्वर के लिए पोर्ट (start-localसे मेल खाता है)CRON_PORT=8667- क्रॉन सेवा के लिए पोर्टVERSION- स्वचालित रूप सेtest-YYYYMMDD-HHMMSSप्रारूप पर सेट किया गया
आउटपुट:
- लॉग
data/logs/application.logमें लिखे जाते हैं (एप्लिकेशन द्वारा पहुँच योग्य) - कंसोल आउटपुट एंट्रीपॉइंट स्क्रिप्ट निष्पादन दिखाता है
- स्टॉप करने और लॉग फ्लशिंग का परीक्षण करने के लिए Ctrl+C दबाएँ
आवश्यकताएँ:
- स्क्रिप्ट को रिपॉजिटरी रूट निर्देशिका से चलाना चाहिए (पीएनपीएम इसे स्वचालित रूप से संभालता है)
- स्क्रिप्ट स्वचालित रूप से सभी पूर्वापेक्षाओं को संभालती है (बिल्ड, क्रॉन सेवा, आदि)
उपयोग के मामले:
- डॉकर डिप्लॉयमेंट से पहले स्थानीय रूप से एंट्रीपॉइंट स्क्रिप्ट परिवर्तनों का परीक्षण करना
- लॉग रोटेशन और लॉगिंग कार्यक्षमता को सत्यापित करना
- ग्रेसफुल शटडाउन और सिग्नल हैंडलिंग का परीक्षण करना
- स्थानीय वातावरण में एंट्रीपॉइंट स्क्रिप्ट व्यवहार को डीबग करना
दैनिक सारांश सत्यापन
pnpm validate-daily-summary
डेली समरी शेड्यूलिंग (डीएसटी सहित), स्नैपशॉट एग्रीगेशन (केवल नवीनतम बैकअप जॉब्स), अतिरिक्त अधिसूचना-सेटिंग्स को हटाना, अनाथ बैकअप/सर्वर पंक्तियाँ, मार्कडाउन सैनिटाइज़ेशन, डिलीवरी-लेजर दावे और टेम्पलेट के साथ 4.1 → 4.2 माइग्रेशन के लिए निर्धारक जांच चलाता है। ईमेल या एनटीएफवाई नहीं भेजता है।