Skip to main content

Downloads PyPI PyPI versions GitHub Discussion Code style: Ruff Tests

Fake Network Operating Systems - FakeNOS

"Reality is merely an illusion, albeit a very persistent one."

~ Albert Einstein

FakeNOS created to simulate Network Operating Systems interactions.

Documentation

Why?

Crucial aspect of writing applications or scripts for Network Automation is testing, often testing done using physical or virtual instances of network appliances running certain version of Network Operating System (NOS). That approach, while gives best integration results, in many cases carries a lot of overhead to set up, run and tear down as well as putting significant burden on compute and storage resource utilization.

Other approach is to mock underlying libraries methods to fool applications under testing into believing that it is getting output from real devices. That approach works very well for unit testing, but fails to simulate such aspects as connection establishment and handling.

FakeNOS positions itself somewhere in the middle between full integration testing and testing that mocks device interactions. FakeNOS allows to create NOS plugins to produce pre-defined output to test applications behavior while running servers to establish connections with.

What?

FakeNOS can:

  • Run thousands of servers to stress test applications
  • Simulate Network Operating Systems Command Line Interface (CLI) interactions
  • Provide high-level API to create custom NOS plugins
  • Run in docker container to simplify integration with your infrastructure
  • Make use of FakeNOS CLI tool for quick run and prototype simulations
  • Work on Windows, macOS, and Linux across supported Python versions

How?

Send input and get the output - this is how we interact with many Network Operating Systems, FakeNOS allows to pre-define the output to sent in response to certain input commands, making it ideal for isolated feature testing.

FakeNOS is a micro-kernel framework that can be extended using plugins. The core is kept small and optimized while most of the functionality offloaded to plugins.

FakeNOS has these pluggable systems:

  • Server Plugins - plugins responsible for running various servers to connect with
  • Shell Plugins - plugins to simulate command line interface shell
  • NOS plugins - plugins to simulate Network Operating System commands

What not?

FakeNOS is a simulator, it does not emulate any of Network Control, Data or Management planes, it merely takes the commands as input and responds with predefined output.

FakeNOS inspired by and borrowed from

  • sshim - library for testing and debugging SSH automation clients
  • PythonSSHServerTutorial - tutorial on creating paramiko based SSH server
  • fake-switches - pluggable switch/router command-line simulator
  • ncs-netsim - tool to simulate a network of devices
  • cisshgo - concurrent SSH server to emulate network equipment for testing purposes
  • scrapli-replay - tools to enable easy testing of SSH programs and to create semi-interactive SSH servers

Metadata

Release files for fakenos 1.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fakenos 1.2.1
File Size Uploaded
fakenos-1.2.1.tar.gz 358.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fakenos 1.2.1
File Interpreter ABI Platform
fakenos-1.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 742.3 kB

Release files / fakenos-1.2.1.tar.gz

Download URL fakenos-1.2.1.tar.gz
Size 358.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d5c13e0a2f71343a112f970b7341ffa6ca24da18cb4e88ec6a3db4205b11939f
BLAKE2b-256 checksum
How to use checksums
b9c63d12a22e6954d8066da9d17e6a9ccf246b934b21dfa662a7e6f370a4db5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / fakenos-1.2.1-py3-none-any.whl

Download URL fakenos-1.2.1-py3-none-any.whl
Size 384.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5fed6eb3eddc15f3f0050d5f0bd147b4b2455e85dc436412e8adcfcb8cc8eae4
BLAKE2b-256 checksum
How to use checksums
fa090a08ef5544ee54303b88e5819bbf733274f6473d895a30bac98fe872d3bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

1.2.1 This release

2 release files

1.2.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page