{"id":19362658,"url":"https://github.com/imdea-software/tesslaserver","last_synced_at":"2026-05-07T16:40:14.019Z","repository":{"id":79163430,"uuid":"70049130","full_name":"imdea-software/TesslaServer","owner":"imdea-software","description":"Runtime for Tessla Specifications","archived":false,"fork":false,"pushed_at":"2017-01-20T08:46:45.000Z","size":95572,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-06T20:32:40.010Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imdea-software.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-05T10:08:26.000Z","updated_at":"2017-01-31T19:43:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"b9ad5ea9-f2e0-48b1-b038-b303228a3c47","html_url":"https://github.com/imdea-software/TesslaServer","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imdea-software%2FTesslaServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imdea-software%2FTesslaServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imdea-software%2FTesslaServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imdea-software%2FTesslaServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imdea-software","download_url":"https://codeload.github.com/imdea-software/TesslaServer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240483782,"owners_count":19808632,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T07:29:49.419Z","updated_at":"2026-05-07T16:40:08.998Z","avatar_url":"https://github.com/imdea-software.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TesslaServer\n\n[![MIT Licence](https://badges.frapsoft.com/os/mit/mit.svg?v=103)](https://opensource.org/licenses/mit-license.php)[![Build Status](https://semaphoreci.com/api/v1/miradorn/tesslaserver/branches/master/badge.svg)](https://semaphoreci.com/miradorn/tesslaserver)[![Deps Status](https://beta.hexfaktor.org/badge/all/github/imdea-software/TesslaServer.svg)](https://beta.hexfaktor.org/github/imdea-software/TesslaServer)[![Coverage Status](https://coveralls.io/repos/github/imdea-software/TesslaServer/badge.svg?branch=master)](https://coveralls.io/github/imdea-software/TesslaServer?branch=master)\n\n## Introduction\n\nTesslaServer implements a Runtime for Tessla specifications written in Elixir.\nTessla is a project of the ISP at the University of Luebeck in Germany.\nA short introduction can be found [here](https://www.coniras.org/wp-content/uploads/2016/01/CONIRAS_SMD_2.pdf).\nOne part of Tessla is the compiler, which takes a specification and translates it into json.\nWhile the compiler isn't available you can probably get a copy by geting in contact with the ISP.\n\nFor test and benchmark purposes some specifications are provided before and after compilation.\n\nTo use this runtime you have to have at least the Erlang plattform installed (including BEAM), but it is recommended\nto also install Elixir for development purposes.\n\nTesslaServer was implemented as part of the Master Thesis of Alexander Schramm, which will be available at GitHub at some point after he has finished it.\nThe Chapter *Implementation Details* contains a lot of useful information about the general architecture of the runtime.\n\n## Howto build\n\nIf you have Elixir installed you can built an escript with `mix escript.build` and run it afterwards.\n\nFor test and development purposes you can also load the project into an REPL by using `iex -S mix`.\n\n## Howto run\n\nAfter building the escript you can run TesslaServer by entering `./tessla_server $specification.tessla`.\nNow you can enter events by hand in the format `stream_name value seconds microseconds`, e.g.:\n`function_calls:increment 1 12341234 12234`.\n\nMaybe more comfortable you can also feed a file containing traces to the runtime with the `--trace` option:\n\n    ./tessla_server example.tessla --trace example.trace\n\nFinally you might be interested in actual conclusions the runtime.\nSince the Tessla Compiler at this point doesn't include informations about outputs in the compiled files you have to\nspecify the output nodes on the command line with the `-o` switch:\n\n    ./tessla_server example.tessla --trace example.trace -o 4:error -o 15:counter\n\nAs you can see you can include multiple outputs.\nThe format is simply the id of the node in the specification followed by a colon followed by a name you are free to choose for the node.\nRunning this command will output information about the nodes 4 and 15 everytime they progress or emit an event/change.\nSince this might get noisy you can obviously pipe it into `grep`, e.g.:\n\n    ./tessla_server example.tessla --trace example.trace -o 4:error | grep \"value: true\"\n\nif you only want to be notified about the fact, when node 4 emits a `true` event.\n\n## Howto test\n\nSee Elixir testing, to run tests enter: `mix test`\n\n## Howto examples\n\nUnder `test/examples` some example specifications are given.\nExcept the `minimal` example all should run as expected.\n\n## Howto benchmark\n\nMost of the benchmarks require the [dumbbench](https://github.com/tsee/dumbbench) perl program to be installed and in the path.\n\nNote that most benchmarks rely on the executed program to terminate.\nBased on TesslaServers distributed nature it won't terminate in it's normal configuration.\nTherefore the executables inside the benchmark directorys are changed in a way, that they will terminate\nas soon as an output emits `true`.\n\nFor everything else look at the `README.md` in the folder of the respective benchmark.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimdea-software%2Ftesslaserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimdea-software%2Ftesslaserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimdea-software%2Ftesslaserver/lists"}