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:uhCAk3PhMxPsmuTBlMZqWCq99aDrL9bI0-7FD9Wv7pvZCx4Il5IJi
agent:uhCAkHBXhRAnujzimhqJyzFkhlN4HEsXmWJvvzPTpLw4CPfG5K94R
agent:uhCAkSRZvOPiHnIV2ZMdTCMWEyfLe8bejafK9SsLGTDNlm9mBamN9
agent:uhCAkYvm-5MBq-kL7TvZrLcPCSVCF-6e5IBeY4IM0hneDWDa6szg_
agent:uhCAkklVvzGM02ySEoBnqotNmM6mEGVwUaNHWebb_16bx50TCGRcU
agent:uhCAkUQzbxWF4g7mu6zrXQOUW26WW3j_iT8ezVUev0guPvzwii_7I
agent:uhCAkbnMiyQ4H08CL0SyDyH9-gId_Z9oRXb6iND6jdX94W56T8v1n
agent:uhCAkhUpz1rv3vw_V3XOB0aoeAekjzMubo2Z6qRTlWXvZBXQ6tyTz
agent:uhCAkmQIK4muv7FRF4B84aW7uZIvypHiw2UML2BZ8HLO9_x1EZ1Ip
agent:uhCAkUQzbxWF4g7mu6zrXQOUW26WW3j_iT8ezVUev0guPvzwii_7I
agent:uhCAkbnMiyQ4H08CL0SyDyH9-gId_Z9oRXb6iND6jdX94W56T8v1n
agent:uhCAkhUpz1rv3vw_V3XOB0aoeAekjzMubo2Z6qRTlWXvZBXQ6tyTz
agent:uhCAkmQIK4muv7FRF4B84aW7uZIvypHiw2UML2BZ8HLO9_x1EZ1Ip
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:uhCAk3cPjcMcVNzARcE40QkECVqDxd2T8hN-F1fZzxq5ByvyQQAN2
agent:uhCAkPEvQOPOdBhqOnyMWrlMtp3ZEKf4yVtsGcLcqWsliEtGxx0Gn
agent:uhCAk3cPjcMcVNzARcE40QkECVqDxd2T8hN-F1fZzxq5ByvyQQAN2
agent:uhCAkPEvQOPOdBhqOnyMWrlMtp3ZEKf4yVtsGcLcqWsliEtGxx0Gn
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/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:uhCAkE-7bA4r-rhY_U6jS6z6ATYVQrr7VtYD9B94c1c7SQFdRRg3s
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:uhCAk8XiDI-u0_ba_5Q6KwOsMfF68HifFLV80qWcN38VMhIEJa0zq
agent:uhCAkFBDg3FV001XZNhTSg65AZxEkVjy2Fiblr5BCZqr-nXHY9DR7
agent:uhCAklIVposGnHLyzSoif_-fpDhBrDqPL_VYsxjClrIMNgDAOCXCB
get_timed_local_entries zome function.agent:uhCAk9qylXCc7xmQplVYYGVQMkuzB7BCAlPHX6DE0EMKAFmHPgNuE
agent:uhCAkSD5f-MrRi9J6Sfsy9T0c7c7eSBsiLo6-KLgAzgZEyfBSrNsi
agent:uhCAknvlBNMI6XHEn8X_0IXjbklHQ9P38KcdZm3cBa6U-p05u0Wxl
agent:uhCAk9qylXCc7xmQplVYYGVQMkuzB7BCAlPHX6DE0EMKAFmHPgNuE
agent:uhCAkSD5f-MrRi9J6Sfsy9T0c7c7eSBsiLo6-KLgAzgZEyfBSrNsi
agent:uhCAknvlBNMI6XHEn8X_0IXjbklHQ9P38KcdZm3cBa6U-p05u0Wxl
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:uhCAk-kHofVaE44hmClaynT5r5Z0WFKTzbmrvKQ0mrf3p6Fa8NO7D
agent:uhCAk5xsK3uecoSxoesiXlZOk3ukjxZXBZtMHUllEDSTcvdashCg1
agent:uhCAkTIjn-DfCuoarpKGrjrDqLiDoKoFuo27FeAa4JNKxJa-FNE6y
agent:uhCAkdiTFF9fjKaGkyfsqnLx5A2nKVlRmbD8t_Xe60PloQAtXHjN-
agent:uhCAkphyReBzXojQy1rfud1DCKX7rqRitzhtghhbdJoVWidYa5Lo_
agent:uhCAkrSFaexZoEUyt-MZaqAnpOGyUf_LxbdKwDOtK0HznqkgrHdnX
get_timed_local_entries zome function.agent:uhCAkLsPuen5CxS0SUf4GWUtvPMkmhwIfD4ByE-7D0x_cLVIZ9mFW
agent:uhCAkSo2R1fFnuqQO2zAu4a3OKL_smBttPE7q7P80m4-gUBc8wKZ0
agent:uhCAkg6v4xf9HySrtlahTcJGwAigHrYwB6ITQ6IXv6DCoiw0HPYkf
agent:uhCAkkmx26iGDAkxcruXXg7MWPXtn4cC_sSuze3fK_RcKNF6ezUb6
agent:uhCAkLsPuen5CxS0SUf4GWUtvPMkmhwIfD4ByE-7D0x_cLVIZ9mFW
agent:uhCAkSo2R1fFnuqQO2zAu4a3OKL_smBttPE7q7P80m4-gUBc8wKZ0
agent:uhCAkg6v4xf9HySrtlahTcJGwAigHrYwB6ITQ6IXv6DCoiw0HPYkf
agent:uhCAkkmx26iGDAkxcruXXg7MWPXtn4cC_sSuze3fK_RcKNF6ezUb6
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:uhCAkBZ-AV33ZyThYmzUcYc94jWy3bDAAR0xcMx6BRnY0swxiFkeW
agent:uhCAkEeLKnLy_TFGHrT4dImB725ZEYY1S39Egc4y1wv-nXIHidOi6
agent:uhCAkKHl-aysApnbtWt90crzhnyzZcifTdHsRASum2PsfjtvovzET
agent:uhCAkf62EHcc2GoRTuiFCswaHYMltDoEKc2Lcx2c65HEswxDFrSRd
agent:uhCAkjNqYzjYCeZDsoPbJSgXNc1jJeSsWNyRb58weli00jd3qpUGh
agent:uhCAkxAoRmySD6hmjsWVQi8oJd_mlARkW_rZkhEWWrAycxZP6eMO9
get_timed_local_entries zome function.agent:uhCAkAY8JJdzXoGG1Z0332tD_W-DQDkIqqbu3IxQiOfkeiDsFpzKl
agent:uhCAkYzDOf-9o8TZyBna6WI-DvF4zcaDAfwIbWEVYj2eUlz9OD39H
agent:uhCAk_QBvW1qdms8rIOUwxu5lLymYqKCQGCNQD4rwFh94BiMYoiRA
agent:uhCAkzEcldU-NjohCgf_KmtX5uBbcWPHtgoHU4OAQsPnseDhU-ZDA
agent:uhCAkAY8JJdzXoGG1Z0332tD_W-DQDkIqqbu3IxQiOfkeiDsFpzKl
agent:uhCAkYzDOf-9o8TZyBna6WI-DvF4zcaDAfwIbWEVYj2eUlz9OD39H
agent:uhCAk_QBvW1qdms8rIOUwxu5lLymYqKCQGCNQD4rwFh94BiMYoiRA
agent:uhCAkzEcldU-NjohCgf_KmtX5uBbcWPHtgoHU4OAQsPnseDhU-ZDA
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)