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:uhCAk4kKe9QFlrq2uivMpjo6lw0e4IV6JdX6RorDv08MbKU0I-emj
agent:uhCAk5HilIDoWuoJdVJk8yWy4kuTa-df_g3tHGr2enrDc6HfMZgfv
agent:uhCAkAS_UAjdLERfOGiS-s704x0JnfDlqNXOqBKsheid5j5BZhjNZ
agent:uhCAkfoKpTkzL6_vTdzGWIU92NN-07fUaLz-XYSjolR69rv_Z2YKI
agent:uhCAkApPL2nmShjyhs6CbW0PcjEqdKck-FlQUF1DH27T_KnVwo2Gq
agent:uhCAkQla5dmZnFmoOTX7wBm2JuT5AjJPKcUN93Io0rXIytiL8PZJX
agent:uhCAkUrE7krm6zARb8OEMK1bXl27Cwo9yf8myGCMlBjh3F_DZuKbb
agent:uhCAktSOAeqwGT3YN6OJYCwHTqT5upA37JvmWFWwO3wiTeTtqnTF8
agent:uhCAkApPL2nmShjyhs6CbW0PcjEqdKck-FlQUF1DH27T_KnVwo2Gq
agent:uhCAkQla5dmZnFmoOTX7wBm2JuT5AjJPKcUN93Io0rXIytiL8PZJX
agent:uhCAkUrE7krm6zARb8OEMK1bXl27Cwo9yf8myGCMlBjh3F_DZuKbb
agent:uhCAktSOAeqwGT3YN6OJYCwHTqT5upA37JvmWFWwO3wiTeTtqnTF8
No scenario template for mixed_arc_get_agent_activity!
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:uhCAk-ntF-lnIcIsubb6dOI5PC8tj3NnRrtGMzk8S5DyDmQQa5YD_
must_get_agent_activity_agent:uhCAkQvSpsH0vJqvH8GrT-eA8tasDnDn4seakt28ysyC1pDVkSmG1
must_get_agent_activity_agent:uhCAkVu9m1PlXRZFa30aC-bGbJmYhzgmDiTc06xzlj48enq0DxE9N
must_get_agent_activity_agent:uhCAkmq4uYtpgqNDjI-J06nP3h72_hRpdB324ljUhujlRaRvM9aOJ
must_get_agent_activity_agent:uhCAkqB4jwVFHN3Hat6DjWiqRNk6FKLvhoAVKH0SGJYlQHXmFOCXq
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:uhCAk-ntF-lnIcIsubb6dOI5PC8tj3NnRrtGMzk8S5DyDmQQa5YD_
must_get_agent_activity_agent:uhCAkQvSpsH0vJqvH8GrT-eA8tasDnDn4seakt28ysyC1pDVkSmG1
must_get_agent_activity_agent:uhCAkVu9m1PlXRZFa30aC-bGbJmYhzgmDiTc06xzlj48enq0DxE9N
must_get_agent_activity_agent:uhCAkmq4uYtpgqNDjI-J06nP3h72_hRpdB324ljUhujlRaRvM9aOJ
must_get_agent_activity_agent:uhCAkqB4jwVFHN3Hat6DjWiqRNk6FKLvhoAVKH0SGJYlQHXmFOCXq
create_validated_sample_entry zome call timingwrite agent's source chain.agent:uhCAk-ntF-lnIcIsubb6dOI5PC8tj3NnRrtGMzk8S5DyDmQQa5YD_
agent:uhCAkQvSpsH0vJqvH8GrT-eA8tasDnDn4seakt28ysyC1pDVkSmG1
agent:uhCAkVu9m1PlXRZFa30aC-bGbJmYhzgmDiTc06xzlj48enq0DxE9N
agent:uhCAkmq4uYtpgqNDjI-J06nP3h72_hRpdB324ljUhujlRaRvM9aOJ
agent:uhCAkqB4jwVFHN3Hat6DjWiqRNk6FKLvhoAVKH0SGJYlQHXmFOCXq
must_get_agent_activity calls.agent:uhCAk-ntF-lnIcIsubb6dOI5PC8tj3NnRrtGMzk8S5DyDmQQa5YD_
agent:uhCAkQvSpsH0vJqvH8GrT-eA8tasDnDn4seakt28ysyC1pDVkSmG1
agent:uhCAkVu9m1PlXRZFa30aC-bGbJmYhzgmDiTc06xzlj48enq0DxE9N
agent:uhCAkmq4uYtpgqNDjI-J06nP3h72_hRpdB324ljUhujlRaRvM9aOJ
agent:uhCAkqB4jwVFHN3Hat6DjWiqRNk6FKLvhoAVKH0SGJYlQHXmFOCXq
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:uhCAkg65zJnsLfR4Kk6ggW58O036KvdyWmhdL6L53ww4VggVZHS5I
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:uhCAkdSKObDK0RIGeis_IYfjCwGaSGSkVqoNPyZKFZnKHBUYFMPvC
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:uhCAkdSKObDK0RIGeis_IYfjCwGaSGSkVqoNPyZKFZnKHBUYFMPvC
create_validated_sample_entry zome call timingwrite agent's source chain.agent:uhCAkdSKObDK0RIGeis_IYfjCwGaSGSkVqoNPyZKFZnKHBUYFMPvC
must_get_agent_activity calls.agent:uhCAkdSKObDK0RIGeis_IYfjCwGaSGSkVqoNPyZKFZnKHBUYFMPvC
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:uhCAk-sq5PY6g1LlNYE-kvDuOpX6pcSUioE3D5054TU7VJ5aKvOc4
agent:uhCAkGzwrElir4jlUhgwdbZAdagZtQjuOTCuWJu4uRImz7BlYOwDG
agent:uhCAkHoiCOwlSg0J_jjUqkDV1BI7xPIl794sNWp6C6_t4opamlIQm
get_timed_local_entries zome function.agent:uhCAk2GDuypBLcUAwsTPK3G-a3VBx0d1IumjYYXZWggxCEnX4QLPY
agent:uhCAkI5UJhsc0C_bKBiynZZYiaOzShoAfS6Pt8zvNbnX2aTMNOrVQ
agent:uhCAk2GDuypBLcUAwsTPK3G-a3VBx0d1IumjYYXZWggxCEnX4QLPY
agent:uhCAkI5UJhsc0C_bKBiynZZYiaOzShoAfS6Pt8zvNbnX2aTMNOrVQ
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:uhCAk6BVw8XWEM91ZWYvFYn22iLXtpnMT_BdvcAkVrj6gz3oNECIt
agent:uhCAkDmfS2qJxVldoKchPDujLYMncXQ3s3svOdzcZ1I1Q_ZU6YRYA
agent:uhCAkOberh5rzcjECW2rhoSa0ftObUBDc6LMtJovGcKYYulVKauHU
agent:uhCAkmLbrm2QaRn9Ode_EC2P6XEYq-kTh1J9FHPdAtHrSK6blOSmp
agent:uhCAkmuNKCccmlkzaZ02L_VvHJfM4eqk1Tm_sJzbBndQWRsD25jUe
agent:uhCAkohC_UwQFeW3oIvYTXpskiM_94Th7adB2lBSCxZ_vt0L6OJD_
get_timed_local_entries zome function.agent:uhCAkWtKO-fWPV71uEFB4mfwSTU5Q396tgGzgZxKb2ZFuTfHtedYH
agent:uhCAklsyUnioAZyhJUJEyhdeQSLDIhwCsHpcKvQS5NVjkNUc-Lt9U
agent:uhCAkWtKO-fWPV71uEFB4mfwSTU5Q396tgGzgZxKb2ZFuTfHtedYH
agent:uhCAklsyUnioAZyhJUJEyhdeQSLDIhwCsHpcKvQS5NVjkNUc-Lt9U
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:uhCAk63QDPQYvEcTBWzsH0cZ2NuiAz17BUJvZosh7DwjXWjix8s-2
agent:uhCAkD-vu7ug7Osx7k80GanwX8HlGkeOcV5-DEUVV4G5aTUf1qotj
agent:uhCAkHjIBjxrYxvBK8ilSyjA62U-WuaXyaxFcGbQ-lQaLTPGMHUqK
agent:uhCAkaalzR_q_PL-d0Tz3qMUgRtV5jOB43qONUBHWZmLnvMmZU853
agent:uhCAkc9hAWZK8qI85MXOYJams-Cbx-tZ2IN1v-Jov7Ntxba22R4OY
agent:uhCAkj8AEdQitsOBqirFgBRoK4pW1AqzGFseVyuLhz4byFnrqK3La
get_timed_local_entries zome function.agent:uhCAk2hbF1QtXUF7GQ-jm7PD2Z0qEmuYw_3CXTfvKFTD_qEM4kGtK
agent:uhCAkJ-yVlBEbkTcMB_SdKiazCumewD3d-YBqZsLbhD5C32DnttxN
agent:uhCAkV2tc4J02vrRM4RRrOMvrRejNgNVSonUCUVndvWkIbFgc7CJD
agent:uhCAkr-wdjrWo8apVXaKBX-CtfL2hIcuOEmRUbR8UmavkRnZ9Ly_K
agent:uhCAk2hbF1QtXUF7GQ-jm7PD2Z0qEmuYw_3CXTfvKFTD_qEM4kGtK
agent:uhCAkJ-yVlBEbkTcMB_SdKiazCumewD3d-YBqZsLbhD5C32DnttxN
agent:uhCAkV2tc4J02vrRM4RRrOMvrRejNgNVSonUCUVndvWkIbFgc7CJD
agent:uhCAkr-wdjrWo8apVXaKBX-CtfL2hIcuOEmRUbR8UmavkRnZ9Ly_K