jpgneves / iota Goto Github PK
View Code? Open in Web Editor NEWiota (Inter-dependency Objective Testing Apparatus) - a tool to enforce clean separation of responsibilities in Erlang code
License: MIT License
iota (Inter-dependency Objective Testing Apparatus) - a tool to enforce clean separation of responsibilities in Erlang code
License: MIT License
As part of an optional, user-triggered check, iota could be able to verify application layers to ensure applications are interacting in a correct fashion among themselves beyond merely calling the correct APIs.
For example, consider an application X consisting of a web interface application W, business logic applications B1 and B2 and a datastore interface D, with a generic utilities application U that is shared by all of them.
The desired interactions are:
The layer definitions could be as such:
% Unspecified applications are not subject
% to the checks and can call or be called by every application.
% This is mostly to keep iota silent about third-party applications
% which generally are only called by user-defined applications.
% Layers are also specified in a top-down order.
% Each layer consists of a tuple with the layer name and the
% list of applications that belong to that layer.
{layers, [ {view, [w]},
{business, [b1, b2]},
{storage, [d]}
]}.
This information can be specified in the existing iota.config
file.
This check could be run using iota check_layers <path>
and would not be part of any default checks.
iota could produce artifacts describing the application (e.g. exposed API, git tag/commit) that can be used to inform dependency resolution systems to get exact dependencies for another application (e.g. "I want the latest version of application A that exposes foo/1 and bar/3").
iota could produce an SVG graph with all bad dependencies between applications, probably using annotated arrows describing the invalid call.
Your example doesn't work as priv/test_app1 doesn't get compiled. To make it work:
$ pushd priv/test_app1
$ ../../rebar compile
$ popd
and then
$ ./iota check priv/test_app1
works as expected.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.