# networkload **Repository Path**: DwRolin/networkload ## Basic Information - **Project Name**: networkload - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-09 - **Last Updated**: 2021-11-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Networkload [![Build Status](https://travis-ci.com/snkas/networkload.svg?branch=master)](https://travis-ci.com/snkas/networkload) [![codecov](https://codecov.io/gh/snkas/networkload/branch/master/graph/badge.svg)](https://codecov.io/gh/snkas/networkload) This Python module encompasses functions used to generate workloads for networks. There is a distinction between topology and schedule generation. **THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. (see also the MIT License in ./LICENSE).** ## Installation **Requirements** * Python 3.6+ * `pip install numpy` **Option 1** ```bash $ pip install git+https://github.com/snkas/networkload.git ``` You can now include it using: `import networkload` **Option 2** Clone/download this Git repository. Then, execute the following to install the package locally: ```bash $ bash install_local.sh ``` You can now include it using: `import networkload` ## Getting started 1. Go to example directory: `cd example` 2. Run example: `python example.py` 3. This will generate two files: `topology.properties` and `schedule.csv` ## Current state **Topologies** * Fat-tree (symmetric or asymmetric aggregation-core links) * Leaf-spine * Plus-grid **Schedule** * From-to all-to-all * From-to random-pairing * Poisson arrival * Constant arrival * Constant flow size * Flow size from CDF (CDF database includes an interpretation of pFabric web search and pFabric data mining) ## Formats **Topology format (.properties)** ``` num_nodes= num_undirected_edges= switches=set() switches_which_are_tors=set() servers=set() undirected_edges=set() ``` ... with the following rules: * A node must be either a switch or a server * A switch can be a ToR * A server must have exactly one connection to a ToR * If there are no servers, only ToRs are valid endpoints for flows, else only servers are **Schedule format (.csv)** ``` flow_id,from_node_id,to_node_id,size_byte,start_time_ns,additional_parameters,metadata ``` ## Testing Run all tests (local version): ```bash $ python -m pytest ``` Run all tests (global pip-installed version): ```bash $ pytest ``` Calculate coverage locally (output in `htmlcov/`): ```bash $ bash calculate_coverage.sh ```