{"id":19286962,"url":"https://github.com/infinilabs/loadgen-dsl","last_synced_at":"2025-02-23T23:20:31.818Z","repository":{"id":256381483,"uuid":"855122803","full_name":"infinilabs/loadgen-dsl","owner":"infinilabs","description":"🧨 A easy to use and human-friendly DSL for conducting test assessments with INFINI Loadgen.","archived":false,"fork":false,"pushed_at":"2024-09-10T11:10:54.000Z","size":788,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-05T19:11:59.756Z","etag":null,"topics":["asset","dsl","loadgen","testing"],"latest_commit_sha":null,"homepage":"https://release.infinilabs.com/loadgen/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/infinilabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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":"2024-09-10T10:53:21.000Z","updated_at":"2024-09-10T12:57:34.000Z","dependencies_parsed_at":"2024-09-10T12:28:47.250Z","dependency_job_id":"2b42eefd-9c6c-4c95-b93a-506d7d02bfcb","html_url":"https://github.com/infinilabs/loadgen-dsl","commit_stats":null,"previous_names":["infinilabs/loadgen-dsl"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infinilabs%2Floadgen-dsl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infinilabs%2Floadgen-dsl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infinilabs%2Floadgen-dsl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/infinilabs%2Floadgen-dsl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/infinilabs","download_url":"https://codeload.github.com/infinilabs/loadgen-dsl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240391789,"owners_count":19793951,"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":["asset","dsl","loadgen","testing"],"created_at":"2024-11-09T22:04:56.603Z","updated_at":"2025-02-23T23:20:31.780Z","avatar_url":"https://github.com/infinilabs.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Loadgen DSL\n\nThe assertion DSL for Loadgen.\n\n## ✍️ Example\n\n`loadgen-dsl` compiles a little DSL to the yaml configuration of Loadgen.\n\n```sh\n# Build WASM module and run it from Golang\njust run examples/example.dsl\n```\n\nOutput:\n\n```txt\nand:\n- equals:\n    _ctx.response.body_json.name: lchynn\n- range:\n    _ctx.response.body_json.age:\n      gte: -22.0\n- equals:\n    _ctx.response.body_json.com: infini\n- or:\n  - regexp:\n      _ctx.response.body_json.team: dev.*\n  - regexp:\n      _ctx.response.body_json.team: doc.*\n- and:\n  - equals:\n      _ctx.response.body_json.todo.pizza: inprogress\n- equals:\n    _ctx.response.body_json.todo.dsl: inprogress\n- and:\n  - equals:\n      _ctx.response.body_json.likes.0: anime\n  - equals:\n      _ctx.response.body_json.likes.1: sports\n```\n\n## 🌲 Grammer\n\n```bnf\ngrammer    ::= brief | full\nbrief      ::= status? object EOF\nfull       ::= fields EOF\nstatus     ::= integer\nexpr       ::= expr1 (infixop expr1)*\nexpr1      ::= literal\n             | array\n             | object\n             | funcall\n             | prefixop expr1\n             | '(' exprlist ')'\nexprlist   ::= (expr (',' expr)* ','?)?\nobject     ::= '{' fields '}'\nfields     ::= (pair (',' pair)* ','?)?\npair       ::= path ':' expr\npath       ::= key ('.' key)*\nkey        ::= name | string | integer\narray      ::= '[' exprlist ']'\nfuncall    ::= name '(' exprlist ')'\nliteral    ::= null\n             | boolean\n             | integer\n             | float\n             | regex\n             | string\nignore     ::= whitespace\n              | comment\n              /* ws: definition */\n\n\u003c?TOKENS?\u003e\n\ncomment    ::= '//' char*\nname       ::= ident - keyword\nkeyword    ::= 'null'\n             | 'true'\n             | 'false'\n             | 'not'\n             | 'and'\n             | 'or'\nident      ::= id_start (id_start | '-' | digit)*\nid_start   ::= [_a-zA-Z]\nprefixop   ::= '-'\n             | '\u003e'\n             | '\u003c'\n             | '\u003e='\n             | '\u003c='\n             | '=='\n             | 'not'\ninfixop    ::= 'and' | 'or'\nnull       ::= 'null'\nboolean    ::= 'true' | 'false'\ninteger    ::= digit+\nexponent   ::= ('e' | 'E') ('+' | '-')? integer\nfloat      ::= integer exponent\n             | integer '.' integer exponent?\ndigit      ::= [0-9]\nregex      ::= '/' ('\\/' | char - '/')+ '/'\nstring     ::= '\"' (escape | char - '\"')* '\"'\n             | \"'\" (escape | char - \"'\")* \"'\"\nescape     ::= '\\b'\n             | '\\f'\n             | '\\n'\n             | '\\r'\n             | '\\t'\n             | \"\\'\"\n             | '\\\"'\n             | '\\\\'\n             | '\\/'\nchar       ::= #x9\n             | [#x20-#xD7FF]\n             | [#xE000-#xFFFD]\n             | [#x10000-#x10FFFF]\nwhitespace ::= [#x9#xA#xD#x20]+\nEOF        ::= $\n```\n\n### References:\n\n- [W3C EBNF Notation](https://www.w3.org/TR/2008/REC-xml-20081126/#sec-notation)\n- [REx Parser Generator](https://bottlecaps.de/rex/)\n\n## ⚖️ License\n\nLicensed under either of\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or\n  \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or\n  \u003chttp://opensource.org/licenses/MIT\u003e)\n\nat your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfinilabs%2Floadgen-dsl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfinilabs%2Floadgen-dsl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfinilabs%2Floadgen-dsl/lists"}