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:uhCAkT0Hy6YspDwe0PH1rwhb_9VTMs7AzU0YrcKM0vWME7pd-Qaea
agent:uhCAk__QpZc1wnutUSarIsnNsEio4BzJLNOuQUwNrXZ0VhplfhIbJ
agent:uhCAkeunT5zv7bTiIkhpfo6AWWxcE9MDK0b9yNzEq7T8aZ0l3CVDK
agent:uhCAknwn3-yEffKKDUvUWzegVqESmVVYAFwjVqJWLWLOt5OIJYtMt
agent:uhCAkqqaUhtTeo3cawKPmicS6HxrnpHZnvU0vFOel8fq7sVGWzfmZ
agent:uhCAk3zRgd2Tw-5c_-snBoAPRL9bCpF-wGnh6NtTesGZUU4rVTInH
agent:uhCAkCiLlFF8OVjHUsXjrSCxuRwk2t8JpoB8cdHkBC1dG28eH9v4Z
agent:uhCAkHe88RXKhyyiffBsUr_TRoO98i1ISSUUlvDoIxwUwbWZgKzoP
agent:uhCAkgO9mQ-5PTiu6o4D_3f40yNAYPCU0pajdnRIAA7Yjj8QUlFHe
agent:uhCAktTo6YVPB0yuZpjnjsPi2Y4uU0YcexeEAq4L4wPlxskmzkhZC
agent:uhCAk3zRgd2Tw-5c_-snBoAPRL9bCpF-wGnh6NtTesGZUU4rVTInH
agent:uhCAkCiLlFF8OVjHUsXjrSCxuRwk2t8JpoB8cdHkBC1dG28eH9v4Z
agent:uhCAkHe88RXKhyyiffBsUr_TRoO98i1ISSUUlvDoIxwUwbWZgKzoP
agent:uhCAkgO9mQ-5PTiu6o4D_3f40yNAYPCU0pajdnRIAA7Yjj8QUlFHe
agent:uhCAktTo6YVPB0yuZpjnjsPi2Y4uU0YcexeEAq4L4wPlxskmzkhZC
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:uhCAk5G_Q_sObLICe1kYcU6SQabnI3euuCtqNUY5wq4zPy2-DZOUH
agent:uhCAkVZlAsjmBAkudsMcK6DNTWesQxPBZ5qitCHnANYt5tIW6sixU
agent:uhCAk5G_Q_sObLICe1kYcU6SQabnI3euuCtqNUY5wq4zPy2-DZOUH
agent:uhCAkVZlAsjmBAkudsMcK6DNTWesQxPBZ5qitCHnANYt5tIW6sixU
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:uhCAk9whgJ6XMSqxGAUQaMpzrGG2REjFwmdkwGO1jShE_CgIMd2Ru
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:uhCAkcNHvgXCE_cJPX7iu1457wAChfMrV66gD3qICMcqmNbgXtFlR
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:uhCAkHOkKI-bVmZLKZnjYtbe_pHuVNkyhq-xLoLzGKqN3VEYumKcy
agent:uhCAkuSy1Odi-4f5xdMtsLuHLy0gZylLE9My-97BYUM3-KTxmkg8o
get_timed_local_entries zome function.agent:uhCAkHxQdTVHMBwdgVZYMLdzG72_RUe8HnNjGqd9o17LFuntGSL4y
agent:uhCAkRBsrNhxY6yWI81hbvpGYSIr8QsxXyuhLto9KzPLP8mr7vHHU
agent:uhCAkhBP1KeEAgiE18KA0KSHLtGDKWFTTQN4fkVYz-02Q6iwZyT3m
agent:uhCAkHxQdTVHMBwdgVZYMLdzG72_RUe8HnNjGqd9o17LFuntGSL4y
agent:uhCAkRBsrNhxY6yWI81hbvpGYSIr8QsxXyuhLto9KzPLP8mr7vHHU
agent:uhCAkhBP1KeEAgiE18KA0KSHLtGDKWFTTQN4fkVYz-02Q6iwZyT3m
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:uhCAk0H4FOtX5o6iO4bpqfdCuPM26ANKJYTbt3XujRPlxHoTeBJyl
agent:uhCAkA-8txYEC5z_O3WBXIGhfAMHnGRH-4KFLjNCaCWN35h7C2ImS
agent:uhCAkV5UNkCafdQVOME-keH_FKTnMyjHoIpjMBPIuzQwrvvWYKLu0
agent:uhCAkd7swV5TbSQCQ9iQa1eElFxQ5uVM8dRBt0s3npA1O2g1cJ0-6
agent:uhCAkeWFXulxyAzIxeig-FDZWwbr1JjcrzsBGCgXOTWMEvpLN4kKQ
agent:uhCAkoI_0JsXxnSYvdrDahR8rh_4v9eYYTLKA3ARvd-qI3QFVgmCZ
get_timed_local_entries zome function.agent:uhCAkYl1xpBLB5Yw6OEURkmsij5321PlDDsNwlypAT_lpNDgJ6pH8
agent:uhCAkeyP0npDCdaFx1qhT9QxuzalirxTGJOyB7fG89Kg5VyjWx4AF
agent:uhCAkhaAPS1jYMFyuXppI7Axe9LyjVLGW4g82fiDssbnbyvg-KNSy
agent:uhCAknGmkqSO1_ztOQOQu3LR9hmQkOH2ZjoHKo9WSWM7T4YQQ4CDh
agent:uhCAkYl1xpBLB5Yw6OEURkmsij5321PlDDsNwlypAT_lpNDgJ6pH8
agent:uhCAkeyP0npDCdaFx1qhT9QxuzalirxTGJOyB7fG89Kg5VyjWx4AF
agent:uhCAkhaAPS1jYMFyuXppI7Axe9LyjVLGW4g82fiDssbnbyvg-KNSy
agent:uhCAknGmkqSO1_ztOQOQu3LR9hmQkOH2ZjoHKo9WSWM7T4YQQ4CDh
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:uhCAkZ92oAbHs_6T2lVLRFdT6agCfUzD2w_-8O7bK3puXI1DViAKC
agent:uhCAkdxi_yzkRanCRjBAAz8h8LfaKtmv2VF-A32GiVjpj8OXX8ZjF
agent:uhCAkkgodtQS5uh_sOuIM3F6MiynTDxKxiNQWPis0slwJ9lcNcj_-
agent:uhCAkocIqWk4Caxj2U28L6nF-7VVvoIMoQwxJPxG8bzqiC-YetZK7
agent:uhCAkv__G0jpHGEQ6vz982HfFdsIkfH-LAER291R8W4iRDl4jvvHT
agent:uhCAkvhgoeB-vy_cyTUpgnw110bwoCl1j-TaZu49Gh4QtEd-mEjOd
get_timed_local_entries zome function.agent:uhCAkOFPwC--oxvEW9Zol_2i89_MG2GcY_bj2Vt-v2i2MR2okpkMH
agent:uhCAkZUYLHU8q7Ao4m0Xqp4hf4G6-2cFu0gb2-djtUV2I3yAn8qIE
agent:uhCAkhuCJVoDez7JgtmSSAINv8eqD2ri8qDXhyyARNdXMfM7imOS7
agent:uhCAksqfkQYlgq3pTWddSTys_1-YGTdfIFVE0nBF1Bxki1KpmtdNU
agent:uhCAkOFPwC--oxvEW9Zol_2i89_MG2GcY_bj2Vt-v2i2MR2okpkMH
agent:uhCAkZUYLHU8q7Ao4m0Xqp4hf4G6-2cFu0gb2-djtUV2I3yAn8qIE
agent:uhCAkhuCJVoDez7JgtmSSAINv8eqD2ri8qDXhyyARNdXMfM7imOS7
agent:uhCAksqfkQYlgq3pTWddSTys_1-YGTdfIFVE0nBF1Bxki1KpmtdNU
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)