Skip to content

Commit

Permalink
feat: Add settings digest to network-id file (#3860)
Browse files Browse the repository at this point in the history
  • Loading branch information
ericswanson-dfinity authored Aug 5, 2024
1 parent 31d5c0b commit ef201f5
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 5 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ icx-proxy's HTTP gateway has been replaced with PocketIC's. (This does not impac
Schnorr signature signing for `Ed25519` is now enabled.
A test key id `Ed25519:dfx_test_key` is ready to be used by locally created canisters.

### feat: Added settings_digest field to the network-id file

# 0.22.1

## Dependencies
Expand Down
9 changes: 9 additions & 0 deletions e2e/tests-dfx/start.bash
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,15 @@ teardown() {
standard_teardown
}

@test "network-id contains settings digest" {
dfx_start

NETWORK_ID_PATH="$E2E_SHARED_LOCAL_NETWORK_DATA_DIRECTORY/network-id"
SETTINGS_DIGEST=$(jq -r '.settings_digest' "$NETWORK_ID_PATH")
NETWORK_ID_BY_SETTINGS_DIGEST_PATH="$E2E_SHARED_LOCAL_NETWORK_DATA_DIRECTORY/$SETTINGS_DIGEST/network-id"
assert_command diff "$NETWORK_ID_PATH" "$NETWORK_ID_BY_SETTINGS_DIGEST_PATH"
}

@test "start and stop with different options" {
[[ "$USE_POCKETIC" ]] && skip "skipped for pocketic: artificial delay, and clean required"
dfx_start --artificial-delay 101
Expand Down
12 changes: 7 additions & 5 deletions src/dfx-core/src/config/model/local_server_descriptor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,15 +173,17 @@ impl LocalServerDescriptor {
path.exists().then(|| load_json_file(&path)).transpose()
}

pub fn settings_digest(&self) -> &str {
self.settings_digest
.as_ref()
.expect("settings_digest must be set")
}

pub fn data_dir_by_settings_digest(&self) -> PathBuf {
if self.scope == LocalNetworkScopeDescriptor::Project {
self.data_directory.clone()
} else {
let settings_digest = self
.settings_digest
.as_ref()
.expect("settings_digest must be set");
self.data_directory.join(settings_digest)
self.data_directory.join(self.settings_digest())
}
}

Expand Down
3 changes: 3 additions & 0 deletions src/dfx/src/lib/network/id.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,15 @@ use time::OffsetDateTime;
#[derive(Deserialize, Serialize, Debug)]
struct NetworkMetadata {
created: OffsetDateTime,
settings_digest: String,
}

#[context("Failed write network id to {}.", local_server_descriptor.network_id_path().display())]
pub fn write_network_id(local_server_descriptor: &LocalServerDescriptor) -> DfxResult {
let settings_digest = local_server_descriptor.settings_digest().to_string();
let contents = NetworkMetadata {
created: OffsetDateTime::now_utc(),
settings_digest,
};
let contents =
serde_json::to_string_pretty(&contents).context("Failed to pretty-format to string")?;
Expand Down

0 comments on commit ef201f5

Please sign in to comment.