All Projects → CZ-NIC → deckard

CZ-NIC / deckard

Licence: BSD-2-Clause License
DNS test harness

Programming Languages

python
139335 projects - #7 most used programming language
Jinja
831 projects
shell
77523 projects
Augeas
11 projects
Vim Script
2826 projects

Projects that are alternatives of or similar to deckard

karate
Test Automation Made Simple
Stars: ✭ 6,384 (+22700%)
Mutual labels:  testing-tools, testing-framework
api-test
🌿 A simple bash script to test JSON API from terminal in a structured and organized way.
Stars: ✭ 53 (+89.29%)
Mutual labels:  testing-tools, testing-framework
laika
Log, test, intercept and modify Apollo Client's operations
Stars: ✭ 99 (+253.57%)
Mutual labels:  mock, testing-tools
PixelTest
Fast, modern, simple iOS snapshot testing written purely in Swift.
Stars: ✭ 56 (+100%)
Mutual labels:  testing-tools, testing-framework
rtf
Regression testing framework
Stars: ✭ 35 (+25%)
Mutual labels:  testing-tools, testing-framework
nim-contra
Lightweight Self-Documenting Design by Contract Programming and Security Hardened mode.
Stars: ✭ 46 (+64.29%)
Mutual labels:  testing-tools, testing-framework
eaf-linter
🤪 A linter, prettier, and test suite that does everything as-simple-as-possible.
Stars: ✭ 17 (-39.29%)
Mutual labels:  testing-tools, testing-framework
mocat
🐈 Mocat is a mocking toolbar that allows you to interactively develop and test network requests.
Stars: ✭ 27 (-3.57%)
Mutual labels:  mock, testing-tools
IO-TESTER
A functional test framework
Stars: ✭ 32 (+14.29%)
Mutual labels:  testing-tools, testing-framework
extensiveautomation-server
Extensive Automation server
Stars: ✭ 19 (-32.14%)
Mutual labels:  testing-tools, testing-framework
test junkie
Highly configurable testing framework for Python
Stars: ✭ 72 (+157.14%)
Mutual labels:  testing-tools, testing-framework
karate-runner
VSCode Extension for Karate
Stars: ✭ 23 (-17.86%)
Mutual labels:  testing-tools, testing-framework
eat
Json based scenario testing tool(which can have test for functional and non-functional)
Stars: ✭ 41 (+46.43%)
Mutual labels:  testing-tools, testing-framework
main
Mocks Server monorepo
Stars: ✭ 109 (+289.29%)
Mutual labels:  mock, testing-tools
ts-mock-imports
Intuitive mocking library for Typescript class imports
Stars: ✭ 103 (+267.86%)
Mutual labels:  mock, testing-tools
AutoMeter-API
AutoMeter-API是一款针对分布式服务,微服务API功能和性能一体的自动化测试平台,一站式解决应用,服务,API,环境管理,用例,条件,测试场景,计划,测试报告,功能/性能测试兼容支持的一体化工作平台
Stars: ✭ 105 (+275%)
Mutual labels:  testing-tools, testing-framework
oz
Oz is a behavioral web-ui testing framework developed to reduce test maintenance by using a predictive model rather than a scriptive model when writing tests.
Stars: ✭ 23 (-17.86%)
Mutual labels:  testing-tools, testing-framework
ruby-dns-mock
DNS mock server written on 💎 Ruby. Mimic any DNS records for your test environment with fake DNS server.
Stars: ✭ 50 (+78.57%)
Mutual labels:  mock, testing-tools
dubbo-mock
dubbo mock web server
Stars: ✭ 62 (+121.43%)
Mutual labels:  mock, testing-tools
kheera-testrunner-android
BDD Framework for Android
Stars: ✭ 18 (-35.71%)
Mutual labels:  testing-tools, testing-framework

DNS test harness (Deckard)

Deckard is a DNS software testing tool that creates a controlled network environment for reproducible tests.

In essence, it works like this:

  • Deckard runs given binaries as subprocesses in an isolated network environment.
  • When binaries are up, Deckard sends scripted queries and checks replies.
  • When a binary attempts to contact another server, Deckard intercepts the communication and replies with scripted answer.
  • Deckard can simulate network issues, DNS environment changes, and fake time (for DNSSEC validation tests).

No changes to real network setup are required because all network communications are made in a network namespace.

Test cases are described by scenarios that contain:

  • A declarative description of the environment (e.g. what queries can the binary under test make and what Deckard should answer)
  • A sequence of queries (and expected answers), and other events (e.g. time jumps forward)

Requirements

Deckard requires following software to be installed:

  • Python >= 3.6
  • Linux kernel >= 3.8
  • augeas - library for editing configuration files
  • dnspython - DNS library for Python
  • Jinja2 - template engine for generating config files
  • PyYAML - YAML parser for Python
  • python-augeas - Python bindings for augeas API
  • pytest - testing framework for Python, used for running the test cases
  • pytest-xdist - module for pytest for distributed testing
  • pyroute2 - Python netlink library (managing IP addresses, routes,…)
  • dumpcap - command line tool for network capture (part of Wireshark)
  • faketime_ - used for faking the time in tests of DNSSEC

Compatibility

Deckard uses user and network namespaces to simulate the network environment so only Linux (with kernel version 3.8 or newer) is supported. It however is possible to run Deckard on other platforms in Docker. Just note that your container has to run as --priviledged for the namespaces to run properly.

Usage

License

See LICENSE file.

Acknowledgments

The test scenario design and a lot of tests were written by NLnet Labs for testbound suite used by Unbound (BSD licensed). We are grateful that testbound authors are willing to discuss further Deckard development.

The original test case format is described in the header file replay.h distributed with Unbound.

Contacting us

Please report problems to our GitLab: https://gitlab.nic.cz/knot/deckard/issues

If you have any comments feel free to send e-mail to [email protected]! Do not get confused by the name, we are happy if you want to use Deckard with any software.

Happy testing.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].