{"push_id":834021287,"size":16,"distinct_size":1,"ref":"refs/heads/master","head":"288c6f648acf621bc65b78736ad186fe48baa6d1","before":"0387b34edbfc3de86fbbdf600dc9fbf35b9fe2ce","commits":[{"sha":"c5edf9d9ab561837a28582e042e457ae64b4f6e3","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Support load settings aware apps via special methods\n\nApps can now be notified whenever `Originator` load settings are adjusted\n(the `limit`, `rate`, `duration` attrs) by defining special `__set<attrname>__`\nmethods. This allows apps to adjust internal state to changes in expected call\ndurations and frequency.\n\nRequires a few tweaks to the originator:\n- set the absolute settings `max_rate` and `duration_offset` in `__init__`\n- apply default settings *after* all apps are loaded so as to notify\n  each app of these defaults\n- add a `duration` property which supports sub-app callbacks\n- ignore the auto hangup logic in the channel hangup callback\n  if the call is marked appropriately","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/c5edf9d9ab561837a28582e042e457ae64b4f6e3"},{"sha":"a18937fbc8c9fa7cbe53c6330f45ec0315192251","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Make `PlayRec` load settings aware\n\nBy knowing the default speech clip's length we can dynamically adjust the\nnumber of times we play it (in simulating a conversation) to match the\nexpected duration of a call during a load test. This requires that the\ndriving originator does not auto-hangup calls instead leaving this to\n`PlayRec` such that hangup only happens once all playback/recording\nis complete.\n\nRecord calls around the rate at which they are offered such that we get\napproximately 1 recording + callback per second.\n\nAlso,\n- add a channel create callback which marks all calls not to be auto hung up\n- make most logging debug level to avoid overwhelming output during load\n  testing","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/a18937fbc8c9fa7cbe53c6330f45ec0315192251"},{"sha":"e3cc56314ee3129391e04262e7980490366d243f","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Add a test for the `Originator` + `PlayRec`\n\nEnsure `PlayRec` operates as expected when used in the context\nof a small hundred call load test.","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/e3cc56314ee3129391e04262e7980490366d243f"},{"sha":"54617ad5c182f2c311b0a52b78f3769ad9706ae7","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Allow for `prepost` kwargs passing when `Originator` loads apps\n\nOften it is required that an app is configured data other then the\ndefaults. Allow the `apps` kwarg to the `Originator` to be either\na sequence of apps or a sequence of tuples of the form `(app,\nkwargs_dict)` where `kwargs_dict` is a simple dictionary specifying the\nkwargs which will be provided to the `prepost` method of the app at load\ntime.","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/54617ad5c182f2c311b0a52b78f3769ad9706ae7"},{"sha":"cdfb95072acfa374f086ef3612539d99fcfbf09e","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Add `first` and `last` session refs to `Call`s\n\nThis allows for explicit reference to the first and last sessions\nwithin a given call. The new `append` method can be used to add\nnew sessions and update the `last` property.\nWeak refs are used to avoid session ref cycles.\n\nThe motivation for this change is that the previous property\nnames `caller` and `callee` don't have meaning in contexts where the\nFS slave is not originating calls (eg. monitoring). A more technical\nreason is that the `Metrics` app can suffer from aliasing where the\n`caller` session ref could in some cases point to the `callee` and\nvice-versa due to the use of `Call.get_peer` (which internally uses\n`Call.sessions[0]`) inside a \"CHANNEL_HANGUP\" callback (who's handler\npops the session model from `Call.sessions` prior to invoking the\ncallback chain). With this change such mis-referencing can no longer\noccur.","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/cdfb95072acfa374f086ef3612539d99fcfbf09e"},{"sha":"acdf1fffcc6b4453f03048eacdbfffb290efd123","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Core tweaks\n\n- use the new `Call.append` in the listener's channel create handler\n- move `get_event_time` to the `utils` mod\n- always return the app client id from `Client.load_app` even if the app\n  is already registered","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/acdf1fffcc6b4453f03048eacdbfffb290efd123"},{"sha":"95bb60c8cd0b040e1ffeb378a1aaf2ea743465ae","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Drop `PlayRec.__init__`\n\nUse `prepost` for all input configuration arguments since `Client.load_app`\ndoesn't currently pass args to each app instance it creates. This gives\n`PlayRec` proper cluster support when used for load testing.\n\nAlso, enforce a 1 second `tail` period on all calls to avoid truncated\nrecordings and drop the soft timer setting.","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/95bb60c8cd0b040e1ffeb378a1aaf2ea743465ae"},{"sha":"6f66315baccf02db46650ce4ad46f3ecec22cf6f","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Port `Metrics` app to new `models.Call` api\n\nThis makes latency measurement capture explicit with regard to session\nreferencing within a call. Add a new column to the array which tracks\nthe latency from originate-to-create event time. Drop kwargs from\n`__init__` since `Client.load_app` doesn't support it and thus it\nwon't work when controlling a cluster (eg. when using an `Originator`).","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/6f66315baccf02db46650ce4ad46f3ecec22cf6f"},{"sha":"4f94db2c4c9b9a02c72453524cb2ae19c61c6fe1","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Port tests to new `Originator` app loading api\n\n- app kwargs must be passed in a paired dict\n- load `Metrics` using the client interface even if for lower level listener\n  testing\n- drop `client` fixture scope down to function level","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/4f94db2c4c9b9a02c72453524cb2ae19c61c6fe1"},{"sha":"6f940c2950538a4476d78546ee6f87aa0bb99e67","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Raise an error if mod_bert ain't found","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/6f940c2950538a4476d78546ee6f87aa0bb99e67"},{"sha":"5d9191ebe8124f2c5cfe7f673b0c216d6367c4ae","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Make `Originator` sched hangups in bj handler\n\nSince we know originates are issued using `bgapi` there should always\nbe a job corresponding to every call. Receiving the bg job for such\nsessions means the call has connected and the onus is on us for\nscheduling hangup. This avoids bothering the slave's scheduler with\na hangup if the call never connected in the first place and\nadditionally allows apps to mark calls which should not be\nauto-hungup in a \"CHANNEL_ANSWER\" callback (since it comes before\nthe \"BACKGROUND_JOB\" event).\n\nAdditionally,\n- drop the random call duration stuff; it makes more sense to\n  compute it from a variable call rate so we don't break the\n  erlang relation","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/5d9191ebe8124f2c5cfe7f673b0c216d6367c4ae"},{"sha":"6f222206c7362d9dafdef25aa2a73daec5a732cc","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Add muting for sessions\n\nUses `uuid_audio`.\nAdd a `time` attr which points to the most recent event's\ntime stamp.\n`breakmedia` is a more accurate name.","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/6f222206c7362d9dafdef25aa2a73daec5a732cc"},{"sha":"9d327293e258190937159dcdc9c5919c9baa6e5b","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"bj handler should deliver the session as well\n\nThis follows suit with all other default handlers.\n\nFix a bug in `Client.bgapi` where the app id wasn't\nbeing passed down and thus jobs were being registered\nwith the observer incorrectly.","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/9d327293e258190937159dcdc9c5919c9baa6e5b"},{"sha":"b0e7e2e89a7d052649fc488902bae408bf672d45","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Add an alternative impl of `PlayRec` using muting\n\nAdds a subclass which relies on the `endless_playback` core app\nalongside interleaved muting to simulate a conversation.\n\nIn `PlayRec`,\n- add a dynamic rec rate option which instructs the app to\n  take sample recordings at some multiple of the current\n  call rate based on the `rec_period` arg (eg. rec_period = 3\n  means 1 rec every 3 seconds)\n- make the `rec_rate` by default `inf` meaning take no recs\n- guard for when `peer` is None (i.e. already hungup)\n\nAlso, adjust unit tests to match new `rec_rate` defaults.","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/b0e7e2e89a7d052649fc488902bae408bf672d45"},{"sha":"45757f13be97c099a4d92872532430e1160205ea","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Use time based recording rate limiting\n\nUse time based limiting by means of a global timer shared by each\ncluster/apps instead of the more error prone call counting + call\nrate arithmetic.\n\n- Add a `Timer` type\n- drop the legacy \"fast scheduler\"\n- make `utils.iter_import_submods` actually recursive","distinct":false,"url":"https://api.github.com/repos/sangoma/switchy/commits/45757f13be97c099a4d92872532430e1160205ea"},{"sha":"288c6f648acf621bc65b78736ad186fe48baa6d1","author":{"email":"65979936bc7ba79c31d5f0fa79fd9faf7cf6758a@gmail.com","name":"Tyler Goodlet"},"message":"Merge branch 'convo_load_testing'\n\n* convo_load_testing:\n  Use time based recording rate limiting\n  Add an alternative impl of `PlayRec` using muting\n  bj handler should deliver the session as well\n  Add muting for sessions\n  Make `Originator` sched hangups in bj handler\n  Raise an error if mod_bert ain't found\n  Port tests to new `Originator` app loading api\n  Port `Metrics` app to new `models.Call` api\n  Drop `PlayRec.__init__`\n  Core tweaks\n  Add `first` and `last` session refs to `Call`s\n  Allow for `prepost` kwargs passing when `Originator` loads apps\n  Add a test for the `Originator` + `PlayRec`\n  Make `PlayRec` load settings aware\n  Support load settings aware apps via special methods","distinct":true,"url":"https://api.github.com/repos/sangoma/switchy/commits/288c6f648acf621bc65b78736ad186fe48baa6d1"}]}