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:uhCAk78ss5HneRV7shMsZWmgxuJ3L2MARL3obzYhVCRWzd2ELAACg
agent:uhCAkIfdBKMdvOTZ4li3hnNJ-Keb_w1AKK4Ra46WYfDPj_tEH1dIO
agent:uhCAkSF_XuL5QkizdZ8GPEd6eveDDnsN4FpfGIuCS2QOYAn8c5U7y
agent:uhCAkU04kOKTteXdXZupHY4ImBy_dppelKX0NrFLoy2lIRI-Cvk2D
agent:uhCAkgP98ehRkjOeX7GJQD97cPNMyJdTOLecFjm5_zUakOvpH3OtP
agent:uhCAkE5FKBtKbIrGfmNavcebukByvvwPHsePDsSeg3tzapMj_lFKP
agent:uhCAkGHnAf9gdqGARWEDdM8Omj5moYMgKpQLioqTcBDOhyXnBBf6I
agent:uhCAkRXO0HTGPRs3yqiPY574GhqgYQv1cjoUmeETvoArZuFFLUBpX
agent:uhCAkYo6MjEAz6nqGYze8S1T6SP782jSfDv_KRgFNIFaU4egANyZ0
agent:uhCAkjry9Gfm4Ppy8SnX9mb29EkCRBQydDrPbLWHIP-hWqWa6oYJp
agent:uhCAkE5FKBtKbIrGfmNavcebukByvvwPHsePDsSeg3tzapMj_lFKP
agent:uhCAkGHnAf9gdqGARWEDdM8Omj5moYMgKpQLioqTcBDOhyXnBBf6I
agent:uhCAkRXO0HTGPRs3yqiPY574GhqgYQv1cjoUmeETvoArZuFFLUBpX
agent:uhCAkYo6MjEAz6nqGYze8S1T6SP782jSfDv_KRgFNIFaU4egANyZ0
agent:uhCAkjry9Gfm4Ppy8SnX9mb29EkCRBQydDrPbLWHIP-hWqWa6oYJp
No scenario template for full_arc_create_validated_zero_arc_read!
Mixed Arc must_get_agent_activity
A scenario where write agents create entries in batches of 10, while must_get_agent_activity agents each pick a random write agent and repeatedly attempt to create an entry that references the chain top of their latest batch. This reference means that the entry's validation function needs to make a must_get_agent_activity call.
The purpose of this scenario is to measure the time it takes for published agent activity data to be gossiped among authorities and become available to peers that query it via must_get_agent_activity.
This test is similar to Write Validated must_get_agent_activity, but some write agents are zero-arc and all must_get_agent_activity agents are zero-arc. This forces the must_get_agent_activity host call to go to the network.
-
full_write(3 agents) -
zero_must_get_agent_activity(5 agents) -
zero_write(2 agents)
action_seqaction_seq of a write agent successfully retrieved by a must_get_agent_activity agent. This reflects the DHT's ability to propagate agent activity ops and make them available to querying peers.write agent's creation of a batch and a must_get_agent_activity agent's successful discovery of the batch and creation/self-validation of a new entry that depends on it.must_get_agent_activity_agent:uhCAk2Pp6fPD2Ert41vRl54ne0GQlzoPicFxheCm_vvKyL8y9SFrH
must_get_agent_activity_agent:uhCAkBcGVS3qBdBwXIvl61Iwtpi6-XQ8aVIqMnbQIEp0ujq3of1C8
must_get_agent_activity_agent:uhCAkOQbN7_JL15aoo_iO_knJB1m700HQ76vPeOj_6hcgh1S2rHzY
must_get_agent_activity_agent:uhCAkQMau6xmeHa6E2UlXAypMH6d-D-VR_1AQJfSZ7n1oJuSBhfjL
must_get_agent_activity_agent:uhCAktWY6mJQhFjobWWH7p4ynuAjVA6yiIej81DfKKQGYchyelnga
must_get_agent_activity agent was able to discover batches and create/self-validate new entries that depend on them.must_get_agent_activity_agent:uhCAk2Pp6fPD2Ert41vRl54ne0GQlzoPicFxheCm_vvKyL8y9SFrH
must_get_agent_activity_agent:uhCAkBcGVS3qBdBwXIvl61Iwtpi6-XQ8aVIqMnbQIEp0ujq3of1C8
must_get_agent_activity_agent:uhCAkOQbN7_JL15aoo_iO_knJB1m700HQ76vPeOj_6hcgh1S2rHzY
must_get_agent_activity_agent:uhCAkQMau6xmeHa6E2UlXAypMH6d-D-VR_1AQJfSZ7n1oJuSBhfjL
must_get_agent_activity_agent:uhCAktWY6mJQhFjobWWH7p4ynuAjVA6yiIej81DfKKQGYchyelnga
create_validated_sample_entry zome call timingwrite agent's source chain.agent:uhCAk2Pp6fPD2Ert41vRl54ne0GQlzoPicFxheCm_vvKyL8y9SFrH
agent:uhCAkBcGVS3qBdBwXIvl61Iwtpi6-XQ8aVIqMnbQIEp0ujq3of1C8
agent:uhCAkOQbN7_JL15aoo_iO_knJB1m700HQ76vPeOj_6hcgh1S2rHzY
agent:uhCAkQMau6xmeHa6E2UlXAypMH6d-D-VR_1AQJfSZ7n1oJuSBhfjL
agent:uhCAktWY6mJQhFjobWWH7p4ynuAjVA6yiIej81DfKKQGYchyelnga
must_get_agent_activity calls.agent:uhCAkBcGVS3qBdBwXIvl61Iwtpi6-XQ8aVIqMnbQIEp0ujq3of1C8
agent:uhCAkOQbN7_JL15aoo_iO_knJB1m700HQ76vPeOj_6hcgh1S2rHzY
agent:uhCAktWY6mJQhFjobWWH7p4ynuAjVA6yiIej81DfKKQGYchyelnga
behaviour:full_write
behaviour:zero_must_get_agent_activity
behaviour:zero_write
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:uhCAkW64u50ZHi_vbfSLWt6PB0C0qVbZK8sbEypYJ73kTHS5mYjKb
Write Validated must_get_agent_activity
A scenario where write agents create entries in batches of 10, while must_get_agent_activity agents each pick a random write agent and repeatedly attempt to create an entry that references the chain top of their latest batch. This reference means that the entry's validation function needs to make a must_get_agent_activity call.
The purpose of this scenario is to measure the time it takes for published agent activity data to be gossiped among authorities and become available to peers that query it via must_get_agent_activity.
This test is similar to Mixed-Arc must_get_agent_activity, but all agents are full-arc.
-
must_get_agent_activity(1 agent) -
write(1 agent)
action_seqaction_seq of a write agent successfully retrieved by a must_get_agent_activity agent. This reflects the DHT's ability to propagate agent activity ops and make them available to querying peers.write agent's creation of a batch and a must_get_agent_activity agent's successful discovery of the batch and creation/self-validation of a new entry that depends on it.must_get_agent_activity_agent:uhCAkW6F41Vl1ZLZxXqa779QpIqdWiFsJK5URgY6rno3Cof_MrOB1
must_get_agent_activity agent was able to discover batches and create/self-validate new entries that depend on them.must_get_agent_activity_agent:uhCAkW6F41Vl1ZLZxXqa779QpIqdWiFsJK5URgY6rno3Cof_MrOB1
create_validated_sample_entry zome call timingwrite agent's source chain.agent:uhCAkW6F41Vl1ZLZxXqa779QpIqdWiFsJK5URgY6rno3Cof_MrOB1
must_get_agent_activity calls.agent:uhCAkW6F41Vl1ZLZxXqa779QpIqdWiFsJK5URgY6rno3Cof_MrOB1
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:uhCAkRY_Wtw6Yrke5xKzpRa7DLtJNUe9sbWezkzCVFlqNJScaaz0l
agent:uhCAkpogwu0NIWKUoiyhR0bl8hEC8xF9tNnOKjG2nKtJIn95dz4_z
get_timed_local_entries zome function.agent:uhCAk7mVAuOplyPCZ7yFI4n--fDs35yQVrtncighZtU09g-GGMnGy
agent:uhCAkWxOwnqdS2uLOtDM6xZHEMr2rp3qSjozeEYEnwm45Kr_b0g8k
agent:uhCAklVcX0qsal4YNJ5gBiSWg3IP-Pb-SHyxfAqYYaCtKjDHkJqrw
agent:uhCAk7mVAuOplyPCZ7yFI4n--fDs35yQVrtncighZtU09g-GGMnGy
agent:uhCAkWxOwnqdS2uLOtDM6xZHEMr2rp3qSjozeEYEnwm45Kr_b0g8k
agent:uhCAklVcX0qsal4YNJ5gBiSWg3IP-Pb-SHyxfAqYYaCtKjDHkJqrw
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-vFj1pfczhbIqoVLUOacJOjjJ-YODTc7bAG10kPd7Q6CqfeV
agent:uhCAkB5CdMbbrcnfdLeTdF8jkSsk-5mRlnKpUDLq9jSLyncjP9ZIZ
agent:uhCAkOplmFsgLLAmDfBoWCY6ql0ZfZgEhvSUNAz4GE-JK3ITnYm98
agent:uhCAkX8wqGn6mq8baK-OHoBu5ZEZSsbGPZldA3amBzFlrLxGhP9tR
agent:uhCAkYM80gl8DjSSRbs9Mj5ntdgNmSAVmHSFMZQ4_Mj0ilo7aWmfL
agent:uhCAkxFtrsdlYIwcwyU-h-iGlVph2k71vla5zmUOf_E4uSJQ6AJVy
get_timed_local_entries zome function.agent:uhCAk6hPxNNIlvJG5jaI2vcw3P8uBGNEFgGEM1ZcwX-HlJ3FTvIlj
agent:uhCAkQkM2pzpBvaFFf0yzpjtC8lvXm-eZmvz99lb6ZA1s8WLhArHy
agent:uhCAk_Yiq8FVG9ZI63xHXzAH7cAG_ANpdTT_yTAORM_paFzWEDTuM
agent:uhCAkdvopdRZH4cHcXlTiisgGUqZ26YuDOjxW2vuCWNvXQB_FysD2
agent:uhCAk6hPxNNIlvJG5jaI2vcw3P8uBGNEFgGEM1ZcwX-HlJ3FTvIlj
agent:uhCAkQkM2pzpBvaFFf0yzpjtC8lvXm-eZmvz99lb6ZA1s8WLhArHy
agent:uhCAk_Yiq8FVG9ZI63xHXzAH7cAG_ANpdTT_yTAORM_paFzWEDTuM
agent:uhCAkdvopdRZH4cHcXlTiisgGUqZ26YuDOjxW2vuCWNvXQB_FysD2
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:uhCAk2F5gRIVQkLhbIQtLkL94ZTK0W7PpVYInSBbJI5RlS7xh-Zht
agent:uhCAk31ah566V4OEyBLLnwqFL0MrY9yT9lrv1yU4oeEUN2U-UA-MV
agent:uhCAkI-heh3y3eXvuSm5BglppBA71fq-bNHnFdsTLoY4gX89ikJzu
agent:uhCAkfF3IrEVQG4v_iPH6DgrD5iGKE9Q_eE-d911cxaOH-UUBqPyz
agent:uhCAkt5a5sMh2zesdHR9Tw-8nyDi6y3EQVTim5kCLyZMfmPooLYwL
agent:uhCAkuQXhMvq0TuMnJSPEc2bNsI4GocogOlbckBT1LESTqeM9HWiJ
get_timed_local_entries zome function.agent:uhCAk03Nin4whWZMEYmTbE7iHLEAHDq0BBIKFAb5HyWaVEtcSMI1h
agent:uhCAkQOS-OcxNx2VLyNg3WdPtHc5W_A2qItohYAU7e43NVfrBQXn9
agent:uhCAknO2eICvGci2KvjJAvhZa8Wr4uuHfPcrXdwsgLH65SbkxGPHf
agent:uhCAk03Nin4whWZMEYmTbE7iHLEAHDq0BBIKFAb5HyWaVEtcSMI1h
agent:uhCAkQOS-OcxNx2VLyNg3WdPtHc5W_A2qItohYAU7e43NVfrBQXn9
agent:uhCAknO2eICvGci2KvjJAvhZa8Wr4uuHfPcrXdwsgLH65SbkxGPHf