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:uhCAk64xZwVR5QcSU5gN7w4NUuCAeu2Byl_j1BDCy0Iyjv33NnwXH
agent:uhCAk6XwUp5IIMMnsq90NOHoJZ3125_FdjSni46v0VDcTj2pSeTm4
agent:uhCAk8mp5DFawmrYTW7ZwqKCMjNw84bmVEeGtxJGHP2uXstcjZOCU
agent:uhCAklaZhZSAsZnXrnJ3M-elxAKOQoiduGd98uA42DkRwQWLo3z-M
agent:uhCAkngPKFlDzrxlHgB0LhcDiLsIKGFM51aJUBHzqD4y0tZouLht6
agent:uhCAk8CWALWjY8xwrlSNjwJOdeqE_-q7DGv-hbNVca985e-C7eHfs
agent:uhCAkTwAsbzed_jXOlyXA5Hje34621abmVzTXyj_CZCSNsFM6l-gv
agent:uhCAkUKsqxsaac4ty2RTCa5reKdi612mBs7zSSW1U4r0nKu87znm6
agent:uhCAkfPS-ox1FQvCfIiK9YKnXusP1u5rhayzC3ly89Toq7_TQVu_x
agent:uhCAkpI3U3Jj-Ng_4KqRbbSvbUMLVs-Uf0pm1R78RBuU_9acSiQBd
agent:uhCAk8CWALWjY8xwrlSNjwJOdeqE_-q7DGv-hbNVca985e-C7eHfs
agent:uhCAkTwAsbzed_jXOlyXA5Hje34621abmVzTXyj_CZCSNsFM6l-gv
agent:uhCAkUKsqxsaac4ty2RTCa5reKdi612mBs7zSSW1U4r0nKu87znm6
agent:uhCAkfPS-ox1FQvCfIiK9YKnXusP1u5rhayzC3ly89Toq7_TQVu_x
agent:uhCAkpI3U3Jj-Ng_4KqRbbSvbUMLVs-Uf0pm1R78RBuU_9acSiQBd
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!
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:uhCAkM3QQOhLxdUfklCpNt4W7jtjJe61VBcI1qrdjoIB3rvO6zHgf
agent:uhCAkoU66_aUxATbPMcjr5yHYdMp49QCTQVfcz4tmxdolc38ZQz-d
agent:uhCAkM3QQOhLxdUfklCpNt4W7jtjJe61VBcI1qrdjoIB3rvO6zHgf
agent:uhCAkoU66_aUxATbPMcjr5yHYdMp49QCTQVfcz4tmxdolc38ZQz-d
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)Two-party countersigning
This scenario tests the performance of countersigning operations. There are two roles: initiate and participate. The participants commit an entry to advertise that they are willing to participate in sessions. They listen for sessions and participate in one at a time.
-
initiate(1 agent) -
participate(2 agents)
agent:uhCAkprq4TjnAP_meZHJf1BUXg2qwYX8hYVBBY9FrlR6x4d-z_Jpp
agent:uhCAkq5E14fyxtcmBa4LEM0bj48MtPkZXmkmVi-rWB6DyOaM4djoX
agent:uhCAkprq4TjnAP_meZHJf1BUXg2qwYX8hYVBBY9FrlR6x4d-z_Jpp
agent:uhCAkq5E14fyxtcmBa4LEM0bj48MtPkZXmkmVi-rWB6DyOaM4djoX
agent:uhCAkprq4TjnAP_meZHJf1BUXg2qwYX8hYVBBY9FrlR6x4d-z_Jpp
agent:uhCAkq5E14fyxtcmBa4LEM0bj48MtPkZXmkmVi-rWB6DyOaM4djoX
agent:uhCAk4FUcsdT6bgoVVObBxYWw5ozz34ZTuomMT169kSC2ymPG52tO
agent:uhCAk4FUcsdT6bgoVVObBxYWw5ozz34ZTuomMT169kSC2ymPG52tO
agent:uhCAk4FUcsdT6bgoVVObBxYWw5ozz34ZTuomMT169kSC2ymPG52tO
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:uhCAkl347buuhMI5yvfs6db_kraGnYDa2bGIaCNXUWaYgTshHsCUO
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:uhCAk7eWH7T0UtU7DhpkZNd0aC9p2sZ_OZEbh0I2ceLNsn0UaFakf
agent:uhCAkCvpMtodBCLrsvu0Y1pA_LlJWFXI8VeLLBY3EqX00Douffyoq
agent:uhCAks4I4o-0uD90XciQmGsYqnkhw0mqzud67xZeZzSSgyQctfxNh
get_timed_local_entries zome function.agent:uhCAkChzpS2_JIXnkr7iaU6VnABKXQy2WeQGf__k4_-OSXb3xjfGU
agent:uhCAkhgkomowi5f7bgLHFVH5CgdmslmW7MJK0Dsg63Os0mTZgcYd9
agent:uhCAkChzpS2_JIXnkr7iaU6VnABKXQy2WeQGf__k4_-OSXb3xjfGU
agent:uhCAkhgkomowi5f7bgLHFVH5CgdmslmW7MJK0Dsg63Os0mTZgcYd9
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:uhCAkFMADViiqZ9ydY1TQ7oeAOrS6zam-HLNYzgtUNkTiamDT6vV7
agent:uhCAkHtM1t72i8-MhwnVoKYWa4hCCRq3iY54bY_COdky5p7IdZK9g
agent:uhCAkMcDUweNbFN7r73eJIt1EdbJc4rd2nZoUEOVOM2njZXeLzLd3
agent:uhCAkNJ1Znfv_lhq9dmhCtq2kHx4AdGRN0FZDtd3Xp8sF42SE1tSt
agent:uhCAkTmuBNI_8ZczY7ku9TnG1ShuPisjunVNVR3YFf3QKx40y-Qno
agent:uhCAklacCTUu6f58XF0vfkJFNxpMJxcIdailUUF8LdVsQyfXJz5WE
get_timed_local_entries zome function.agent:uhCAkCF1n5XYYb0T3A7nzEthOJxx0c_lKNB8jbH4QLXy9BX5EYupR
agent:uhCAkWPHvlx4jP78oy4_0XR1sit8bzCMvFRl6k0vWwy4xAgIOMlkG
agent:uhCAke-HBjaJyv9Wb3KeRNnArFuSuSxUmbEyqISzHAmWKjpPAkugN
agent:uhCAkCF1n5XYYb0T3A7nzEthOJxx0c_lKNB8jbH4QLXy9BX5EYupR
agent:uhCAkWPHvlx4jP78oy4_0XR1sit8bzCMvFRl6k0vWwy4xAgIOMlkG
agent:uhCAke-HBjaJyv9Wb3KeRNnArFuSuSxUmbEyqISzHAmWKjpPAkugN
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:uhCAkAZlUQNHg7VXtTPRKEoijoKbeTkiIXQMYx5hTsJHOs9738ueu
agent:uhCAkLT3dqdoRfSdlBcrB9S_qb7yLrS0V7Gz78mb1njJPh-zf6fIh
agent:uhCAkam8qYp5o1hx73-jaICNfI5-97qr_uxv14_jd-YPsnOGQLlIq
agent:uhCAkfH-Qmjf8eRIgmwCrK3MvOu_EsIBU1H_ydzikMN_LSgEpFKbH
agent:uhCAkqcEng2UjgaaeOjZ6dJa7oF_RCWxH0HVw0-7yelpaGXnjbDkK
get_timed_local_entries zome function.agent:uhCAkKymaVs352zCDX_wK7TF2G4ZgfnfcZXLHnfO3lV168d8EBnT4
agent:uhCAkgPKfkpqK1zYEN2xo2n7fVkS-fbPtcNpz-fJPc7jH3MvITVAg
agent:uhCAkowVnprTqvt1Zhkn9WyGg-a048xDPSJSOQiIGXm47j52nv5XI
agent:uhCAkxlAN8tN19ctM8WA2_WEeiFj4AqH_3S17KRJWJRCV6-zHTK4f
agent:uhCAkKymaVs352zCDX_wK7TF2G4ZgfnfcZXLHnfO3lV168d8EBnT4
agent:uhCAkgPKfkpqK1zYEN2xo2n7fVkS-fbPtcNpz-fJPc7jH3MvITVAg
agent:uhCAkowVnprTqvt1Zhkn9WyGg-a048xDPSJSOQiIGXm47j52nv5XI
agent:uhCAkxlAN8tN19ctM8WA2_WEeiFj4AqH_3S17KRJWJRCV6-zHTK4f
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)