OpenTMI (Test Management Infrastructure) Core
Open Source Test Management Infrastructure for IoT and embedded world.
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.
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.
OpenTMI try to solve these kind of challenges using “big-data”.
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.
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.
$ 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:
inmemory
as connection string uses in-memory mongodb server - for testing purpose.https:
Generate self-signed ssl certifications:
./scripts/gencerts.sh
--https
-options (npm start -- -https
)NOTE: Not recommended to use self-signed certificates in production usage!
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.
Available here
By default opentmi is started as development mode. You can configure environment using --config <file>
-option.
note:
"mongo"
options overwrites defaults and is pypassed to MongoClient."smtp"
options is pypassed to nodemailer transport configurations. To activate smpt use enabled
property.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
npm test
See code-of-conduct
Propose to use some service management tool which can restart service if it for some reason crashes.
You can use for example:
supervisor -wa . -n exit server.js
pm2 start --name opentmi index.js -- -vvv
linux systemd
see example service script
Note: if your service management is storing stdout
and stderr
to log
files - be sure that it is rotated properly to ensure that disk space doesn’t
cause trouble. By default OpenTMI store logs under log/
-folder, configured as
daily rotate.