इस प्रोजेक्ट के बारे में
ChaosSQL डेटाबेस कॉन्करेंसी दोषों के लिए बनाया गया एक टेस्टिंग टूल है। इसके README के अनुसार, यह PostgreSQL, MySQL और SQLite के लिए डिटरमिनिस्टिक कॉन्करेंसी और इनवेरिएंट टेस्टिंग करता है, और इसका उद्देश्य प्रोडक्शन में पहुँचने से पहले CI/CD में साइलेंट डेटा करप्शन, राइट स्क्यू और लॉस्ट अपडेट को उजागर करना है।
यह कैसे काम करता है
यह प्रोजेक्ट एक स्कीमा और सीड डेटासेट के विरुद्ध कॉन्करेंट वर्कर ट्रांजेक्शन को शेड्यूल करता है, निष्पादन के बाद उपयोगकर्ता-परिभाषित इनवेरिएंट्स की जाँच करता है, और उल्लंघन होने पर एक न्यूनतम रिप्रोडक्शन (minimal reproduction) तैयार करता है। यह एक डिटरमिनिस्टिक सीड और एक सिंथेसाइज्ड Go रिप्रोडक्शन टेस्ट फाइल (repro_test.go) रिपोर्ट करता है जिसे टेस्ट सूट में जोड़ा जा सकता है। README बताता है कि आउटपुट में लॉस्ट अपडेट (P4) और राइट स्क्यू (A5B) जैसे विसंगति वर्गीकरण शामिल हैं।
इंटरफेस
CLI: स्टैंडअलोन बाइनरी को go install github.com/bregaldahq/chaossql/cmd/chaossql के साथ इंस्टॉल किया जाता है और इसमें शून्य CGO डिपेंडेंसी हैं। दस्तावेज़ित सबकमांड्स में run, demo, ui, diff, mutate, swarm और proxy शामिल हैं।
डेमो: दस पैकेज्ड परिदृश्य बैंकिंग लॉस्ट अपडेट, इन्वेंट्री ओवरसेल, हॉस्पिटल राइट स्क्यू, रीड स्क्यू, डर्टी राइट, सर्कुलर इंफॉर्मेशन फ्लो, डर्टी रीड, एंटी-डिपेंडेंसी, डेडलॉक साइकिल्स और फॉरेन की कैस्केड डेडलॉक्स को कवर करते हैं।
UI: एक लोकल ट्रेस विजुअलाइज़र जिसमें वर्कर स्विमलेन टाइमलाइन, एक इंटरैक्टिव Adya डिपेंडेंसी ग्राफ, फुल ट्रेस और श्रंक मिनिमल रिप्रोडक्शन के बीच तुलना, और एक स्टेटमेंट इंस्पेक्टर है जो SQL, पैरामीटर्स और लेटेंसी दिखाता है।
SDKs: एक Go पैकेज (pkg/chaostest) go test के साथ एकीकृत होता है; pip से इंस्टॉल किया गया एक Python पैकेज pytest और unittest के साथ काम करता है और एक pytest फिक्स्चर प्रदान करता है; एक TypeScript पैकेज (npm पर at-chaossql-test) Vitest, Jest और Node.js टेस्ट रनर को लक्षित करता है।
रिपोर्टिंग: GitHub कोड स्कैनिंग के लिए SARIF 2.1.0 एक्सपोर्ट, जिसमें नियम CWE-362 से मैप किए गए हैं।
CI: एक GitHub Action (bregaldahq/chaossql, README में v1.5.0 के रूप में संदर्भित) इनवेरिएंट विफलता पर पुल रिक्वेस्ट को ब्लॉक कर सकता है, PR कमेंट्स पोस्ट कर सकता है और न्यूनतम निष्पादन ट्रेस वाला स्टेप समरी प्रकाशित कर सकता है।
मल्टी-इंजन और म्यूटेशन फीचर्स
mutate देरी (delays) में बदलाव करके, नेस्टेड सेवपॉइंट्स इंजेक्ट करके, कॉज़ली वैलिड ट्रांजेक्शन स्टेप्स को शफल करके और लॉक एक्विजिशन ऑर्डर को उलटकर एक परिदृश्य के वेरिएंट्स जेनरेट करता है; यह वेरिएंट्स, आउटपुट डायरेक्टरी, सीड और JSON फ्लैग्स को एक्सपोज़ करता है।
swarm कई ड्राइवरों (sqlite, mock, postgres, mysql) पर बाउंडेड कॉन्करेंसी, वैकल्पिक मार्कडाउन सारांश और JSON आउटपुट के साथ परिदृश्य सूट चलाता है। ड्राइवर DSNs को POSTGRES_DSN और MYSQL_DSN एनवायरनमेंट वेरिएबल्स से रिज़ॉल्व किया जाता है।
एक हेडलेस WebAssembly और Web Worker स्ट्रेस हार्नेस का वर्णन एक make टारगेट के माध्यम से किया गया है, जिसका लक्ष्य लंबे स्ट्रेस रन के दौरान बाउंडेड लीनियर मेमोरी और नॉन-ब्लॉकिंग ग्राफ लेआउट है।
लेयर-7 प्रॉक्सी
chaossql proxy एक एप्लिकेशन और डेटाबेस के बीच स्थित होता है, PostgreSQL 3.0 या MySQL वायर प्रोटोकॉल का उपयोग करता है, और माइक्रो-जिटर और प्री-कमिट बैरियर इंजेक्ट करता है, जबकि एक लाइव शैडो डिपेंडेंसी सीरियलाइजेशन ग्राफ बनाता है जो वास्तविक समय में विसंगतियों को वर्गीकृत करता है। यह SARIF एक्सपोर्ट कर सकता है और कॉन्फ़िगर करने योग्य पोर्ट पर JSON टेलीमेट्री के साथ एक वेब UI सर्व कर सकता है। README बताता है कि इसका उपयोग करने के लिए एप्लिकेशन कोड को संशोधित करने की आवश्यकता नहीं है।
प्रोजेक्ट विवरण
यह Go (बैज के अनुसार 1.22 या नया) में लिखा गया है, MIT लाइसेंस प्राप्त है, जिसमें एक डॉक्यूमेंटेशन पोर्टल, ब्राउज़र-आधारित WebAssembly प्लेग्राउंड और कमांड्स में संदर्भित एक उदाहरण डायरेक्टरी है। README एक होस्टेड क्लाउड सर्विस का भी उल्लेख करता है जिसमें अर्ली एक्सेस के रूप में बेसलाइन ट्रैकिंग और पुल रिक्वेस्ट कमेंट्स हैं, साथ ही वेंडर द्वारा व्यावसायिक कॉन्करेंसी ऑडिट की पेशकश की गई है; ये वेंडर सेवाएं हैं न कि ओपन रिपॉजिटरी के घटक।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.