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:uhCAk92IvUKGlnub_EPc4EAHIzJ4DMcaSinwrjc_qZg4YPoFU7dlJ
agent:uhCAkeMTTUoZlOtOkkZOzWEm-7U3iRQ8l-LorTLskow6kymiRxqyg
agent:uhCAkeRIpALMlGryLtbRfj8eTr85HzDEwLwACvq94ZloglCFvtJA1
agent:uhCAknc1RcZ3yAjYXIsY-W72exhMHjieeTCcMgqb0_xjPV3lGFeJr
agent:uhCAkpuWGQUVNTYC_o4j6YE0rzhY2HwBfXBijZtNldqF7Z_UYIXa6
agent:uhCAkHm5QWmQAx9o9bOsdUbwzDOuODa-MqaJFlP5f1-Hy-Nn3zEAe
agent:uhCAkUebcZRCjzyCwpmCUXpWy8Ykk6zmAPxaLRG8bf_PlftQ84Hex
agent:uhCAkmJNw9s1xlGxN06C3IQGbTZTosS6cZjY__UgTvhgXvfQn5A7y
agent:uhCAkqH9BsQCPd4yFDNbfORuXZeZM-LuhQKYH5RIOuUioVzUiU9q4
agent:uhCAkwnmfGN1JIlOS0YPJQxnm7M2ccgVITqOhQTorPs4_wt2PCzQo
agent:uhCAkHm5QWmQAx9o9bOsdUbwzDOuODa-MqaJFlP5f1-Hy-Nn3zEAe
agent:uhCAkUebcZRCjzyCwpmCUXpWy8Ykk6zmAPxaLRG8bf_PlftQ84Hex
agent:uhCAkmJNw9s1xlGxN06C3IQGbTZTosS6cZjY__UgTvhgXvfQn5A7y
agent:uhCAkqH9BsQCPd4yFDNbfORuXZeZM-LuhQKYH5RIOuUioVzUiU9q4
agent:uhCAkwnmfGN1JIlOS0YPJQxnm7M2ccgVITqOhQTorPs4_wt2PCzQo
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.No scenario template for full_arc_create_validated_zero_arc_read!
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:uhCAk4x_uAe5gxLDZAAPM2xtkOAEl2cReww3Usj3qEhbr11ZLELnr
agent:uhCAkVQ-6SbXS_Suok4fghoqihdeSGPcYVHAdaONMjI9SWM_XZTCf
agent:uhCAk4x_uAe5gxLDZAAPM2xtkOAEl2cReww3Usj3qEhbr11ZLELnr
agent:uhCAkVQ-6SbXS_Suok4fghoqihdeSGPcYVHAdaONMjI9SWM_XZTCf
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)Two-party countersigning
This scenario tests the performance of countersigning operations. There are two roles: initiate and participate. The participants commit an entry to advertise that they are willing to participate in sessions. They listen for sessions and participate in one at a time.
-
initiate(1 agent) -
participate(2 agents)
agent:uhCAkQFnC7e6fz79luZlKlRJ6vwJSeXGtrcl4LM_mRxiJf9xoF05h
agent:uhCAkWFzvOVGJUjJL5vWsi7Zt0BhVvXNj9aatUTa64S9qgnf91y34
agent:uhCAkQFnC7e6fz79luZlKlRJ6vwJSeXGtrcl4LM_mRxiJf9xoF05h
agent:uhCAkWFzvOVGJUjJL5vWsi7Zt0BhVvXNj9aatUTa64S9qgnf91y34
agent:uhCAkQFnC7e6fz79luZlKlRJ6vwJSeXGtrcl4LM_mRxiJf9xoF05h
agent:uhCAkWFzvOVGJUjJL5vWsi7Zt0BhVvXNj9aatUTa64S9qgnf91y34
agent:uhCAkPDEqvGFD8VJ1mOhnd72rSuokqc_z_drYL8sncl5oNslIguo4
agent:uhCAkPDEqvGFD8VJ1mOhnd72rSuokqc_z_drYL8sncl5oNslIguo4
agent:uhCAkPDEqvGFD8VJ1mOhnd72rSuokqc_z_drYL8sncl5oNslIguo4
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:uhCAkH1ZFcxyFy_h7xJi9rJlkXWDvJjEhl5UYmVjk-sA5itfWIoss
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)
No scenario template for write_validated_must_get_agent_activity!
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:uhCAk3ZBivR9c1FD2sKAigUEbp00MC7-ZewCgRfFkYaUoLxTw6A8O
agent:uhCAktY58LnHFR2hq4N_NrSod70yk2SAyqwBrb_WJzf1vRvkyd9KQ
agent:uhCAkuBYu1mcoJPdIyJpr2hoKEUxmy9OLJly-Ts7sqHiqpwPug3Wo
get_timed_local_entries zome function.agent:uhCAk3uT4e0VqqAdo4SBzaNxhPAjTtaIy5dCDDcmtPYdShiD_zwyB
agent:uhCAkI3VoT1NxdegrQxXKT_SWAWcLA3mH0zot_OZyOYkY3YLH0Jer
agent:uhCAkV5I0XzZSQqT_mfSjBNyzskoQDYAWME688JbC8QE5yYEAWimF
agent:uhCAk3uT4e0VqqAdo4SBzaNxhPAjTtaIy5dCDDcmtPYdShiD_zwyB
agent:uhCAkI3VoT1NxdegrQxXKT_SWAWcLA3mH0zot_OZyOYkY3YLH0Jer
agent:uhCAkV5I0XzZSQqT_mfSjBNyzskoQDYAWME688JbC8QE5yYEAWimF
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:uhCAkElaINLdvM7OeTnrB_TO7keujLKlmlDOj0kNxA-z-B7PGg1kA
agent:uhCAkH0UcNhmPPUaBmZesnNcMh4M2kCWC4M4ux_YsyRWIxrT5Oa-8
agent:uhCAkS1G3ovAaRNTYUZ-XLsukupKXUeIB2L_bNN7buLmmF3G8OjV6
agent:uhCAkfheKH5-Ttmz0_lfe4CV7z1UcAj-9_mWxn746Lh13QhgCDOGj
agent:uhCAkh2WLgsRaz3jO2KZSZ-WoCG_RXGIM2sHztH4tx4ftNfGX3VM5
agent:uhCAktdv5wt_eQ7i3I8uK1bAUcCuFdC-HQy7l49O-bGsWCUL59Tbn
get_timed_local_entries zome function.agent:uhCAk4ULjo2QYORIpgWLvrt-yCYKdJurJw8D6wSpJrIHot6wZZAF8
agent:uhCAk9S1CD6nyhghvPAnBCDtRQJQbgFQCyg7zr2_N21tEG8j12tWz
agent:uhCAkkIRkc8z1AOiOlAPsNnzgPoiIJwotdyTNQlvIaMHTdpyNRi37
agent:uhCAkw2ppXvGr00ON1P9uw-3VsFKqGxe2rkSe-Q6D_njeJkg0DchD
agent:uhCAk4ULjo2QYORIpgWLvrt-yCYKdJurJw8D6wSpJrIHot6wZZAF8
agent:uhCAk9S1CD6nyhghvPAnBCDtRQJQbgFQCyg7zr2_N21tEG8j12tWz
agent:uhCAkkIRkc8z1AOiOlAPsNnzgPoiIJwotdyTNQlvIaMHTdpyNRi37
agent:uhCAkw2ppXvGr00ON1P9uw-3VsFKqGxe2rkSe-Q6D_njeJkg0DchD
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:uhCAkOpwoUosk3NqrCkUDNOyct-0Uk5Pj4KqAwdEdXJl4J8olU9kV
agent:uhCAkPidNwk2sdJP7x8ZHhpfxCO9g3eKHD8TFcELzpdM2aBWnp2DM
agent:uhCAk_r-o-nlhn9HBJhl0in-OQTtKkQ-yiPe-lZYb0rZ9ftCh9Wee
agent:uhCAkfrHqdEhyGjpzzLBfe7RlveMDQpBOGXDYIByyYxrhhEzDrHPU
agent:uhCAkuzukekz7qu_xPXLHAvGUJMz54YBzBgG_YnI5Iiskk7baH4fh
agent:uhCAkv3Q2f_A0XqsUCb2VMHFk7KJ6LXYxdGXsK26A5Snx0y3Ab0dc
get_timed_local_entries zome function.agent:uhCAk894PwJlPjHm4Y4dKc12ZmP1T9cB5fmFMRwcnCVuSgmFcak_w
agent:uhCAk9MjIcMvvAywIECjX6fAPTQbx5kdq9b1c-n8R9XFfK95kZFBb
agent:uhCAkMp4QfTOlVAcfd-T2RxgIgPEm_jTAwBCTrLA1xe_pzXH3Pil2
agent:uhCAk894PwJlPjHm4Y4dKc12ZmP1T9cB5fmFMRwcnCVuSgmFcak_w
agent:uhCAk9MjIcMvvAywIECjX6fAPTQbx5kdq9b1c-n8R9XFfK95kZFBb
agent:uhCAkMp4QfTOlVAcfd-T2RxgIgPEm_jTAwBCTrLA1xe_pzXH3Pil2
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)