App Install
Measure app installation speed. This scenario has two roles:
minimal: Installs a simple app which implements initialisation callbacks but otherwise doesn't contain a lot of code.large: Installs a larger app that contains some dependencies and some generated data as padding to make the bundle larger.
These are intended to catch a compilation slowdown or issues with copying around large WASMs (e.g. accidental cloning or tracing). In each case, the behaviour will uninstall the app it installed so that it can re-install it on the next iteration.
-
large(1 agent)
App Install
Measure app installation speed. This scenario has two roles:
minimal: Installs a simple app which implements initialisation callbacks but otherwise doesn't contain a lot of code.large: Installs a larger app that contains some dependencies and some generated data as padding to make the bundle larger.
These are intended to catch a compilation slowdown or issues with copying around large WASMs (e.g. accidental cloning or tracing). In each case, the behaviour will uninstall the app it installed so that it can re-install it on the next iteration.
-
minimal(1 agent)
DHT Sync Lag
Measure lag time between an agent publishing data and other peers being able to see it. This scenario has two roles:
write: A simple job that just creates entries with a timestamp field. Those entries are linked to a known base hash. For each write, the metricws.custom.dht_sync_sent_countis incremented.record_lag: A job that repeatedly queries for links from the known base hash. It keeps track of records that it has seen and when a new record is found, and calculates the time difference between the timestamp of the new record and the current time. That time difference is then recorded as a custom metric calledwt.custom.dht_sync_lag.
After each behaviour loop the metric ws.custom.dht_sync_recv_count is incremented.
-
record_lag(5 agents) -
write(5 agents)
agent:uhCAk2zR_WdCAsoyKIW29IlVPBNR-eOvxaotYfUuVuECYry50Ew1f
agent:uhCAkC44alkBSoe4KZIVtxoqeU-9ACSK5u007ripp8GVNauznbbBi
agent:uhCAkLX4N3K943ulXM8TponAGsdcbC9gLWkXnZ8Hz-2vO95O3xhS2
agent:uhCAkZ9wSlR07gZNiod_xYPuCFZqiVFdC4t48hVF1THumJbgPJMjc
agent:uhCAkZtsUx3P-GaxpDgns2BVPuKndV0sK98Jc7Duw0GNfnm-YCCpS
agent:uhCAkd4Qrw2aa92T59ruRsSiti-ByBxdS0gpbV-fjxheIqV6t57PC
agent:uhCAkdDo18B5X44GKECNyESHxz0Uq0tdXFNhPYfOGB2PKGWpFDugs
agent:uhCAkp2Hj7HOrInZoDIuBNhzMb2F7tY_2mjKwgRLdpA9Ju86l10x_
agent:uhCAkqBRNZSzZlhO9XU9D6mUpnsNUxYDlxN5SKeoKg7yFwULORK2n
agent:uhCAkt6ImGq6M1y6Ml5994Q5lYtswZuQlJbkQjKT0EpEYdbUvt8Ed
agent:uhCAk-JzICBe4znXaOu1JrOCHo03clkeeeK96Qq_R2Z_Vzs-xxSqT
agent:uhCAk-MyvKZB20RC5jSOTNsG50okM70c39_mOB37sILspWBvWdyvX
agent:uhCAk1OQEouq3JWzL3khv5MnI2_4fOAAMacoC_aIRnS_9QnubypsF
agent:uhCAk8lExCFVZqM8hUMKqyTsDO3E6cig3KxFD4KycCcc3q0tlDW14
agent:uhCAkTf2nSljNmzcz1e0KnGjejKPXWQaXF0Cdjn2p3hCTApB2xYPJ
agent:uhCAkXbQPyBBALZDFy9DK12NHSHAOnZcfHLpevIslv0w_PU8fsPL3
agent:uhCAkXczuouipKBEF3SLmNYIVXOOAx0fAWn4q4v-nLc3hQ3my7e5p
agent:uhCAkaUq4DaYXdTIvyVyaI51RHVOnU1AhuQohWcydo431TLz1EPqB
agent:uhCAkvYkl_jAp0HZNjPKluV5xpiWKctF7DhKedLMpX2F6twwRVzl6
agent:uhCAk-JzICBe4znXaOu1JrOCHo03clkeeeK96Qq_R2Z_Vzs-xxSqT
agent:uhCAk-MyvKZB20RC5jSOTNsG50okM70c39_mOB37sILspWBvWdyvX
agent:uhCAk1OQEouq3JWzL3khv5MnI2_4fOAAMacoC_aIRnS_9QnubypsF
agent:uhCAk8lExCFVZqM8hUMKqyTsDO3E6cig3KxFD4KycCcc3q0tlDW14
agent:uhCAkTf2nSljNmzcz1e0KnGjejKPXWQaXF0Cdjn2p3hCTApB2xYPJ
agent:uhCAkXbQPyBBALZDFy9DK12NHSHAOnZcfHLpevIslv0w_PU8fsPL3
agent:uhCAkXczuouipKBEF3SLmNYIVXOOAx0fAWn4q4v-nLc3hQ3my7e5p
agent:uhCAkaUq4DaYXdTIvyVyaI51RHVOnU1AhuQohWcydo431TLz1EPqB
agent:uhCAkvYkl_jAp0HZNjPKluV5xpiWKctF7DhKedLMpX2F6twwRVzl6
First Call
This scenario installs a simple app which implements the init callback, and measures the time elapsed between start of install and calling init. It will uninstall the app it installed so that it can re-install it on the next iteration. This is required to re-run the initialisation callback.
- Default (1 agent)
init.Local Signals
This scenario is for testing the speed and reliability of local signals. It uses a zome with a function that will emit 10,000 signals. The scenario measures how long it takes to send the signals and how many have been received by the time the zome call ends.
- Default (1 agent)
No scenario template for mixed_arc_get_agent_activity!
No scenario template for mixed_arc_must_get_agent_activity!
Remote Call Rate
Test the throughput of remote_call operations. Each agent in this scenario waits for a certain number of peers to be available or for up to two minutes, whichever happens first, before starting its behaviour.
- Default (1 agent)
agent:uhCAk4qXmy0Az25YVZxkCa-QM8Hg7XYxkSs0Ogx6-xJZHMa5eouG9
agent:uhCAkDAIHgga-fwCv6_SD60hailDknYMis9u-CtcjwB0N-j-ubnWo
agent:uhCAkM0kvgOYWGHwCE7fKxwMjrxoIRT9HOsbD7-C48SHVafdpzwU4
agent:uhCAkPVjAhH7M8ovaeBi9Mzmq6leyo3YgbdTkYn0_5cW5hhB6ganb
agent:uhCAk4qXmy0Az25YVZxkCa-QM8Hg7XYxkSs0Ogx6-xJZHMa5eouG9
agent:uhCAkDAIHgga-fwCv6_SD60hailDknYMis9u-CtcjwB0N-j-ubnWo
agent:uhCAkM0kvgOYWGHwCE7fKxwMjrxoIRT9HOsbD7-C48SHVafdpzwU4
agent:uhCAkPVjAhH7M8ovaeBi9Mzmq6leyo3YgbdTkYn0_5cW5hhB6ganb
Remote Signals
This scenario tests the throughput of remote_signals operations.
- Default (1 agent)
Single-write, many-read
Creates an entry in the agent setup, then read one's own record back. This tests the maximum read performance for reading back local data when the chain is short.
- Default (1 agent)
read call timingread call rate (10s)Write/get_agent_activity
A scenario where write peers write entries, while get_agent_activity peers each query a single write agent's activity with get_agent_activity.
Before a target write peer and the requesting get_agent_activity peer are in sync, this will measure the get_agent_activity call performance over a network. Once a write peer reaches sync with a get_agent_activity peer, the write peer will publish their actions and entries, and so the get_agent_activity calls will likely have most of the data they need locally. At that point this measures the database query performance and code paths through host functions.
-
get_agent_activity(1 agent) -
write(1 agent)
action_seqwrite peer's source chain.get_agent_activity_full zome call timingwrite peer's source chain.agent:uhCAkuulumArcIZh9uqZDFi89MxfM9tbI_e0g1c93rHURfjkEOPlX
Write/Query
Creates an entry, then queries the source chain and performs a simple operation on the entries, then repeats.
- Default (1 agent)
Write/Read
Creates an entry and reads it back, then repeats.
- Default (1 agent)
Write validated
Creates an entry, updates it and links the create to the update, then repeats. Each of the three actions is validated by the included hApp.
- Default (1 agent)
Write Validated must_get_agent_activity
A scenario where write agents create entries, while must_get_agent_activity agents create entries which are validated with a must_get_agent_activity call for a single write agent's activity.
Before a target write peer and the requesting peer are in sync, the must_get_agent_activity request will go over the network. Once a write peer reaches sync with the requesting must_get_agent_activity peer, the write peer will publish their actions and entries, and so the must_get_agent_activity calls will likely have the data it needs locally. At that point this measures the database query performance and code paths through host functions.
-
must_get_agent_activity(1 agent) -
write(1 agent)
action_seqmust_get_agent_activity peer's source chain top over the run.create_validated_sample_entry zome call timingwrite agent's source chain.agent:uhCAkQw33Cq6LSOFtHqAwdWq5OfkzaFKLxp4GQ07blLpHFP1gYYcN
agent:uhCAkRGMeXk5dvfcFmfznj1JAw7hMlAxjAzIZKSdHeXEWczFGASZ1
Zero-Arc Create and Read
A zero-arc/full-arc mixed scenario with two types of zero-arc nodes -- ones that create data and ones that read data -- as well as full arc nodes to "relay" the data. The scenario has three roles:
zero_write: A zero-arc conductor that just creates entries with a timestamp field. Those entries are linked to a known base hash so thatzero_readnodes can retrieve them.zero_read: A zero-arc conductor that reads the entries created by the zero-arc node(s) and records the time lag between when the entry had been created and when it was first discovered.full: A full-arc conductor that is just here to serve entries to zero arc nodes.
-
full(3 agents) -
zero_read(3 agents) -
zero_write(3 agents)
agent:uhCAk4G7uS2WsGE0y-97CWSa1U_Y1fzCftmweXXfu_nmd1eXVWdli
agent:uhCAkCyYvtloGVq9hwsNezzj2yyaGvkjtxHAsgvlptk0dtEr214Ks
agent:uhCAkSOby8yIx7nkY4qFf6BwWHNaG_z3rli2-W356c0njOnww6eHN
agent:uhCAkdlqpB6efLzb0u_0Uf4LJ-kiDnEk-oV3LjH69TLScHlQJubRt
agent:uhCAkuoZKLFeHp82WdJiGY-9sXbUET9WIGrFpx5NHBsETH2scMSNO
agent:uhCAkwcKwqs6Xux5Z-oKkR6jkSUCqjSayw4zz0llW29d3l_1dLZI6
get_timed_local_entries zome function.agent:uhCAkCOdKQDhIWpN0kiH0Mkq-JfXr69FgMMMGqpLRv3RP1vHTLOIX
agent:uhCAkHfi39J4yISCCpjCfZ5nwLPC3eQ1N6efGpIonxDy3BH7XUGW2
agent:uhCAkNsEM8T8QxvJQ5zR_wgsKouxD51P5cdu68i8jsF4QrUGeek87
agent:uhCAkZh4bx0yww4HwFofKIGVPdwYg08FpjVP7WHIVJGDzeh28sZUE
agent:uhCAklt3NWP5UM1cV-C04Z6sfx3ScHw0C9lv2tUJxLSJAQwn1KK9W
agent:uhCAkCOdKQDhIWpN0kiH0Mkq-JfXr69FgMMMGqpLRv3RP1vHTLOIX
agent:uhCAkHfi39J4yISCCpjCfZ5nwLPC3eQ1N6efGpIonxDy3BH7XUGW2
agent:uhCAkNsEM8T8QxvJQ5zR_wgsKouxD51P5cdu68i8jsF4QrUGeek87
agent:uhCAkZh4bx0yww4HwFofKIGVPdwYg08FpjVP7WHIVJGDzeh28sZUE
agent:uhCAklt3NWP5UM1cV-C04Z6sfx3ScHw0C9lv2tUJxLSJAQwn1KK9W
Zero-Arc Create Data
zero: A zero-arc conductor that just creates entries with a timestamp field. Those entries are linked to a known base hash so that full-arc nodes can retrieve them.full: A full-arc conductor that reads the entries created by the zero-arc node(s) and records the time lag between when the entry had been created and when it was first discovered.
-
full(4 agents) -
zero(6 agents)
agent:uhCAk8d45YkVqkWPyjDnI8FBs9kuRd6qT7rVTlMIS8o9Lqpvwez2h
agent:uhCAkHMNhN4etmOGpZA-erFZSLnZ1Le2bDp3miWuyKuIz8u59_rdc
agent:uhCAkH_QX_1DlLwioBYf03UyveCdy-wVXr1EIzMq6DQjwa58AwCXE
agent:uhCAkXOj69AKff5uz_V6SYg6SMVr-8x4MQh2rBtxJK0bDCcFP0CX7
agent:uhCAkmuiqBgvR35R8TsJxfX3trMNRs1Z3PA8O9jSffZ-zuCTvuhXA
agent:uhCAknXgpOMvrqZxSLy0s9XkasXenyC2mZJrKjVNLg8weBDAwu00Y
agent:uhCAkrodxcLomoMVugtz1cLduFSu7RGJcOoQoCUjYPNaQkR4KYE5R
agent:uhCAkvewOuFN-XT6Kt85epB2nQ9g-YLroPgSv6EtciZV5kYq0qpF1
agent:uhCAkwE26ADumtHneWcn4R-eYhAmlRn3b_HNhwZUnVw1yae-lg3sK
agent:uhCAkyikiW81IrzgvElokxNtdI75RSQw4myRkH6hWo6X6bVyuJgiB
agent:uhCAkz0yKwXW8MQGBxMCMhFtDaY4T3ECrU4jkbzc6BED5JIMA28YK
get_timed_local_entries zome function.agent:uhCAk2wfhwccqlp-GINEtfzeq4TmYn0o61ajxaS80rZDxLogFW79C
agent:uhCAk3gViFRLpmUiomNAuJ-wip8EMyL4BSWwDS041q7LyGTSIium3
agent:uhCAk9CTi8vtmUdWZWEHZWI1HNdUi0VvVZEEq0nlanOkkkjnUxfN1
agent:uhCAkCQXXZavMms70qUvvzYU0W88jjE6GYL4IuUVp9ZH5D6P9iIvo
agent:uhCAkNoxzu5bcr2CBuNnd6lpxU1wqg3AtHKzfuozF_sVTiWCy4nHc
agent:uhCAkfHStOilIspWBz_a2MzPSl7HZgRZD3ac3aDeBR_oBzcy45KrB
agent:uhCAkpBXT74BAWJnsSHuZKWcA97tAJROSlUzTg9hSwW9cIULkpKS6
agent:uhCAksZjJKHTOCNen3WTm26zYw3L8TTsUQx1LVZq93zVrw8CKAJAv
agent:uhCAk2wfhwccqlp-GINEtfzeq4TmYn0o61ajxaS80rZDxLogFW79C
agent:uhCAk3gViFRLpmUiomNAuJ-wip8EMyL4BSWwDS041q7LyGTSIium3
agent:uhCAk9CTi8vtmUdWZWEHZWI1HNdUi0VvVZEEq0nlanOkkkjnUxfN1
agent:uhCAkCQXXZavMms70qUvvzYU0W88jjE6GYL4IuUVp9ZH5D6P9iIvo
agent:uhCAkNoxzu5bcr2CBuNnd6lpxU1wqg3AtHKzfuozF_sVTiWCy4nHc
agent:uhCAkfHStOilIspWBz_a2MzPSl7HZgRZD3ac3aDeBR_oBzcy45KrB
agent:uhCAkpBXT74BAWJnsSHuZKWcA97tAJROSlUzTg9hSwW9cIULkpKS6
agent:uhCAksZjJKHTOCNen3WTm26zYw3L8TTsUQx1LVZq93zVrw8CKAJAv
Zero-arc Create Data (Validated)
A zero-arc/full-arc mixed scenario where zero-arc nodes create data that gets validated and full-arc nodes read the data. The scenario has two roles:
zero: A zero-arc conductor that just creates entries with a timestamp field. Those entries are linked to a known base hash so that full-arc nodes can retrieve them.full: A full-arc conductor that reads the entries created by the zero-arc node(s) and records the time lag between when the entry had been created and when it was first discovered.
-
full(4 agents) -
zero(6 agents)
agent:uhCAk8G58ptV1N6I_ExUhMxlte6iYoSKdUTMBxsO5NvRzRf62WwJH
agent:uhCAkHXZJ0a6GbhlUEXP2CZLU4Z-pOpUEskCsIIRmvdY_aRarXwPv
agent:uhCAkLyx9Tyo8puHx0OXmiLonvPTA70AwemZlTSkKqu68zy3r93Qj
agent:uhCAkQsu--qxjazFxZmuXwLJha82UBh2yhdStkpb73zFIdyKjA_r6
agent:uhCAkY1vfBD9Vh3pSCZqbWsvdArbsgH-o8L4ZLMTMVKX8Gdc_Nn5Z
agent:uhCAkezwF7xPeFqYwdpgqw47bjk54BQIk-46HBnNow7VJMBpiq9lu
agent:uhCAkoZR9ghLvzX2oftNjYvvlQiYY5ernhWVY9Vzw3ZTZqotHYiQD
agent:uhCAkuhGEhW7LqUAIRrnYUlhFGXQU2Ca8yHncknpn4Ejgps8OwXGX
agent:uhCAkv5sXIIiFZdyKvPNhusR7TY7xBXvlJKHwbQ2sUo7DfnyMTwug
agent:uhCAkxOB0zyyDPYEkTpXGoJ1BIgcKfvQykhnKUzPHwFi4nQccMte-
agent:uhCAkzWLleM5KmAsjPjY6Z13ifxNNO5MHuWNLtNspOo9AX_pyGa6X
get_timed_local_entries zome function.agent:uhCAkDzC07p3HJrghGqFdBW3tAFMNHiZyPr13SAN6BxDzdzFhmYwf
agent:uhCAkMqirocalk1jglQamhVfI4gQG_ZxvlfLx4re1_MkxiATeZwJp
agent:uhCAkWLdXpJjuC1X-1gwifuYTOVWVYND5pF8to12V8FMNduKHOULL
agent:uhCAkZ1-zXheq2o-83EOQmLByjAJMerQhnYvtsKKWAfe99NhNe3ga
agent:uhCAk_cB1wmDDb8E3X-IOIyd0wln67xvr5OqfMEwvwpS1VLGn4o3P
agent:uhCAkd05Z64od93fhlEsCL1NTEvJbbLm_fdG4cBod4uPzmxgvJ6j1
agent:uhCAkmtiWd3uUfjeyDbP5RNAlM-C5xWkuau_BODtSGF7CLjprEOZz
agent:uhCAknHT7b2ZlnJfoxl1CyEXGrTiz4SUuez1Ygxpn5xWIEpbtUejo
agent:uhCAkDzC07p3HJrghGqFdBW3tAFMNHiZyPr13SAN6BxDzdzFhmYwf
agent:uhCAkMqirocalk1jglQamhVfI4gQG_ZxvlfLx4re1_MkxiATeZwJp
agent:uhCAkWLdXpJjuC1X-1gwifuYTOVWVYND5pF8to12V8FMNduKHOULL
agent:uhCAkZ1-zXheq2o-83EOQmLByjAJMerQhnYvtsKKWAfe99NhNe3ga
agent:uhCAk_cB1wmDDb8E3X-IOIyd0wln67xvr5OqfMEwvwpS1VLGn4o3P
agent:uhCAkd05Z64od93fhlEsCL1NTEvJbbLm_fdG4cBod4uPzmxgvJ6j1
agent:uhCAkmtiWd3uUfjeyDbP5RNAlM-C5xWkuau_BODtSGF7CLjprEOZz
agent:uhCAknHT7b2ZlnJfoxl1CyEXGrTiz4SUuez1Ygxpn5xWIEpbtUejo
Zome Call, Single Value
Calls a zome function that returns a fixed value. This tests the maximum performance of zome calls when the zome function is not calling into Holochain other otherwise doing any work.
- Default (1 agent)