Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
duckdb — Jepsen-आधारित DuckDB के लिए लेन-देन संबंधी सहीता परीक्षण ढांचा, यादृच्छिक कार्यभार और Elle जांचकर्ता के माध्यम से G2-item और SSI उल्लंघन जैसे पृथक्करण विसंगतियों का पता लगाता है। | Kitploit
उपकरण/GitHubGitHub/jepsen-io/duckdb
भेद्यता विश्लेषणपेपर और शोधलर्निंग और शिक्षाडेटाबेस सुरक्षाविसंगति का पता लगाना
GitHubjepsen-io/duckdb

duckdb

Jepsen-आधारित DuckDB के लिए लेन-देन संबंधी सहीता परीक्षण ढांचा, यादृच्छिक कार्यभार और Elle जांचकर्ता के माध्यम से G2-item और SSI उल्लंघन जैसे पृथक्करण विसंगतियों का पता लगाता है।

रिपॉजिटरी देखें
525 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Jepsen DuckDB Test

Jepsen tests for the DucKDB database. यह एक रिमोट क्लस्टर के बजाय स्थानीय रूप से चलता है। यह परीक्षण स्थानीय प्रक्रियाओं का एक समूह उत्पन्न करता है जो स्थानीय रूप से एक DuckDB फ़ाइल खोलते हैं, और उनके साथ STDIN/STDOUT पर इंटरैक्ट करता है।

यह एक प्रारंभिक प्रोटोटाइप है। यह चालू होता है, लेन-देन चलाता है, उनकी सत्यता की जांच करता है, और बग रिपोर्ट करता है, लेकिन मुझे यकीन नहीं है कि वे बग वास्तविक हैं या नहीं।

Installation

आपको JDK (21+), Git, Gnuplot, Graphviz, और Leiningen की आवश्यकता होगी। अधिकांश Jepsen परीक्षणों के विपरीत, यह पूरी तरह से स्थानीय रूप से चलता है; आपको मशीनों का क्लस्टर, SSH कुंजियाँ आदि की आवश्यकता नहीं है।

Debian

root@kitploit:~
sudo apt install openjdk leiningen gnuplot graphviz

OS X

root@kitploit:~
brew install openjdk leiningen gnuplot graphviz

Usage

परीक्षण चलाने के लिए, प्रयास करें:

root@kitploit:~
lein run test

DuckDB (मुझे संदेह है) डिफ़ॉल्ट रूप से स्ट्रॉन्ग SI प्रदान करता है, और परीक्षण यही जांचता है। हालांकि, यह G2-item की अनुमति देता है, जो रिपीटेबल रीड का उल्लंघन है। इसे प्रदर्शित करने के लिए, प्रयास करें:

root@kitploit:~
lein run test --time-limit 10 --expected-consistency-model serializable --max-writes-per-key 8

हम दस सेकंड के लिए परीक्षण करने, सीरियलाइज़ेबिलिटी के उल्लंघनों की तलाश करने, और (छोटे, पढ़ने योग्य उदाहरण उत्पन्न करने के लिए) प्रति कुंजी केवल 8 तत्व लिखने का अनुरोध कर रहे हैं। G2-item के उदाहरण store/latest/elle/G2-item में उपलब्ध होने चाहिए।

कई ट्यूनिंग विकल्प उपलब्ध हैं। विभिन्न विकल्पों के लिए सहायता lein run test --help के माध्यम से उपलब्ध है।

परीक्षण परिणाम store/<test-name>/<date>/ में लिखे जाते हैं, और store/latest के रूप में सिमलिंक किए जाते हैं। इनमें से प्रत्येक परीक्षण निर्देशिका स्व-निहित है; आप इसे कॉपी कर सकते हैं, टार कर सकते हैं, बाद में विश्लेषण कर सकते हैं, हटा सकते हैं, इत्यादि। आप परिणाम ब्राउज़ करने के लिए एक वेब सर्वर भी चला सकते हैं।

root@kitploit:~
lein run serve

एक REPL उपलब्ध है; lein repl देखें।

Structure

परीक्षण हार्नेस इस निर्देशिका में है; इसकी प्रोजेक्ट फ़ाइल project.clj है, इसका स्रोत src/ में है, इत्यादि।

परीक्षण हार्नेस एक अलग प्रोग्राम चलाता है, "local node", जो DuckDB लाइब्रेरी को एम्बेड करता है और उसके विरुद्ध लेन-देन करता है। परीक्षण हार्नेस दिए गए वर्कलोड के लिए यादृच्छिक लेन-देन उत्पन्न करता है, उन्हें HTTP पर लोकल नोड को सबमिट करता है, और उन लेन-देन के परिणामों को जर्नल करता है, अंत में विभिन्न लेन-देन संबंधी विसंगतियों की जांच करता है। हम एले चेकर (https://github.com/jepsen-io/elle) का उपयोग करके स्ट्रॉन्ग स्नैपशॉट आइसोलेशन की तलाश करते हैं।

लोकल नोड में एक छोटा HTTP सर्वर है जो परीक्षण हार्नेस से अमूर्त लेन-देन (जैसे "read key x, then set y to 5") प्राप्त करता है, और उन्हें DuckDB JDBC ड्राइवर के विरुद्ध चलने वाले लेन-देन में अनुवादित करता है।

हम एक प्रकार की खराबी इंजेक्ट कर सकते हैं: प्रक्रिया को मारना।

Workloads

हमारे पास दो वर्कलोड हैं।

पहला, append, ऐसे लेन-देन चलाता है जो सूचियों में अद्वितीय पूर्णांक जोड़ते हैं, और उन सूचियों की सामग्री पढ़ते हैं। प्रत्येक सूची एक एकल पंक्ति में रहती है, जो कई तालिकाओं में फैली होती है। सूचियों की पहचान प्राथमिक कुंजी या एक अनुक्रमित द्वितीयक कुंजी द्वारा की जाती है। सूचियाँ या तो टेक्स्ट फ़ील्ड या DuckDB INTEGER{]} सूचियों के रूप में एन्कोडेड होती हैं। उत्परिवर्तन INSERT ON CONFLICT UPDATE या MERGE INTO के साथ किया जाता है।

दूसरा, fkey-register, पूर्णांक रजिस्टरों को पढ़ना और लिखना करता है। DuckDB में, हम उन रजिस्टरों को दो तालिकाओं में संग्रहीत करते हैं। एक logical तालिका, एक विदेशी कुंजी के साथ, कुंजियों को भौतिक ID में मैप करती है। एक physical तालिका भौतिक ID को मानों में मैप करती है। हम पढ़ने के लिए दोनों के बीच एक सीधा JOIN का उपयोग करते हैं। लेखन या तो भौतिक पंक्ति को अपडेट करके, या एक नई भौतिक पंक्ति बनाकर और उसके लिए लॉजिकल पॉइंटर को बदलकर किया जाता है। मैंने आज ही इस वर्कलोड को चालू किया; यह चलता है, लेकिन यह अभी तक पॉलिश नहीं हुआ है।

License

Copyright © 2026 Jepens, LLC

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0.

This Source Code may also be made available under the following Secondary Licenses when the conditions for such availability set forth in the Eclipse Public License, v. 2.0 are satisfied: GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version, with the GNU Classpath Exception which is available at https://www.gnu.org/software/classpath/license.html.

टूल डाउनलोड करें