The format is based on Keep a Changelog. This project adheres to Semantic Versioning.
- A new optional field
labelwas added to the typesAppWithOptions,ConductorOptions,CreateConductorOptions, and to the functionaddConductor. It allows overriding the default label which will prefix log messages of that Conductor instance. - A new method
integratedOpsCountthat polls for integrated ops and checks if the number of integrated ops is equal to the desired number for a given dna hash. (#305)
- BREAKING: Utility function
conductorCellsDhtSynchas been removed. UsedhtSyncdirectly instead. (#305)
- Log messages from Conductors that were created with
addPlayersfunctions are now prefixed byTryorama - Player #where "#" is the Player index. This makes it easier to distinguish log messages from different conductors. (#302)
- When creating conductors with
Scenario#addPlayers,Scenario#installAppsForPlayers,Scenario#installSameAppForPlayers,Scenario#addPlayersWithApps, andScenario#addPlayersWithSameAppeach conductor is created sequentially and waits for startup. This is a workaround to avoid connection failures which can cause test failures. (#303) - Fixed flaky behavior in recognizing conductor startup success. (#303)
- A new method
storageArcthat polls for network metrics to check if an agent's storage arc is equal to a desired storage arc for a given dna hash. (#301) - A new configuration field
targetArcFactorhas been added toNetworkConfig, allowing test scenarios to be written with 0-arc conductors (#300)
- Network options are now applied before the conductor launches, to ensure they actually alter the conductor configuration. (#300)
- Upgrade all dependencies to Holochain v0.6.
- Fixed the logic in
dhtSyncto determine whether conductors are in sync (#287)
- A new method
Scenario#addPlayersthat creates the specified number of conductors and generates an agent per conductor. - A new method
Scenario#installAppsForPlayersthat installs the specified apps for the provided players. The combination of these two methods caters for the use cases where agent keys are generated prior to app installation for further usage, e.g. when generating mem proofs in a separate step. - A new method
Scenario#installSameAppForPlayersthat installs the specified app for the provided players. In contrast toinstallAppsForPlayersthis is a simplified interface that just takes one app with options and install it for all players equally. - A new method
Scenario#addPlayersWithSameAppthat creates players and installs the same specified app for each player. A counterpart toaddPlayersWithApps, this is also a simplified interface for the most common case of installing the same app for each player.
- Updated dependencies to latest versions.
- BREAKING: Type
Playeris now a conductor with an associated agent key. It used to be the conductor with an installed app for the agent. That has been renamed toPlayerAppin alignment with the typeAgentApp(app id + agent key + cells), whichPlayerAppextends.
- More options for conductor startup. All can be left at defaults in most cases but the defaults provided by Tryorama
are more appropriate for testing than the defaults that Holochain provides. The new options are
initiateJitterMs,roundTimeoutMsandtransportTimeoutS.
- The utility function
dhtSyncparametertimeoutMsnow defaults to 60000 milliseconds, and the parameterintervalMsnow defaults to 500 milliseconds.
- Return an error if spawning
kitsune2-bootstrap-srvfails - The utility functions
dhtSyncandconductorCellsDhtSyncnow check that all Ops have been integrated and are not in limbo.
- Fix
js-yamlstill included as a dev-dependency
NetworkConfigwith options to configure gossip in conductors and scenarios.
- TryCP server, client and test utilities for TryCP conductors.
- Update to
@holochain/client@0.19.0-rc.0and update types accordingly. - Remove tape as test runner and switch to native NodeJS test runner and assertion library.
- Update to
@holochain/client@0.19.0-dev.7and update types accordingly.
- Local: Conductor startup string parsing. This lead to flaky tests because the client attempted to connect to Holochain before it was fully started up.
- Support new
roles_settingsfield 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
noDpkianddpkiNetworkSeed. SetnoDpkitotrueto disable DPKI for the scenario. If DPKI is enabled, a network seed for the DPKI service can be set withdpkiNetworkSeed. - Admin API call
RevokeAgentKeyto 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
addPlayerWithAppto 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
NotStartedAfterProvidingMemproofsfor typeDisabledAppReasonwhich 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
AppWebsocketcallEnableAfterMemproofsProvided, 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
lineageto the DNA manifest, which declares forward compatibility for any hash in that list with this DNA. - New
AdminWebsocketcallGetCompatibleCells, which returnsCellIdfor 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_clientnow handles ping/pong messages from the TryCP server to keep the connection alive. - The
trycp_clientnow handles thecloseevent 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
AppAgentWebsocketwith theAppWebsocket. This affects tests when opening app websockets directly but using the 'players' API, this detail is abstracted away.
- TryCP: Upgraded
tokio-tungsteniteto fix vulnerability.
- Replace all IPv4 websocket addresses
127.0.0.1bylocalhost.
- 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
conductorCellDhtSyncandisConductorCellDhtEqualof existing functionsdhtSyncand make the prior versions aliases to these. New versions take in anIConductorCellwhich just wraps anIConductorandCellId.
- Security bump:
webpkito v0.22.2 - Security bump:
@microsoft/api-extractorto 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.
hcoutput has changed which lead to local conductor startup refactoring. - BREAKING CHANGE:
runScenariore-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).
runScenariocatches and outputs error occurring during the test run.- BREAKING CHANGE: Upgrade to Holochain v0.2.0 and compatible JS client.
- Output Holochain traces at
infolog level by default. Before log level needed to be set todebugfor traces to appear. - Switch to Nix flake for develop environment. Run
nix developfrom now on instead ofnix-shell. Pass on--extra-experimental-features nix-command --extra-experimental-features flakesor 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
typeanddatafrom 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
stopAllTryCpServersto 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
uidbynetwork_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
RegisterDnaRequestwhen installing DNAs throughaddPlayerWithHappPR #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
nivfor Holochain revision upgrades - Complete typings for Tryorama
- Middleware
- Conductor configuration
- Implicit usage of
tapeas 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_leveloption 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
groupPlayersByMachinemiddleware, a generalization ofmachinePerPlayerwhich 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.failmethod, 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
singleConductormiddleware. 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.
spawnRemoteadded for remotely spawning a conductor via TryCP- added
dumbWaitermiddleware, which bypasses the Hachiko waiter and causess.consistency()to simply wait for a specified delay - added
scenarioNameto ConfigSeedArgs, making it possible to use this value in custom conductor configurations makeRemoteConfigSeedArgsadded for creating config generation args obtained from a remote machine- added
modeorchestrator config option as a more ergonomic alternative to manually specifying middlewares
- BREAKING:
globalConfigargument to Orchestrator is no more. Now this data gets passed into the second argument of theConfig.genhelper 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 eitherlocalOnlyormachinePerPlayermiddleware 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
tapeExecutorandlocalOnlymiddleware by default if none specified ConfigSeedArgsnow includesbaseUrlalong with ports, to facilitate remote connections to other than localhostSpawnConductorFnsignature has changed. Now it takes aPlayerand some user data, and returns a fully constructedConductorSpawnConductorFnnow 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 thespawnConductorLocalfunction
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
Instanceobject 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.infodeprecated in favor ofs.instance. For now they are equivalent.
- Add
TRYORAMA_STATE_DUMPenv 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_TIMEOUTto 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 hashproduces output on stderr; no more
- Ability to spawn and kill conductors arbitrarily during a test
- New syntax to support this main difference