{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":409477688,"defaultBranch":"main","name":"grizzly","ownerLogin":"Biometria-se","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2021-09-23T06:40:12.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/89910325?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1724660109.0","currentOid":""},"activityList":{"items":[{"before":"cd58490dfdbd85fb8e2110d628e630666ff3ec6f","after":"1c7a89bfb688e55b630fdb181f4ffb113fc5145f","ref":"refs/heads/main","pushedAt":"2024-09-16T06:15:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mgor","name":"Mikael Göransson","path":"/mgor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/815510?s=80&v=4"},"commit":{"message":"improvements of keystore protocol: `push`, `pop` and `del` (#345)\n\nimprovements of keystore protocol: `push`, `pop` and `del`.\r\n\r\nmaking it easier to share runtime produced testdata between scenarios.\r\nalso better error handling between `TestdataProducer` and\r\n`TestdataConsumer`, or rather the `KeystoreTask`. if anything\r\nunexpected happens, it will be treated as a request error.","shortMessageHtmlLink":"improvements of keystore protocol: push, pop and del (#345)"}},{"before":"a589ef6ad0e22d75d39d0605e6ee50afced7528a","after":"cd58490dfdbd85fb8e2110d628e630666ff3ec6f","ref":"refs/heads/main","pushedAt":"2024-09-13T06:13:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"sub-render variables if they contain templates in `SetVariableTask` and `HttpClientTask` (#344)\n\ndon't touch global `jinja2.filters.FILTERS` when testing filters, and make sure to always remove any test filters during tests.","shortMessageHtmlLink":"sub-render variables if they contain templates in SetVariableTask a…"}},{"before":"95f7a27dfb0cd16c536c019c13ceece6e57f53a1","after":"a589ef6ad0e22d75d39d0605e6ee50afced7528a","ref":"refs/heads/main","pushedAt":"2024-09-12T12:30:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mgor","name":"Mikael Göransson","path":"/mgor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/815510?s=80&v=4"},"commit":{"message":"PUT support in `HttpClientTask` and file contents when declaring variables (#343)\n\n* force `try_file` in variable declaration if `file://` is specified in the value\r\n\r\n* support for `PUT` in `HttpClientTask`\r\n\r\nalso support for \"allow status code\" in `HttpClientTask`.\r\n\r\n* when explicitly setting a variable value to a file (`file://`), do not try to resolve the template in the contents of that file.\r\n\r\n* check if rendered content contains templates or parameters, and render/resolve them\r\n\r\n* support for different request methods in client tasks\r\n\r\nrenamed `put` to `request_to` and `get` to `request_from`.\r\n\r\nrephrase in `request_from` step expressions.\r\n\r\nadditional built-in filters, and renamed old ones.\r\nadded unit tests for all filters.\r\n\r\n* fixed code quality failures\r\n\r\n* if `client_id` is an http(s) url and scope argument None, add /user_impersonation as scope argument\r\n\r\nruff improvements of code.","shortMessageHtmlLink":"PUT support in HttpClientTask and file contents when declaring vari…"}},{"before":"20bd1104e63455a515aa57c21af773641fa18720","after":"95f7a27dfb0cd16c536c019c13ceece6e57f53a1","ref":"refs/heads/main","pushedAt":"2024-08-30T12:16:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"handle `Mod` nodes in jinja2 templates (#342)\n\nincluding `Call` and `Filter`.","shortMessageHtmlLink":"handle Mod nodes in jinja2 templates (#342)"}},{"before":"982e8d0f8864b82982592733518823b723e63544","after":"20bd1104e63455a515aa57c21af773641fa18720","ref":"refs/heads/main","pushedAt":"2024-08-28T06:37:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"new atomic variable: `AtomicJsonReader` (#341)\n\n* new atomic variable: `AtomicJsonReader`\r\n\r\nget testdata from a json-file with a list of objects.\r\n\r\nmove `@templatingfilter` from `grizzly.testdata.utils` to `grizzly.testdata.filters` and add some good-to-have filters.\r\n\r\nadded documentation regarding templating filters.\r\n\r\nfixed bug where `ask for variable` steps, added to all the scenarios causes problems if they are not used in all scenarios, also add them as a orphan template.\r\n\r\n* fixed tests\r\n\r\n* new step to create configuration in background section in feature-file\r\n\r\nrename och inverted `only_grizzly` to `try_template`.","shortMessageHtmlLink":"new atomic variable: AtomicJsonReader (#341)"}},{"before":"e64b3da59ca08321d193321f986f25c762ca25f9","after":"acb204af4b1972d1e1f5f0924490f22f12f1d9ec","ref":"refs/heads/gh-pages","pushedAt":"2024-08-26T08:17:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Documentation for release v3.0.0 982e8d0f8864b82982592733518823b723e63544","shortMessageHtmlLink":"Documentation for release v3.0.0 982e8d0"}},{"before":"60c783639e2e2639ed1197abde0b28ef00158a9f","after":"982e8d0f8864b82982592733518823b723e63544","ref":"refs/heads/main","pushedAt":"2024-08-23T12:38:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"rewrite of variable separation per scenario (#339)\n\n* each instance of a GrizzlyUser should have their own jinja2._globals dict\r\n\r\n* background steps where values can contain templates must add it as an orphan template in all scenarios\r\n\r\n* debugging scenario.variables\r\n\r\n* rewrite of #335\r\n\r\nseperated variables once more; declared variables are still in grizzly.scenario.variables, but run time variables are in GrizzlyUser.variables, these are the ones used when rendering stuff runtime.\r\n\r\n* debugging\r\n\r\n* code quality fixes","shortMessageHtmlLink":"rewrite of variable separation per scenario (#339)"}},{"before":"69e4c9a6de33208f5ab4fc4af458367850d3e456","after":"60c783639e2e2639ed1197abde0b28ef00158a9f","ref":"refs/heads/main","pushedAt":"2024-08-21T09:25:42.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"update locust version to a official release (#337)\n\nneeded to fix some NBC changes in locust related to how SequentialTaskSet loops over its tasks.","shortMessageHtmlLink":"update locust version to a official release (#337)"}},{"before":"00338035384df5e2ae1fbbda89f372bc3ee0dcfd","after":"69e4c9a6de33208f5ab4fc4af458367850d3e456","ref":"refs/heads/main","pushedAt":"2024-08-19T12:39:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"geventhttpclient does not accept `verify` in request arguments (#336)\n\n* geventhttpclient does not accept verify as argument in request\r\n\r\n* `'0'` is an int","shortMessageHtmlLink":"geventhttpclient does not accept verify in request arguments (#336)"}},{"before":"96bd4ff26f0907547226c9e3411f10c54d49609f","after":"00338035384df5e2ae1fbbda89f372bc3ee0dcfd","ref":"refs/heads/main","pushedAt":"2024-08-16T13:41:49.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"variables per scenario (#335)\n\n* variables isolated per scenario\r\n\r\neach scenario has their own `jinja2.Environment` which is used to render stuff specified in that Scenario.\r\n\r\nthis commit does not have working `Atomic*` variables per scenario.\r\n\r\n* AtomicVariable instances per scenario.\r\n\r\nmaking it possible to use the same AtomicVariable type.name in different scenarios, without clashing.\r\n\r\n* made alias compatible with variables per scenario\r\n\r\n* made persistence compatible with variables per scenario\r\n\r\n* fixed broken links and removed unused imports","shortMessageHtmlLink":"variables per scenario (#335)"}},{"before":"158e715acd825070e62ddcd052da6f2d241d6197","after":"96bd4ff26f0907547226c9e3411f10c54d49609f","ref":"refs/heads/main","pushedAt":"2024-08-12T08:01:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"fix for \"Aborting test can fail when running distributed with MQ\" (#333)\n\n* reformat behave exception error messages\r\n\r\n* rewrite of async-messaged worker\r\n\r\nstill not quite done with forcing the process to stop when receiving sigint.\r\n\r\n* fix for issue #323\r\n\r\nstart `router` in seperate process, which in turn runs a `ThreadPoolExecutor`, where each worker is a seperate thread.\r\n\r\ninstall the signal handler and share a `threading.Event` with all processes/threads, that if set would abort their respective I/O loops. the signal handler will set the event in case of SIGTERM.\r\n\r\nin the main loop, wait for the event to be set, then terminate the process with the `ThreadPoolExecutor`.\r\n\r\nthe router/frontend will check which threads has stopped by their own, and the others it will send a \"abort\" message to their clients.\r\n\r\nthe abort message will result in `AsyncMessageAbort` exception, which is handled by users and client tasks in the form of a `StopUser`.\r\n\r\n* py3.12 compatible rmtree wrapper\r\n\r\n* fixed unit tests\r\n\r\n* bump static python version from 3.11 to 3.12 in workflows\r\n\r\n* fix fixed unit tests\r\n\r\n* refactoring so that each scenario has their own jinja2 Environment\r\n\r\nthis is done in preparation of allow same variable names in all scenarios, but them still beeing separated (except for Atomic* variables).\r\n\r\nfirst step though will be the possibility to reuse request templates between scenarios, which will be needed when scenarios includes steps from other scenarios `{% scenario ... %}`.","shortMessageHtmlLink":"fix for \"Aborting test can fail when running distributed with MQ\" (#333)"}},{"before":"fd54641dd7ff8026e9bf11e3bc424da9ca818471","after":"158e715acd825070e62ddcd052da6f2d241d6197","ref":"refs/heads/main","pushedAt":"2024-07-08T09:28:45.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mgor","name":"Mikael Göransson","path":"/mgor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/815510?s=80&v=4"},"commit":{"message":"override influxdb event with special named context key-values (#332)","shortMessageHtmlLink":"override influxdb event with special named context key-values (#332)"}},{"before":"c42570d0543c5f4d88a8572ed24766ba3731fe2f","after":"fd54641dd7ff8026e9bf11e3bc424da9ca818471","ref":"refs/heads/main","pushedAt":"2024-07-08T06:17:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mgor","name":"Mikael Göransson","path":"/mgor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/815510?s=80&v=4"},"commit":{"message":"general improvements (#330)\n\n* stability improvements\r\n\r\n`grizzly.scenario.iterator`: execute `on_stop` whenever raising an exception from `run` method.\r\n\r\n`grizzly_extras.async_message.sb`: handle `ServiceBusError` by reconnecting instead of stopping worker - up to 4 retries.\r\n\r\n* log information about locust and grizzly executing dry-run\r\n\r\n* make sure to close zmq sockets with linger=0\r\n\r\nalso, do not use `context.term`, since it is blocking.\r\n\r\nadd option for router sockets to hand over connection to a new client, if it connects with the same identity as an \"old\" connection.\r\n\r\n* write temporary files\r\n\r\nstep and task implementation for creating temporary files that will be removed when stopping test.\r\n\r\n* actually use auth.user.otp_secret...\r\n\r\n* handle key files relative to behave context\r\n\r\nno need to write absolut paths any more.\r\n\r\n* new fixtures to easily set environment variables and current working directory\r\n\r\n* adaptations for locust 2.29.1\r\n\r\nthis caused problems for HttpClientTask, where in one E2E test one of the get requests would hang until pytest.timeout kicked in.\r\n\r\nreplaced `requests` with `geventhttpclient` and it worked. which also is a step to remove `requests` from grizzly.\r\n\r\nthat in turn made sense to create some util functions that would be used by both HttpClientTask and RestApiUser.\r\n\r\nwhich in turn, again, made sense to move all protocol related (`mq_`, `zmq_`, `async_message_`) helper functions to a new module, togheter with the new `http_` helper functions.\r\n\r\n* remove python 3.8 and add python 3.12\r\n\r\n* removed deperacated usage of `typing` types\r\n\r\nand used native versions instead.\r\n\r\n* adjust e2e tests for output\r\n\r\ndisable new worker log reporting in locust.","shortMessageHtmlLink":"general improvements (#330)"}},{"before":"47485f51f83326776340efa9cf142031af315e8e","after":"c42570d0543c5f4d88a8572ed24766ba3731fe2f","ref":"refs/heads/main","pushedAt":"2024-06-14T11:00:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mgor","name":"Mikael Göransson","path":"/mgor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/815510?s=80&v=4"},"commit":{"message":"increment value in keystore (#327)\n\n* added support for incrementing values in keystore\r\n\r\n* support in keystore task for increment actions\r\n\r\nonly a step implementation that supports incrementing an integer (starting from 0) with 1.","shortMessageHtmlLink":"increment value in keystore (#327)"}},{"before":"9dfabf940adb15a3e3ca4ddc60ce8ad1c9710e11","after":"47485f51f83326776340efa9cf142031af315e8e","ref":"refs/heads/main","pushedAt":"2024-06-07T06:03:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mgor","name":"Mikael Göransson","path":"/mgor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/815510?s=80&v=4"},"commit":{"message":"merge environment configuration files (#326)\n\n* merge environment configuration files\r\n\r\n* fixed documentation typo","shortMessageHtmlLink":"merge environment configuration files (#326)"}},{"before":"2d0336a74645dea9a608eb0bb71db5e41ac204ac","after":"9dfabf940adb15a3e3ca4ddc60ce8ad1c9710e11","ref":"refs/heads/main","pushedAt":"2024-06-03T12:48:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"jsonpath filter one of, `=|` (#325)\n\n* support for `or` or, \"one of\" in expressions for service bus messages\r\n\r\nmakes it possible to find a message based on a sequence of values, where the one specific expression on the payload must be in the specified sequence.\r\n\r\n* in order to allow `|=` in possible argument values, additional checks is needed since `|` sometimes is used to seperate values from arguments.\r\n\r\n* log request that failed to be rendered\r\n\r\n* when rendering a template that is the string representation of an json object/list, we must escape any non-json compatible use of characters in side variable values.\r\n\r\n* bump to setuptools-scm==8.1.0\r\n\r\ngit seems to have changed the format of format modifier `%cI`, which uses `Z` as short for `+00:00`. this short is not supported by `datetime.fromisoformat` until python >= 3.11. which causes problems for anything less.","shortMessageHtmlLink":"jsonpath filter one of, =| (#325)"}},{"before":"43027909374df0975126bda8b375212bd2e6b2bd","after":"e64b3da59ca08321d193321f986f25c762ca25f9","ref":"refs/heads/gh-pages","pushedAt":"2024-05-10T08:46:13.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Documentation for release v2.10.2 2d0336a74645dea9a608eb0bb71db5e41ac204ac","shortMessageHtmlLink":"Documentation for release v2.10.2 2d0336a"}},{"before":"953852b337914e3b48b81f6f54dcd1b795db2f37","after":"2d0336a74645dea9a608eb0bb71db5e41ac204ac","ref":"refs/heads/main","pushedAt":"2024-05-10T08:27:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"retry creating a service bus connection if it times out (#322)\n\n* retry creating a service bus connection if it times out\r\n\r\nthe timeout is manifested as an `TypeError` due to bad implementation in `azure.servicebus`.\r\n\r\n* do not prefetch iteration testdata until all tasks `on_start` has succeeded.","shortMessageHtmlLink":"retry creating a service bus connection if it times out (#322)"}},{"before":"ed82ea4d4107ec7a492880d85af8a1698af704b4","after":"953852b337914e3b48b81f6f54dcd1b795db2f37","ref":"refs/heads/main","pushedAt":"2024-04-30T11:53:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"fixing stability issues identified during ~5h tests (#321)\n\n* fixing stability issues\r\n\r\nwhen running a long test (about 5 hours) there was some problems identified:\r\n- response handlers are executed on 40x, 50x responses\r\n- when a request failed, exceptions would not be raised outside of the greenlet\r\n- heartbeat timeout between one worker and master, causing the worker to quit, ending the tests prematurely.\r\n- tokens that should be valid, results in 401 (this one is still pending, since the cause is not enterly known)\r\n\r\n* instead of relying on `expires_in` which is received togheter with the token, extract the token payload and use the timestamp from `exp` in the payload.\r\n\r\nfallback to use 3000 seconds (as before) if something fails.\r\n\r\n* removed excessive debug logging related to tokens","shortMessageHtmlLink":"fixing stability issues identified during ~5h tests (#321)"}},{"before":"c7ff16cfcc93c5903c133e59a279e34569ba7b95","after":"43027909374df0975126bda8b375212bd2e6b2bd","ref":"refs/heads/gh-pages","pushedAt":"2024-04-26T11:11:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Documentation for release v2.10.1 ed82ea4d4107ec7a492880d85af8a1698af704b4","shortMessageHtmlLink":"Documentation for release v2.10.1 ed82ea4"}},{"before":"16c03465e63e2f05a5889d86670f0d58430485fe","after":"ed82ea4d4107ec7a492880d85af8a1698af704b4","ref":"refs/heads/main","pushedAt":"2024-04-26T11:02:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"do not touch cookies or authorization headers (#320)\n\nthere are cases where these could be set and should remain set.","shortMessageHtmlLink":"do not touch cookies or authorization headers (#320)"}},{"before":"79fed2bfdcba4c8d5afa965be40fd3b73e1db6bd","after":"c7ff16cfcc93c5903c133e59a279e34569ba7b95","ref":"refs/heads/gh-pages","pushedAt":"2024-04-26T07:42:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"Documentation for release v2.10.0 16c03465e63e2f05a5889d86670f0d58430485fe","shortMessageHtmlLink":"Documentation for release v2.10.0 16c0346"}},{"before":"830abee4d7570dccb866f6bb256348cc154748a7","after":"16c03465e63e2f05a5889d86670f0d58430485fe","ref":"refs/heads/main","pushedAt":"2024-04-25T13:52:05.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"refresh token bug (#319)\n\n* fixed problem where a new token was requested for every iteration\r\n\r\nalso there was a problem with `expires_on` causing an invalid token be used, when close to `expires_on` timestamp.\r\n\r\n* fixed problem that token in header wasn't updated when switching credentials causing restoring cached credential (`AccessToken`)","shortMessageHtmlLink":"refresh token bug (#319)"}},{"before":"366f039803da3534d722e4cf44b619772adf4382","after":"830abee4d7570dccb866f6bb256348cc154748a7","ref":"refs/heads/main","pushedAt":"2024-04-23T14:05:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mgor","name":"Mikael Göransson","path":"/mgor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/815510?s=80&v=4"},"commit":{"message":"credential support for `ServiceBus*` and `BlobStorage*` resources (#318)\n\n* fixed bugs related to \"app\" authentication flow\r\n\r\n* better handling of exceptions that occurs in `on_start`\r\n\r\n* support for credential in `BlobStorageUser`\r\n\r\n* move AzureAadCredential to grizzly_extras\r\n\r\nthis is needed so that async-messaged can use credential when creating ServiceBusClient.\r\n\r\n* support in async-messaged for ServiceBus credentials\r\n\r\n* support for credential in `ServiceBusUser`\r\n\r\n* support for credential in `BlobStorageClientTask`\r\n\r\nalso removed support for specifying `Container` in query string, it must now be specified in the URL path.\r\n\r\nupdated documentation, and tests.\r\n\r\n* support for credential in `ServiceBusClientTask`\r\n\r\n* no gevent stuff in grizzly_extras\r\n\r\n* align task settings in BlobStorageClientTask with how they are specified in ServiceBusClientTask\r\n\r\n* fixed quoting bug for expression in ServiceBusClientTask\r\n\r\nregex failed when having expression as the last path element and using credential for authentication.\r\n\r\n* servicebus client task subscription names\r\n\r\nsubscription names cannot be longer than 50 characters. if a rule is to be created \"on-the-fly\", a unique identifier which is 8 characters is suffixed to the name, which in case grizzly will only allow at max a name of 42 characters.\r\n\r\nthe identifier used to be the id of the user instance executing the task, however that might not be sufficient. now it is the first 8 characters of the sha256 hash of user instance id, hostname and timestamp.\r\n\r\n* CI test fixes\r\n\r\nand a unbound variable reference fix.\r\n\r\n* fixed broken `initialize_uri` flow\r\n\r\nseems like microsoft changed some check related to which headers has been set. without the changes `user auth request 5` would fail with 404.","shortMessageHtmlLink":"credential support for ServiceBus* and BlobStorage* resources (#318)"}},{"before":"a5969568e0a895b322df7367ddbe0682ba6c9885","after":"366f039803da3534d722e4cf44b619772adf4382","ref":"refs/heads/main","pushedAt":"2024-04-17T06:43:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"AAD refactoring (#317)\n\n* refactor the AAD authentication flow to a `TokenCredential` implementation\r\n\r\nwill make it possible to use the custom implementation in other azure libraries, a step for\r\ngetting rid of connection strings.\r\n\r\n* modifications and adaptations of unit and e2e tests\r\n\r\nso they all pass with the new implementation.","shortMessageHtmlLink":"AAD refactoring (#317)"}},{"before":"af9b164795caf3b3c4a900eaac764dc3f76b5922","after":"a5969568e0a895b322df7367ddbe0682ba6c9885","ref":"refs/heads/main","pushedAt":"2024-04-11T12:03:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mgor","name":"Mikael Göransson","path":"/mgor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/815510?s=80&v=4"},"commit":{"message":"`ServiceBusUser` and `IteratorScenario` improvements (#316)\n\n* additional information if exceptions is raised from execute_next_task greenlet\r\n\r\n* include sb topic statistics when removing subscriptions\r\n\r\n* ServiceBusUser: support for `consume` argument in request endpoint\r\n\r\nmeaning; complete and ignore messages not matching `expression`.\r\n\r\n* introduce retries for requests in aad authentication flow\r\n\r\n* do not run response handlers on `AsyncMessageError`\r\n\r\n* stop user when `on_start` fails for any of the tasks it contains","shortMessageHtmlLink":"ServiceBusUser and IteratorScenario improvements (#316)"}},{"before":"8c561786c2b70d5a83373d3e60cdba14e70095cc","after":"af9b164795caf3b3c4a900eaac764dc3f76b5922","ref":"refs/heads/main","pushedAt":"2024-04-02T12:27:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mgor","name":"Mikael Göransson","path":"/mgor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/815510?s=80&v=4"},"commit":{"message":"update databind version to 4.5.1 (#315)\n\ncontains fix for problems found in 4.5.0","shortMessageHtmlLink":"update databind version to 4.5.1 (#315)"}},{"before":"82eec240546f347a7953ee26f17b0bc6d950ff33","after":"8c561786c2b70d5a83373d3e60cdba14e70095cc","ref":"refs/heads/main","pushedAt":"2024-04-02T10:50:50.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"dry run (#314)\n\n* implementation of dry run\r\n\r\nexecutes basically everything, up until it is time to starts locust workers.\r\n\r\nmakes it easier to troubleshoot a new feature-file to make sure that behave phase of grizzly at least will work, and that a test case is correctly setup.\r\n\r\nthis required moving `initialize_testdata` from deep within locust as a library logic.\r\n\r\nsome basic preparation for #281, as to have a place to store the scenario class type name in the context.\r\n\r\n* gracefully quit runner(s) when it's a dry run\r\n\r\n* clarify some steps when setting up grizzly-cli as an authenticator app.\r\n\r\n* additional improvements and bugfixes in AST parsing\r\n\r\n* debug log message to see what get_template_variables comes up with\r\n\r\n* fix servicebus bug after changing to pyamqp version for azure.servicebus","shortMessageHtmlLink":"dry run (#314)"}},{"before":"907cdaf2f07ad2d0215d69b210da46ff7def25e2","after":"82eec240546f347a7953ee26f17b0bc6d950ff33","ref":"refs/heads/main","pushedAt":"2024-03-27T09:02:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"boffman","name":null,"path":"/boffman","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/686610?s=80&v=4"},"commit":{"message":"improved AST parsing of jinja2 templates (#313)\n\nadded support for more \"body\" node types.","shortMessageHtmlLink":"improved AST parsing of jinja2 templates (#313)"}},{"before":"aa93dae77a408d0ade3f92a2663d22af0c22d9e7","after":"907cdaf2f07ad2d0215d69b210da46ff7def25e2","ref":"refs/heads/main","pushedAt":"2024-03-26T14:50:25.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"mgor","name":"Mikael Göransson","path":"/mgor","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/815510?s=80&v=4"},"commit":{"message":"set variable task resolve file value (#311)\n\n* variable set by SetVariableTask checks if value is a file\r\n\r\nand if so, reads the file and renders the template inside it and\r\nsets it to the variable value.\r\n\r\njust as the initialization done before runtime does.\r\n\r\n* new utility step to add orphan templates\r\n\r\nto get around problems when a variable cannot be found in a templating string, or isn't used anywhere; like when debugging parts of a feature file).","shortMessageHtmlLink":"set variable task resolve file value (#311)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xNlQwNjoxNTo0OS4wMDAwMDBazwAAAAS3FQRb","startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0xNlQwNjoxNTo0OS4wMDAwMDBazwAAAAS3FQRb","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wMy0yNlQxNDo1MDoyNS4wMDAwMDBazwAAAAQfvxNz"}},"title":"Activity · Biometria-se/grizzly"}