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)
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)
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:uhCAkRMUMUqCc5DF79LL8YZ4ymTy3oGwAfr2r4F8zHTkxNsjnt77l
agent:uhCAkXAOoWe3qt0I2hu1HgiQJWsBCaRob0JUmwD-CIzyqxwJ7FceN
agent:uhCAkgVWIQ_9piVrO7lSueZ4wgwsSXFBFM4Tui2rijk8Bjlce1VqA
agent:uhCAkjTHUDDP2S1YjeRXkB84s40oKytoPEPClgailJPIKQOLb1Mrf
agent:uhCAkvmeE_-muYD9uJdh28jaWa4wnhrrbTdzsYt3kcrPAGpLtNGbI
agent:uhCAk0JJ1yZj8Yq5kmh5kWyKHUL9_g5tSGuKlWZGy3UjOlgsQ-uXy
agent:uhCAk52Ykhtkk0a8igRHY5nUuNm_QlwcX4mvulVqC11W9mrF59JFU
agent:uhCAk7PuxS0qZBQb-wvXuEJ5EYF7JY5YRXDBYzYPXj8fqMKCIj7-r
agent:uhCAkXihcxke5q6B-SPL7PFQh6bR2C9AjOXTPHZEkwcc9qtX1leOv
agent:uhCAkeO7DUTxhwYsEKw1RhOCMHeYfW2YZ8Xs6aYQk0AMlQhHMQQRD
agent:uhCAk0JJ1yZj8Yq5kmh5kWyKHUL9_g5tSGuKlWZGy3UjOlgsQ-uXy
agent:uhCAk52Ykhtkk0a8igRHY5nUuNm_QlwcX4mvulVqC11W9mrF59JFU
agent:uhCAk7PuxS0qZBQb-wvXuEJ5EYF7JY5YRXDBYzYPXj8fqMKCIj7-r
agent:uhCAkXihcxke5q6B-SPL7PFQh6bR2C9AjOXTPHZEkwcc9qtX1leOv
agent:uhCAkeO7DUTxhwYsEKw1RhOCMHeYfW2YZ8Xs6aYQk0AMlQhHMQQRD
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:uhCAkJU3bOXWTe0Q-vTjS6FNcPT7930aZklZWmgWaeoWa29HwyetL
agent:uhCAks2q2yatDPCYf5AnariPRCr-tNnhQk8aIeP3GTfWBZlbFUVe5
agent:uhCAkJU3bOXWTe0Q-vTjS6FNcPT7930aZklZWmgWaeoWa29HwyetL
agent:uhCAks2q2yatDPCYf5AnariPRCr-tNnhQk8aIeP3GTfWBZlbFUVe5
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:uhCAkF-2PC8OsOGd5hjDg53r2W1wA1SRTvxEr0wGQoctlnEVST_bF
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:uhCAk8TF_tpQ0Gml8-CbMJSRBjU9AG-ZuHDmf8W4mLdeQcx-MTRJP
agent:uhCAk8dX2l53SGVHVqdyogp15tugiPD_C3NGu_yygTrzB2ucuj7w8
agent:uhCAkMG8oBqRzRwrJF8Wa8ZqnnO5bD7n9_OMY6JoME-lM9cm19hSi
get_timed_local_entries zome function.agent:uhCAkbvtas692bUN6aSMJFcY4DlUVXDwLNDqomsd4ailx55pHuTIH
agent:uhCAkt9qPPK1O3YiIOihc5XBxOEosTtuqehCA8_MQPaJNrKu9A17x
agent:uhCAktXjVDmbQQ_axVQZNxp7WKjTUBcIbkC8sEHap5j3V094uDKiR
agent:uhCAkbvtas692bUN6aSMJFcY4DlUVXDwLNDqomsd4ailx55pHuTIH
agent:uhCAkt9qPPK1O3YiIOihc5XBxOEosTtuqehCA8_MQPaJNrKu9A17x
agent:uhCAktXjVDmbQQ_axVQZNxp7WKjTUBcIbkC8sEHap5j3V094uDKiR
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:uhCAk0oY4fWfw1ZV02OGhBWweHKz9g2vA5htYar3V6qHnIcQPJSVU
agent:uhCAk18n3Y5de7Ig54Q0i9xDjZ6gjXE5BVho8NBISgTM0Wc7t9C0T
agent:uhCAkJ1IpFxEtnKgDYR3ALWTg0w0u7sssZimv6bNqSKdcSidvm-3r
agent:uhCAkaq3mdSP5dhjvIn88IBN3-q4_v87kSy9zwzcEDh2RgvkvcAqa
agent:uhCAksJXIZMlb1xaLNGQMpflv6KBEIA_MP0gnOqgKbg0rCft_Mk_B
agent:uhCAkszSYL53ZF4LrunXrHhrCmXvjAXwDwTZzGVD3-VbGS4SogE0c
get_timed_local_entries zome function.agent:uhCAkpOIVsvJrZuWbshaQ78X1CaeSmR5FZ48ATi_Ii7496LsqpeXq
agent:uhCAksNAYsXKbFJeOWuN7zFL3neLU1NIOZCaAjP7Rgr7TUGJL0rJV
agent:uhCAkt1JsPA0B2lHyt2203r9wDqQiqHDRcMDoULWZf5pXgNoM7dcp
agent:uhCAkx8F0sJVuNH-H17awKcV20OJVlkdk1sXJcOethlnDThFDasxD
agent:uhCAkpOIVsvJrZuWbshaQ78X1CaeSmR5FZ48ATi_Ii7496LsqpeXq
agent:uhCAksNAYsXKbFJeOWuN7zFL3neLU1NIOZCaAjP7Rgr7TUGJL0rJV
agent:uhCAkt1JsPA0B2lHyt2203r9wDqQiqHDRcMDoULWZf5pXgNoM7dcp
agent:uhCAkx8F0sJVuNH-H17awKcV20OJVlkdk1sXJcOethlnDThFDasxD
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:uhCAkHTfs2jsmJnb0PeD8jnkn97zeK7wbDKJPK-yw-M2HbQTmCWBi
agent:uhCAkUgt9C12whc3WYk6SQHzFF3glvv_birvZyd-z-jOOZ0o3Pepi
agent:uhCAkixrfg9Nc_E2j5Crnjj8UMPW0CHWj8ryVJ8NuJ7Y4RQ6LmQ4c
agent:uhCAklM94-lYObbXHQK9PIdxb08GRSPeJeFb2mmRXvSNlgxtmDeFT
agent:uhCAkwqhB5_JBpV8vzonbYueWOMB7CRMQExI-Yly9l0bG6vkRaFTW
get_timed_local_entries zome function.agent:uhCAk6SsPY50OJy6iYj8LqFYD-Jp5fqLGHfEAk81ssq5Sjax13FjJ
agent:uhCAkATAnCuONQ5OtzJhdhx-T5lTVheTcuC69WPfPxhXTxU-6cuKM
agent:uhCAkeMTa8wdo2prChHtEbRU4PnXYZopcJs7hqL7wCcMz-YRVJPap
agent:uhCAkg9blNlmwF6i_p8IjkCrrrAdk0Wb71AWv7WJ8SHiMhQr6mrGk
agent:uhCAk6SsPY50OJy6iYj8LqFYD-Jp5fqLGHfEAk81ssq5Sjax13FjJ
agent:uhCAkATAnCuONQ5OtzJhdhx-T5lTVheTcuC69WPfPxhXTxU-6cuKM
agent:uhCAkeMTa8wdo2prChHtEbRU4PnXYZopcJs7hqL7wCcMz-YRVJPap
agent:uhCAkg9blNlmwF6i_p8IjkCrrrAdk0Wb71AWv7WJ8SHiMhQr6mrGk
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)