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:uhCAk9Nwvjn5yos31n0pZluEFdOz2oUt-xaU9a0NSyYG1SiaK0GSF
agent:uhCAkDd7VXKCYLkavSIFeBvlfWQYY7ILWXzs3rNcDckBoGZRJXMuW
agent:uhCAkFghQOmIE7nuRhVwlstZT1O5V01yb_7_HxoHN3-pW3DBV1-NN
agent:uhCAkZgmqkinpHgoTxzzvc2cMVhQ4kWLzhaZmjSY5djdArI6xkwX-
agent:uhCAkfLeGWtEB4mZsoA2b9h3ELcE2RsWixdZq7I0pL26VvrD39b4H
agent:uhCAk5P2AtdhRCzCVK2xrrE9iGtge8BpehX3yq3ek59SXwy5Yd7oR
agent:uhCAk8DAuDu_WernmwfZ5cW3UF1EHizjyETa-R9O_ICV3tigyVwny
agent:uhCAkNciXYJm390rt5buAaXY6fU7q7pcdBHGzMtP3gn6kqcR2bXrv
agent:uhCAkdwF_Bz3WK7jCaspp7YiUGGRvyRAvVxuBRJ0-gIbmRCip7SSQ
agent:uhCAkidaoayf61a4tq96mDJexr-gGjC5bjkdre9KwUNwxYl8qvAed
agent:uhCAk5P2AtdhRCzCVK2xrrE9iGtge8BpehX3yq3ek59SXwy5Yd7oR
agent:uhCAk8DAuDu_WernmwfZ5cW3UF1EHizjyETa-R9O_ICV3tigyVwny
agent:uhCAkNciXYJm390rt5buAaXY6fU7q7pcdBHGzMtP3gn6kqcR2bXrv
agent:uhCAkdwF_Bz3WK7jCaspp7YiUGGRvyRAvVxuBRJ0-gIbmRCip7SSQ
agent:uhCAkidaoayf61a4tq96mDJexr-gGjC5bjkdre9KwUNwxYl8qvAed
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:uhCAkCqjqh1QOfnp-33xGtmRszdpB0k7yMcTHxzgIzNYZLou4tcSu
agent:uhCAkgpeN0cwiNTrYtY_A2Az_Y8KoGt5tVVPOdai-zN7uBAk9uvNq
agent:uhCAkCqjqh1QOfnp-33xGtmRszdpB0k7yMcTHxzgIzNYZLou4tcSu
agent:uhCAkgpeN0cwiNTrYtY_A2Az_Y8KoGt5tVVPOdai-zN7uBAk9uvNq
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:uhCAkbo4g5cW73AwOqqk3QYSmc5cKFD4urh-n9VU4calZdS_n0Sj3
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:uhCAkiKo5HC-f-EQpTzQGfBOif13rt-J_fmZEl6xJ1nJkmS_E775K
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:uhCAkbgh3Yy-Ct6Iw0KNKRr9eE83k5GYfCvJWg8dYnZolezB8K7Oy
agent:uhCAknPK-7bROKUh1HlWrl4SjdF77plAqhyD6XS0MV2UlYVUj0wfd
get_timed_local_entries zome function.agent:uhCAkGlVJCiimGDL49YVNp-oZWt5WHO9XPYN34hAkHPXBfi-Goxiq
agent:uhCAkniujGlUpGty2rkx9sjBMSCeq2vTSbs1UpctNmV92LIiTY1HW
agent:uhCAkrmIFfR6X3QIvhyrXoO6T0RU22aM5XBWUKTQdmGfbWalbRh1S
agent:uhCAkGlVJCiimGDL49YVNp-oZWt5WHO9XPYN34hAkHPXBfi-Goxiq
agent:uhCAkniujGlUpGty2rkx9sjBMSCeq2vTSbs1UpctNmV92LIiTY1HW
agent:uhCAkrmIFfR6X3QIvhyrXoO6T0RU22aM5XBWUKTQdmGfbWalbRh1S
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:uhCAk9cqQFMnB2QXwTPGkfDxqF7DMkb-6bV0807peqYCXK5znGBAF
agent:uhCAkOWRWu2R9eEanucwGagWENHAX8K6UsPaZFt1c3MtRSKcvSHvB
agent:uhCAkac6f0z_FX6xRmCXM4MuJfVoAlBujqFd_M7VUKMFYuR0yxVly
agent:uhCAkexVGLodSKHMA5CBQL8o3upIca6d8kh6Ess6UIQaykuM-Jvk1
agent:uhCAkuXTEQ5chLD_7yc4tE3Vv4P9CwaABEOKWeF-Gd-zqWUqHdIG1
agent:uhCAkvp_rfG34HXVaLxykNoC-X0jLZirxhGMNSI5KvfO3crPjBZw6
get_timed_local_entries zome function.agent:uhCAk3jBxURJpeF05YXvQgCfQSQvav8xvez5EUJOi5m3Svk7uBrLb
agent:uhCAkJV73HauDCVbXuktLKcR6ETtUv3sxdJolb5B09O-5sJrdmF9_
agent:uhCAkY14zUx7a1i6Ss3aGIYo7Ouw6aHRIe38tT1-9W15TKqK9VME9
agent:uhCAkcO5vhaGEDSSuuv_MqSQfmqeT944WcalhjsJDJWyKiCJhXULB
agent:uhCAk3jBxURJpeF05YXvQgCfQSQvav8xvez5EUJOi5m3Svk7uBrLb
agent:uhCAkJV73HauDCVbXuktLKcR6ETtUv3sxdJolb5B09O-5sJrdmF9_
agent:uhCAkY14zUx7a1i6Ss3aGIYo7Ouw6aHRIe38tT1-9W15TKqK9VME9
agent:uhCAkcO5vhaGEDSSuuv_MqSQfmqeT944WcalhjsJDJWyKiCJhXULB
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:uhCAk0GpLVJCL9gocgO4Zorulz37zD-nsH1_Bt3KJ0HJrRd4Kky9H
agent:uhCAkBGnZpDG9GrrI4SPYZiSnGkJQlaToa2rao3ipcCkQ4S7zQqcY
agent:uhCAkBqEO1PRgnwoUcopdsdjs1qwG-E4XXIKcpl-jfWrdDxAiSG59
agent:uhCAkbHoDi_XmCPuZoLk3CZL46Nkkd9t0FnNG0AEBI5Id5CG8oFlF
agent:uhCAkc9BMQvx03nJywaEGZrpoNFYVvekKfeHEVjupouivdF1F1x3H
agent:uhCAkoV3Kg1ifQqiGHLA4qmpKgxVQsBu_OCb8GjDrIwFizKnXcg_M
get_timed_local_entries zome function.agent:uhCAkR5307rYBorAG0PvrB7FzPc9mY5B6mPzTI8xUBqSdjnOnEOfB
agent:uhCAkSJ1q4IOvr7Cj0zwkwbNGqbMQQO632vv_gsrk3JZBi642NI60
agent:uhCAkmd9MOnn-_xroid8bL3OWptsAdDrozUQm82X3sbOkeGqFXPsa
agent:uhCAkmqVpd5yJG8DhzSULnjqWdrPHwGCu8c5qGifQDJgHJkq_M8Jc
agent:uhCAkR5307rYBorAG0PvrB7FzPc9mY5B6mPzTI8xUBqSdjnOnEOfB
agent:uhCAkSJ1q4IOvr7Cj0zwkwbNGqbMQQO632vv_gsrk3JZBi642NI60
agent:uhCAkmd9MOnn-_xroid8bL3OWptsAdDrozUQm82X3sbOkeGqFXPsa
agent:uhCAkmqVpd5yJG8DhzSULnjqWdrPHwGCu8c5qGifQDJgHJkq_M8Jc
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)