OpenTMI / opentmi

OpenTMI (Test Management Infrastructure) Core
MIT License
21 stars 6 forks source link
addon automation ci inventory-management opentmi resource-management result-analysis results-viewer test-automation test-management testing

OpenTMI

Open Source Test Management Infrastructure for IoT and embedded world.

Build Status Test Coverage Docker ghcr

OpenTMI is Open Source Test Management System. It is written in Node.js and uses MongoDB as backing store. It is published in MIT license. OpenTMI is extremely customizable through addons.

Ideology

Basic idea is to store all information related to test execution to database, like software under test (SUT/Build), test logs, test cases (TC), and test related resources, like DUT's. That allows then much more intelligent and more efficient way to manage testing. Also it gives very valuable information when users can directly see what is tested in individual Device with individual Build. All information is linked together and can be analyzed very deeply.

Challenges with software testing in IoT hardware

OpenTMI try to solve these kind of challenges using "big-data".

Pre-requirements

Installation

From Dockers

docker pull opentmi/opentmi:latest mongo:latest
docker run -v "$(pwd)":/data --name mongo -d mongo mongod --smallfiles
docker run --name opentmi -p 3000:3000 --link mongo:mongo -d opentmi/opentmi

See here for more instructions.

Clone, install dependencies and start

Prepare

You need to install mongodb and run it. File mongod.sh contains simple script to start single mongod instance (db location ./db and logs ./db.logs) - that is not recommended for production usage.

> git clone --recursive https://github.com/OpenTMI/opentmi
> cd opentmi
> npm install
> npm start

or start without clustered mode

> node app

Note: Installation install also all addons dependencies so you doesn't need to worry about it.

Command line

$ npm start -- -h
Usage: npm start -- (options)

Options:
  --listen, -l            set binding interface                         [string]
  --https                 use https
  --port                  set listen port
  --verbose, -v           verbose level                                  [count]
  --silent, -s            Silent mode
  --log                   log path. Use "null" or "/dev/null" to supress file
                          logging                                       [string]
  --autoInstallAddonDeps  automatically install dependencies when startup server
                                                                 [default: true]
  --config, -c            config file          [string] [default: "config.json"]
  --db                    mongodb connection string                     [string]
  --auto-reload, -r       Automatically restart workers when changes detected in
                          server directory

db:

https: Generate self-signed ssl certifications:

NOTE: Not recommended to use self-signed certificates in production usage!

Clustered mode

OpenTMI support clustered mode which gives some benefits in production environment:

NOTE same can be achieved using load-balancer and systemd service for example. In such case you doesn't need to use cluster mode.

API documentation

Available here

Configuration

By default opentmi is started as development mode. You can configure environment using --config <file> -option.

note:

Architecture

Addons

Way to extend backend-service functionality. Addon registry (future plan) contains information about existing addons, which can easily to install via administrator API. More documentation can be found from here

Test

npm test

Contribution guidelines

See code-of-conduct

Production usage

Propose to use some service management tool which can restart service if it for some reason crashes.

You can use for example:

Who do I talk to?

License

MIT