Coder Social home page Coder Social logo

vipulgupta2048 / exclave Goto Github PK

View Code? Open in Web Editor NEW

This project forked from exclave/exclave

0.0 0.0 0.0 374 KB

Exclave embedded service runner

License: BSD 3-Clause "New" or "Revised" License

Rust 82.90% PowerShell 15.74% C 0.44% Shell 0.91%

exclave's Introduction

Exclave: Factory Test Infrastructure

Exclave is a factory test infrastructure, written in Rust. Tests are designed to be easy to write in any language you care to, as Exclave will capture the output from your program and log it all. Once your test finishes, exit with a zero return code to indicate success, or nonzero to indicate failure.

Building

To build, install Rust. To build the latest release, run:

cargo install exclave

To build from source, check out this repository, change to the root directory, and run:

cargo build

Running

To run, you must specify a configuration directory with the "-c" argument. For example, if your configuration directory is in /etc/exclave, run:

exclave -c /etc/exclave

Or, if you're doing development and using cargo, run:

cargo run -- -c /etc/exclave

If exclave detects that it's connected to a terminal, you will be presented with a live view of all units. If it's not connected to a terminal (i.e. if it's running under systemd or init), then exclave will log all unit transitions to stdout, unless the "-q" option is specified.

Defining Configurations

An example configuration directory is present under "test/config". You can use this to get started. You can run it using "exclave -c test/config".

The unit configuration language is defined in doc/Units.md.

Writing Tests

Tests may be written in any language, but you must make sure the required interpreter (if any) is installed.

Log any progress to stdout, and log any error to stderr.

When a particular test has concluded, print the test result to stdout and exit. If the test was successful, exit 0. If the test failed, return nonzero.

Tests can time out, and if that occurs your test will first receive a SIGTERM. After a configurable amount of time, your test will receive a SIGKILL.

All tests are run in their own session, and are connected to a pseudoterminal (PTY). This will remove any buffering that would normally occur for things like printf.

Writing Interfaces, Loggers, and Triggers

Interfaces, Loggers, and Triggers all must interact with exclave using custom streams. The inter-process communication is documented in doc/IPC.md

exclave's People

Contributors

xobs avatar samvrlewis avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.