The format is based on Keep a Changelog. This project adheres to Semantic Versioning.
- Support new
roles_settings
field inAppOptions
.
- Update JS client due to modified zome call signing.
- Disable unstable DPKI.
- Disable tests with unstable features.
- Update dependencies to Holochain v0.5.0-dev.0
- Support for DPKI in Holochain. DPKI is a Holochain conductor service to manage agent keys. Within a scenario there are two new member properties
noDpki
anddpkiNetworkSeed
. SetnoDpki
totrue
to disable DPKI for the scenario. If DPKI is enabled, a network seed for the DPKI service can be set withdpkiNetworkSeed
. - Admin API call
RevokeAgentKey
to revoke an agent key. Once revoked, all cells of the app are read-only and the agent can no longer write to it.
- TryCP: Conductor startup failed silently. Errors are returned now, conductor startup ensured and conductor process only kept alive if startup was successful.
- TryCP: Admin port assignment did not check if TCP ports were actually free.
- New parameter can be specified when calling
addPlayerWithApp
to specify the logLevel that the Holochain conductor should be launched with.
- Update default signal server to wss://sbd-0.main.infra.holo.host.
- New value
NotStartedAfterProvidingMemproofs
for typeDisabledAppReason
which effectively allows a new app status, corresponding to the specific state where a UI has just called AppRequest::ProvideMemproofs, but the app has not yet been enabled for the first time. - New
AppWebsocket
callEnableAfterMemproofsProvided
, which allows enabling an app only if the app is in theAppStatus::Disabled(DisabledAppReason::NotStartedAfterProvidingMemproofs)
state. Attempting to enable the app from other states (other than Running) will fail. - New field
lineage
to the DNA manifest, which declares forward compatibility for any hash in that list with this DNA. - New
AdminWebsocket
callGetCompatibleCells
, which returnsCellId
for all installed cells which use a DNA that is forward-compatible with a given DNA hash. This can be used to find a compatible cell for use with the UseExisting cell provisioning method.
- New feature for TryCP to allow logs to be downloaded. This is useful when you are working with remote nodes and need to read the Holochain logs locally. The logs are given back as raw bytes, so you can write them to a file or otherwise further process them. #222
- The TryCP server used to open a new admin websocket for each admin request made to Holochain. A single admin websocket is now used for all requests. It is opened by the first request and closed when the Holochain instance it shut down. #221
- The
trycp_client
now handles ping/pong messages from the TryCP server to keep the connection alive. - The
trycp_client
now handles theclose
event from the TryCP server to close the connection.
- New call
AppRequest::ProvideMemproofs
. An app can be installed with deferred membrane proofs, which can later be provided through this call.
- BREAKING Update enum serialization to match changed Conductor API serialization format.
- Restored the ability to make a zome call on the app websocket using a role name instead of a cell id.
- Update the version of the JS client to v0.17.0-dev.12.
- BREAKING Integrated the updated JS client which adds app websocket authentication and merges the
AppAgentWebsocket
with theAppWebsocket
. This affects tests when opening app websockets directly but using the 'players' API, this detail is abstracted away.
- TryCP: Upgraded
tokio-tungstenite
to fix vulnerability.
- Replace all IPv4 websocket addresses
127.0.0.1
bylocalhost
.
- Upgrade to latest JS client.
- Set allowed origins for admin websockets in Tryorama conductors and when attaching app websockets.
- Pass origin when connecting admin and app websockets.
- Upgrade JS client.
- Upgrade deps to Holochain v0.3.0
- Local: Increase default timeout for websocket calls to 60 seconds.
- Awaiting DHT sync: Add duplicated functions
conductorCellDhtSync
andisConductorCellDhtEqual
of existing functionsdhtSync
and make the prior versions aliases to these. New versions take in anIConductorCell
which just wraps anIConductor
andCellId
.
- Security bump:
webpki
to v0.22.2 - Security bump:
@microsoft/api-extractor
to v7.36.2
- Export all common helper functions.
- Upgrade to Holochain v0.2.1
- Upgrade to JS client v0.16.0
- BREAKING CHANGE: Upgrade to Holochain v0.3.0-beta-dev.8.
hc
output has changed which lead to local conductor startup refactoring. - BREAKING CHANGE:
runScenario
re-throws caught errors. - BREAKING CHANGE: To imitate a hApp client more closely in a test, App websockets are decoupled from conductors. This change plays out mainly on the conductor level, but a player contains the app agent websocket now too for registering signals. Previously there used to be a single app websocket per conductor for all of its agents. Now there is one app agent websocket connection per agent.
- TryCP scenario: Optimize multi client/multi player installation. All agent app installations for a conductor and all conductor installations for a client are triggered in parallel instead of sequentially.
- BREAKING CHANGE: Awaiting DHT sync of multiple players received a more universal API. Scenario methods were removed, so that in all cases the util function must be called.
- BREAKING CHANGE: Command to start local signaling server has changed to spawn local bootstrap server too. Both local and TryCP conductors have been adapted accordingly.
- Upgrade to compatibility with Holochain v0.2.1-beta-dev.0.
- Utility function to wait until all players' integrated DhtOps are identical for a DNA.
- BREAKING CHANGE: Local signal server for both local (required) and TryCP conductors (optional).
runScenario
catches and outputs error occurring during the test run.- BREAKING CHANGE: Upgrade to Holochain v0.2.0 and compatible JS client.
- Output Holochain traces at
info
log level by default. Before log level needed to be set todebug
for traces to appear. - Switch to Nix flake for develop environment. Run
nix develop
from now on instead ofnix-shell
. Pass on--extra-experimental-features nix-command --extra-experimental-features flakes
or enable these features for your user in~/.config/nix/nix.conf
.
- Upgrade JS client to latest minor version (v0.12.0).
Compatible with Holochain v0.1.0
- Upgrade JS client to v0.12.0
- Update to Holochain 0.1.0-beta-rc.4
- Update to JS client v0.11.15
- Update to JS client v0.11.13 that fixes a problem with Nodejs v16.
- Update to JS client v0.11.12 that removes a node scheme import.
- AppAgentWebsocket to local conductor. Available under
conductor.appAgentWs()
after connecting withconductor.connectAppAgentInterface(appId)
(default now forScenario.addPlayerWithApp()
).
- Removed
type
anddata
from signals as per client update.
- Support for wildcards in
GrantedFunctions
.
- Automatically sign zome calls without manual authorization of signing credentials.
- BREAKING CHANGE: Upgrade to Holochain 0.1.0-beta-rc.1
- BREAKING CHANGE: Upgrade to Holochain client v0.11
- Admin API calls "get_dna_definition" & "grant_zome_call_capability" to TryCP conductor.
- Upgrade Holochain client to v0.10.3
- Upgrade test zome to Holochain v0.0.175
- TryCP: Add partialConfig parameter to ClientsPlayersOptions.
- TryCP: Add shortcut function
stopAllTryCpServers
to shutdown multiple TryCP servers.
- TryCP: Calls for clone cell management
- Tests of clone cell management for local and TryCP conductors
- TryCP: Deprecated Admin API request to create clone cells
- BREAKING CHANGE: Upgrade to Holochain JS client v0.9.2 with clone cell features
- Upgrade to Holochain v0.0.165
- BREAKING CHANGE: Replace occurrences of
uid
bynetwork_seed
, in alignment with the renaming in Holochain.
- BREAKING CHANGE: Upgrade to Holochain v0.0.157 and thereby to Lair v0.2.0. CAUTION: No backward compatibility to previous versions of Lair. Use Tryorama < v0.7.0 for Lair < v0.2.0.
- feat(common): add app and role id options to hApp installation
- feat(common): add mem-proofs to installAgentsHapps (#139)
- feat(trycp): add multiple clients by array of URLs
- feat(trycp): add multiple clients/players
- fix(trycp): allow for multiple hosts in scenario (#136)
- Fixture: split zome into integrity and coordinator zomes PR #143
- Holochain: Upgrade Holochain & @holochain/client & replace Element/Header with Action/Record PR #142
- Common: expose the optional properties field from
RegisterDnaRequest
when installing DNAs throughaddPlayerWithHapp
PR #135
- Local conductor: bring back stdout debug logs PR #132
- Common: optional timeout for zome calls PR #130
- Local conductor: log conductor startup only once and at correct moment PR #130
- Local conductor: subscribe to all messages to stderr. PR #125
- Local conductor: log as info instead of as error. PR #125
- Fix error handling during conductor startup (only log error instead of crashing) issue #119
- Update Holochain client (ESM only)
- Export function to add all agents to all conductors.
- Convenience function getter to call zome of a given cell.
- Conductor options to runScenario fn.
- Missing library files.
- Re-write Tryorama
- Use of
niv
for Holochain revision upgrades - Complete typings for Tryorama
- Middleware
- Conductor configuration
- Implicit usage of
tape
as test harness
- Include missing type declarations for Tryorama
- Upgrade Holochain JS client to version 0.3.2, which fixes ECMA Modules support
- Switch to renamed Holochain JS client
- Published version of 0.4.4 did not contain the necessary files
db_sync_level
option to configuration
- Updated to support Hlochain v0.0.107
- Config.logger(false) now produces valid logger config
- Fixed some bad logic where certain values, like the interfacePort, were pulled from the ConfigSeedArgs, rather than the actual generated config. i.e., config generation assumed that the user would use the provided values as-is without modifying or ignoring them.
- Default storage config for instances is now
lmdb
, before it wasmemory
- When using explicit instance config, it was not possible to set the storage configuration. Now it is.
- Due to default storage config of
memory
, killing and respawning a conductor would cause its persisted state to be wiped out! With the switch tolmdb
, this is no longer the case.
- Adds support for experimental Holochain conductor interface config
choose_free_port
, which dynamically assigns an interface port at startup. Tryorama now knows how to listen for this change, but only at initial conductor startup. - Adds
groupPlayersByMachine
middleware, a generalization ofmachinePerPlayer
which allows multiple conductors to be grouped onto each remote machine
- BREAKING: Now the generated conductor config uses only one admin interface to communicate with all instances as well as perform admin functions, rather than having separate interfaces for admin calls and instance interaction
- Fixed bug in scenarios that contain multiple
s.spawn()
statements, where only the conductors in the most recent spawn would get cleaned up after the test. Now all conductors spawned throughout the test are tracked and cleaned up at the end.
- Removed some helper functions around local testing of TryCP, they now live in @holochain/tryorama-stress-utils
ScenarioApi.fail
method, used internally to abort a test, can be integrated with third-party harnesses (like tape) to give better errors in the case of an internal error during a test run, e.g. a conductor timeout- Improved auto-spawning of conductors when using
s.players(..., true)
, which awaits consistency in between each new spawn - Exposed
s.stateDump()
, which can be used to get the state dump from the conductor during a test, for debugging purposes or even to write tests against.
- Temporarily deprecated conductor-merging capability, as in the
singleConductor
middleware. The main use case for this functionality also depends on Holochain's in-memory networking, which is currently unsupported. This will remain deprecated until in-memory networking is updated.
spawnRemote
added for remotely spawning a conductor via TryCP- added
dumbWaiter
middleware, which bypasses the Hachiko waiter and causess.consistency()
to simply wait for a specified delay - added
scenarioName
to ConfigSeedArgs, making it possible to use this value in custom conductor configurations makeRemoteConfigSeedArgs
added for creating config generation args obtained from a remote machine- added
mode
orchestrator config option as a more ergonomic alternative to manually specifying middlewares
- BREAKING:
globalConfig
argument to Orchestrator is no more. Now this data gets passed into the second argument of theConfig.gen
helper method. See README. - BREAKING: Middlewares now compose in the reverse order! (fb1e95ef)
- BREAKING: The fundamental structure of
s.players()
config has changed. If using middleware, you must include eitherlocalOnly
ormachinePerPlayer
middleware to convert the player config into the correct structure, or you must manually specify the local or remote machines your tests will run on. See README. - Orchestrator includes
tapeExecutor
andlocalOnly
middleware by default if none specified ConfigSeedArgs
now includesbaseUrl
along with ports, to facilitate remote connections to other than localhostSpawnConductorFn
signature has changed. Now it takes aPlayer
and some user data, and returns a fully constructedConductor
SpawnConductorFn
now is expected to handle awaiting the Conductor's readiness for websocket connections. Previously that was handled internally duringplayer.spawn
- Various internal names have changed, like GenConfigFn -> ConfigSeed
player.spawn()
now takes a user-defined argument which gets passed to the spawnConductor function.- Optional
player.spawn()
function argument now becomes{handleHook}
in the context of thespawnConductorLocal
function
s.players()
can now accept an array of configs and will return an array of Players. Passing an object of configs has the same effect as previously- There is now an
Instance
object which represents an instance inside a conductor. It can be accessed like so:
const instance = player.instances['instanceId']
// the following two lines are equivalent
await instance.call('zome', 'fn', params)
await player.call('instanceId', 'zome', 'fn', params)
- When multiple conductors are starting at the same time, a mutex is used to ensure that only one DNA is downloaded at a time. This allows caching to kick in for conductors downloading the same DNA, to prevent a bunch of duplicate downloads.
- Use Memory backend for instance storage, rather than File, by default
- The DNA download functionality would sometimes signal completion before the file was fully downloaded and closed. Fixed that.
- The conductor timeout was getting stuck, causing lots of false positives
s.info
deprecated in favor ofs.instance
. For now they are equivalent.
- Add
TRYORAMA_STATE_DUMP
env var to turn on/off JSON state dump info when conductor encounters an error - Conductor now self-destructs after 120 seconds of inactivity to allow the tests to complete even if the conductor hangs/deadlocks
- Add
TRYORAMA_STRICT_CONDUCTOR_TIMEOUT
to determine whether or not a conductor will throw an exception when it self-destructs
- Default "verbose" logging config is more reasonable, i.e. less verbose
- Zome call timeout now has a "soft timeout" with a warning halfway through the real "hard" timeout
- DNA config generation would fail if
hc hash
produces output on stderr; no more
- Ability to spawn and kill conductors arbitrarily during a test
- New syntax to support this main difference