منصوبے کے بارے میں
ChaosSQL ایک ٹیسٹنگ ٹول ہے جس کا مقصد ڈیٹا بیس concurrency کے نقائص کو دور کرنا ہے۔ اس کے README کے مطابق، یہ PostgreSQL، MySQL اور SQLite کے لیے deterministic concurrency اور invariant ٹیسٹنگ کرتا ہے، اور اس کا مقصد پروڈکشن تک پہنچنے سے پہلے CI/CD میں خاموش ڈیٹا کرپشن، write skew اور lost updates کو سامنے لانا ہے۔
یہ کیسے کام کرتا ہے
یہ پروجیکٹ ایک schema اور seed dataset کے خلاف concurrent worker transactions کو شیڈول کرتا ہے، ایگزیکیوشن کے بعد صارف کے بیان کردہ invariants کی جانچ کرتا ہے، اور کسی خلاف ورزی کی صورت میں، ایک minimal reproduction تیار کرتا ہے۔ یہ ایک deterministic seed اور ایک synthesized Go reproduction ٹیسٹ فائل (repro_test.go) فراہم کرتا ہے جسے ٹیسٹ سویٹ میں شامل کیا جا سکتا ہے۔ README کے مطابق، آؤٹ پٹس میں anomaly classification شامل ہے جیسے lost update (P4) اور write skew (A5B)۔
انٹرفیسز
CLI: اسٹینڈ الون بائنری کو go install github.com/bregaldahq/chaossql/cmd/chaossql کے ذریعے انسٹال کیا جاتا ہے اور اس میں کوئی CGO dependencies نہیں ہیں۔ دستاویزی subcommands میں run, demo, ui, diff, mutate, swarm اور proxy شامل ہیں۔
Demos: دس پیکج شدہ منظرنامے بینکنگ lost updates، انوینٹری oversell، ہسپتال write skew، read skew، dirty write، circular information flow، dirty read، anti-dependency، deadlock cycles اور foreign key cascade deadlocks کا احاطہ کرتے ہیں۔
UI: ایک مقامی trace visualizer جس میں worker swimlane timeline، ایک انٹرایکٹو Adya dependency graph، مکمل trace اور ایک shrunk minimal reproduction کے درمیان موازنہ، اور ایک statement inspector ہے جو SQL، پیرامیٹرز اور latencies دکھاتا ہے۔
SDKs: ایک Go پیکیج (pkg/chaostest) go test کے ساتھ ضم ہوتا ہے؛ ایک Python پیکیج جو pip سے انسٹال ہوتا ہے pytest اور unittest کے ساتھ کام کرتا ہے اور ایک pytest fixture فراہم کرتا ہے؛ ایک TypeScript پیکیج (npm پر at-chaossql-test) Vitest، Jest اور Node.js ٹیسٹ رنر کو ٹارگٹ کرتا ہے۔
Reporting: GitHub Code Scanning کے لیے SARIF 2.1.0 ایکسپورٹ، جس کے رولز CWE-362 سے منسلک ہیں۔
CI: ایک GitHub Action (bregaldahq/chaossql، جسے README میں v1.5.0 کے طور پر حوالہ دیا گیا ہے) invariant failure پر pull requests کو بلاک کر سکتا ہے، PR کمنٹس پوسٹ کر سکتا ہے اور ایک step summary شائع کر سکتا ہے جس میں minimal execution trace شامل ہو۔
Multi-engine اور mutation خصوصیات
mutate تاخیر (delays) میں تبدیلی، nested savepoints شامل کرنے، causally valid ٹرانزیکشن اسٹیپس کو ترتیب دینے، اور lock acquisition آرڈر کو الٹ کر ایک منظرنامے کے مختلف ورژن تیار کرتا ہے؛ یہ variants، آؤٹ پٹ ڈائریکٹری، seed اور JSON flags فراہم کرتا ہے۔
swarm کئی ڈرائیورز (sqlite, mock, postgres, mysql) پر scenario suites چلاتا ہے جس میں محدود concurrency، اختیاری Markdown summaries اور JSON آؤٹ پٹ ہوتا ہے۔ ڈرائیور DSNs کو POSTGRES_DSN اور MYSQL_DSN ماحول کے متغیرات (environment variables) سے حل کیا جاتا ہے۔
ایک headless WebAssembly اور Web Worker stress harness کو make target کے ذریعے بیان کیا گیا ہے، جس کے مقاصد bounded linear memory اور طویل stress runs کے دوران non-blocking graph layout کے گرد ہیں۔
Layer-7 proxy
chaossql proxy ایک ایپلی کیشن اور ڈیٹا بیس کے درمیان واقع ہوتا ہے، PostgreSQL 3.0 یا MySQL wire protocol بولتا ہے، اور micro-jitter اور pre-commit barriers شامل کرتا ہے جبکہ ایک لائیو shadow dependency serialization graph بناتا ہے جو حقیقی وقت میں anomalies کی درجہ بندی کرتا ہے۔ یہ SARIF ایکسپورٹ کر سکتا ہے اور ایک قابل ترتیب پورٹ پر JSON telemetry کے ساتھ ویب UI فراہم کر سکتا ہے۔ README کے مطابق، اسے استعمال کرنے کے لیے ایپلی کیشن کوڈ میں تبدیلی کی ضرورت نہیں ہے۔
پروجیکٹ کی تفصیلات
یہ Go (بیجز کے مطابق 1.22 یا اس سے نیا) میں لکھا گیا ہے، MIT لائسنس کے تحت ہے، جس میں ایک documentation پورٹل، براؤزر پر مبنی WebAssembly playground، اور ایک examples ڈائریکٹری ہے جس کا حوالہ کمانڈز میں دیا گیا ہے۔ README میں ایک ہوسٹڈ کلاؤڈ سروس کا ذکر ہے جس میں baseline tracking اور pull request کمنٹس ابتدائی رسائی کے طور پر دستیاب ہیں، ساتھ ہی وینڈر کی جانب سے کمرشل concurrency audits بھی پیش کیے جاتے ہیں؛ یہ وینڈر سروسز ہیں نہ کہ اوپن ریپوزٹری کے اجزاء۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.