@feltdb/core 0.8.4 → 0.8.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/create/package-versions.js +1 -1
- package/dist/create/server-source/Cargo.lock +165 -0
- package/dist/create/server-source/Cargo.toml +9 -0
- package/dist/create/server-source/crates/feltdb/Cargo.toml +3 -0
- package/dist/create/server-source/crates/feltdb/benches/gate13_baseline.rs +44 -44
- package/dist/create/server-source/crates/feltdb/benches/gate13_phase_7_1_release_economics.rs +12 -24
- package/dist/create/server-source/crates/feltdb/benches/gate_13_redux.rs +7 -13
- package/dist/create/server-source/crates/feltdb/benches/gate_13_regression_runner.rs +13 -10
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_concurrent_writer_scaling.rs +12 -9
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_production_admission_revalidation.rs +78 -25
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc2_admission_contract.rs +16 -13
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_rc_root_cause.rs +13 -5
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync1_queued_prototype.rs +41 -22
- package/dist/create/server-source/crates/feltdb/benches/gate_14a_sync_economics.rs +33 -15
- package/dist/create/server-source/crates/feltdb/benches/gate_14b_causal_backlog_scaling.rs +100 -33
- package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_contract_test.rs +56 -20
- package/dist/create/server-source/crates/feltdb/benches/gate_14c_replication_scaling.rs +116 -41
- package/dist/create/server-source/crates/feltdb/benches/gate_14d_combined_dimension_scaling.rs +186 -55
- package/dist/create/server-source/crates/feltdb/benches/phase_7_1_2_optimization_benchmark.rs +64 -26
- package/dist/create/server-source/crates/feltdb/benches/phase_7_1_3_crossover_analysis.rs +46 -15
- package/dist/create/server-source/crates/feltdb/src/admission.rs +8 -15
- package/dist/create/server-source/crates/feltdb/src/admission_contract_tests.rs +43 -13
- package/dist/create/server-source/crates/feltdb/src/adversarial_transport.rs +15 -42
- package/dist/create/server-source/crates/feltdb/src/analytics.rs +65 -19
- package/dist/create/server-source/crates/feltdb/src/application.rs +113 -30
- package/dist/create/server-source/crates/feltdb/src/authorization_security_tests.rs +475 -140
- package/dist/create/server-source/crates/feltdb/src/cardinality_diagnostics.rs +17 -15
- package/dist/create/server-source/crates/feltdb/src/cardinality_endpoint.rs +0 -1
- package/dist/create/server-source/crates/feltdb/src/causal_backlog_bound.rs +59 -15
- package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier.rs +266 -114
- package/dist/create/server-source/crates/feltdb/src/causal_dependency_barrier_phase_7_1.rs +25 -7
- package/dist/create/server-source/crates/feltdb/src/concurrency_fuzzing.rs +10 -15
- package/dist/create/server-source/crates/feltdb/src/consistency_contract.rs +3 -11
- package/dist/create/server-source/crates/feltdb/src/crash_atomic_boundary.rs +14 -5
- package/dist/create/server-source/crates/feltdb/src/crash_injection.rs +21 -25
- package/dist/create/server-source/crates/feltdb/src/crash_recovery_tests.rs +14 -11
- package/dist/create/server-source/crates/feltdb/src/dedup_bound_investigation.rs +103 -22
- package/dist/create/server-source/crates/feltdb/src/distributed_indexing.rs +18 -15
- package/dist/create/server-source/crates/feltdb/src/durability_guarantees.rs +12 -8
- package/dist/create/server-source/crates/feltdb/src/durable_dedup_set.rs +1 -5
- package/dist/create/server-source/crates/feltdb/src/durable_operation_identity.rs +87 -23
- package/dist/create/server-source/crates/feltdb/src/durable_operation_log.rs +3 -7
- package/dist/create/server-source/crates/feltdb/src/durable_sync.rs +10 -9
- package/dist/create/server-source/crates/feltdb/src/in_process_transport.rs +1 -6
- package/dist/create/server-source/crates/feltdb/src/indexing.rs +35 -38
- package/dist/create/server-source/crates/feltdb/src/lib.rs +1648 -46
- package/dist/create/server-source/crates/feltdb/src/managed_cas_tests.rs +4 -1
- package/dist/create/server-source/crates/feltdb/src/metrics.rs +0 -1
- package/dist/create/server-source/crates/feltdb/src/multi_node_convergence.rs +1 -2
- package/dist/create/server-source/crates/feltdb/src/multi_operation_transaction.rs +107 -30
- package/dist/create/server-source/crates/feltdb/src/observability.rs +19 -6
- package/dist/create/server-source/crates/feltdb/src/operation.rs +39 -0
- package/dist/create/server-source/crates/feltdb/src/operation_algebra.rs +12 -11
- package/dist/create/server-source/crates/feltdb/src/operation_log.rs +9 -4
- package/dist/create/server-source/crates/feltdb/src/p1_application_atomicity.rs +65 -18
- package/dist/create/server-source/crates/feltdb/src/p1_atomicity_acceptance.rs +193 -57
- package/dist/create/server-source/crates/feltdb/src/partition_reconciliation.rs +37 -27
- package/dist/create/server-source/crates/feltdb/src/permutation_scheduler.rs +38 -10
- package/dist/create/server-source/crates/feltdb/src/persistence_reality.rs +20 -14
- package/dist/create/server-source/crates/feltdb/src/phase1b_acceptance.rs +394 -229
- package/dist/create/server-source/crates/feltdb/src/phase1c1_acceptance.rs +8 -6
- package/dist/create/server-source/crates/feltdb/src/phase1c2_acceptance.rs +11 -13
- package/dist/create/server-source/crates/feltdb/src/phase1c3_acceptance.rs +79 -70
- package/dist/create/server-source/crates/feltdb/src/phase1c_atomicity_proof.rs +3 -3
- package/dist/create/server-source/crates/feltdb/src/phase5_integration.rs +33 -11
- package/dist/create/server-source/crates/feltdb/src/phase5_scenarios.rs +6 -6
- package/dist/create/server-source/crates/feltdb/src/phase6_adversarial_scenarios.rs +14 -56
- package/dist/create/server-source/crates/feltdb/src/phase6_convergence_validator.rs +29 -27
- package/dist/create/server-source/crates/feltdb/src/phase6_persistence.rs +35 -17
- package/dist/create/server-source/crates/feltdb/src/phase_1c_real_tcp.rs +8 -2
- package/dist/create/server-source/crates/feltdb/src/phase_2a_failures.rs +59 -15
- package/dist/create/server-source/crates/feltdb/src/phase_2b_network.rs +70 -17
- package/dist/create/server-source/crates/feltdb/src/phase_2c_cascading.rs +23 -6
- package/dist/create/server-source/crates/feltdb/src/phase_3_durability.rs +12 -3
- package/dist/create/server-source/crates/feltdb/src/phase_4_baseline.rs +41 -11
- package/dist/create/server-source/crates/feltdb/src/phase_5_soak.rs +56 -25
- package/dist/create/server-source/crates/feltdb/src/policy_evaluation.rs +701 -245
- package/dist/create/server-source/crates/feltdb/src/production_api.rs +31 -13
- package/dist/create/server-source/crates/feltdb/src/query_performance.rs +6 -8
- package/dist/create/server-source/crates/feltdb/src/replay_fuzzing.rs +5 -5
- package/dist/create/server-source/crates/feltdb/src/replica_acknowledgements.rs +48 -18
- package/dist/create/server-source/crates/feltdb/src/replica_membership.rs +30 -11
- package/dist/create/server-source/crates/feltdb/src/replication_manager.rs +6 -3
- package/dist/create/server-source/crates/feltdb/src/replication_protocol.rs +4 -3
- package/dist/create/server-source/crates/feltdb/src/sharding.rs +36 -10
- package/dist/create/server-source/crates/feltdb/src/state_conflict_contract.rs +516 -0
- package/dist/create/server-source/crates/feltdb/src/state_contract.rs +13 -4
- package/dist/create/server-source/crates/feltdb/src/state_diff_contract.rs +222 -0
- package/dist/create/server-source/crates/feltdb/src/state_facade.rs +82 -54
- package/dist/create/server-source/crates/feltdb/src/state_hash.rs +2 -2
- package/dist/create/server-source/crates/feltdb/src/state_model.rs +1565 -536
- package/dist/create/server-source/crates/feltdb/src/state_transition_store.rs +6 -3
- package/dist/create/server-source/crates/feltdb/src/state_trigger.rs +672 -0
- package/dist/create/server-source/crates/feltdb/src/storage.rs +9 -3
- package/dist/create/server-source/crates/feltdb/src/submission.rs +5 -11
- package/dist/create/server-source/crates/feltdb/src/tcp_transport.rs +6 -8
- package/dist/create/server-source/crates/feltdb/src/transaction_api.rs +24 -35
- package/dist/create/server-source/crates/feltdb/src/transaction_invariants.rs +24 -8
- package/dist/create/server-source/crates/feltdb/src/transaction_preconditions.rs +248 -59
- package/dist/create/server-source/crates/feltdb/src/transactions.rs +17 -20
- package/dist/create/server-source/crates/feltdb/src/trigger_contract.rs +749 -0
- package/dist/create/server-source/crates/feltdb/src/worker_mesh.rs +1 -0
- package/dist/create/server-source/crates/feltdb/src/workload.rs +512 -4
- package/dist/create/server-source/crates/feltdb/src/workload_diagnostics.rs +3 -4
- package/dist/create/server-source/crates/feltdb/tests/bounded_read_contract.rs +132 -0
- package/dist/create/server-source/crates/feltdb/tests/branching_evidence.rs +299 -0
- package/dist/create/server-source/crates/feltdb/tests/compaction_stall_contract.rs +272 -0
- package/dist/create/server-source/crates/feltdb/tests/crash_durability_contract.rs +467 -0
- package/dist/create/server-source/crates/feltdb/tests/current_revision_authority_evidence.rs +309 -0
- package/dist/create/server-source/crates/feltdb/tests/durable_backup_contract.rs +445 -0
- package/dist/create/server-source/crates/feltdb/tests/durable_corruption_contract.rs +518 -0
- package/dist/create/server-source/crates/feltdb/tests/durable_format_compatibility.rs +392 -0
- package/dist/create/server-source/crates/feltdb/tests/feltdb_state_boundary_tests.rs +436 -220
- package/dist/create/server-source/crates/feltdb/tests/fixtures/state_conflict_contract_corpus.json +1916 -0
- package/dist/create/server-source/crates/feltdb/tests/fixtures/state_diff_contract_corpus.json +1878 -0
- package/dist/create/server-source/crates/feltdb/tests/fixtures/trigger_contract_corpus.json +1862 -0
- package/dist/create/server-source/crates/feltdb/tests/operational_health_contract.rs +278 -0
- package/dist/create/server-source/crates/feltdb/tests/pr34_query_collection.rs +2 -1
- package/dist/create/server-source/crates/feltdb/tests/pr35_equality_index.rs +80 -25
- package/dist/create/server-source/crates/feltdb/tests/pr7_self_authorization_proof.rs +5 -8
- package/dist/create/server-source/crates/feltdb/tests/pr8_vocabulary_assessment.rs +52 -44
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase2_boundary_tests.rs +33 -16
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase3a_path_a_tests.rs +22 -7
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_authorized_mutations.rs +41 -22
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_role_based_authorization.rs +25 -8
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_simple_auth_delete.rs +9 -6
- package/dist/create/server-source/crates/feltdb/tests/pr9_phase3c_team_delete_role_authorization.rs +120 -69
- package/dist/create/server-source/crates/feltdb/tests/pr9_teams_role_based_access.rs +21 -10
- package/dist/create/server-source/crates/feltdb/tests/production_readiness_contract.rs +1365 -0
- package/dist/create/server-source/crates/feltdb/tests/reconciliation_application.rs +868 -0
- package/dist/create/server-source/crates/feltdb/tests/reconciliation_wire_format_evidence.rs +221 -0
- package/dist/create/server-source/crates/feltdb/tests/replicated_history_contract.rs +417 -0
- package/dist/create/server-source/crates/feltdb/tests/resource_scoped_revisions.rs +338 -0
- package/dist/create/server-source/crates/feltdb/tests/revision_identity_contract.rs +1039 -0
- package/dist/create/server-source/crates/feltdb/tests/revision_model_decision.rs +739 -0
- package/dist/create/server-source/crates/feltdb/tests/revision_retention_boundary_evidence.rs +427 -0
- package/dist/create/server-source/crates/feltdb/tests/saas_authorization_integration.rs +3 -3
- package/dist/create/server-source/crates/feltdb/tests/saas_invitation_lifecycle.rs +25 -22
- package/dist/create/server-source/crates/feltdb/tests/state_conflict_contract_conformance.rs +1799 -0
- package/dist/create/server-source/crates/feltdb/tests/state_diff_contract_conformance.rs +1316 -0
- package/dist/create/server-source/crates/feltdb/tests/state_model_integration.rs +53 -61
- package/dist/create/server-source/crates/feltdb/tests/state_persistence_integration.rs +156 -61
- package/dist/create/server-source/crates/feltdb/tests/state_store_boundary_evidence.rs +299 -0
- package/dist/create/server-source/crates/feltdb/tests/sync_divergence_evidence.rs +255 -0
- package/dist/create/server-source/crates/feltdb/tests/three_way_input_boundary_evidence.rs +249 -0
- package/dist/create/server-source/crates/feltdb/tests/trigger_contract_conformance.rs +994 -0
- package/dist/create/server-source/crates/feltdb/tests/workload_envelope_contract.rs +442 -0
- package/dist/create/server-source/crates/feltdb-server/src/app_state.rs +16 -1
- package/dist/create/server-source/crates/feltdb-server/src/auth.rs +164 -13
- package/dist/create/server-source/crates/feltdb-server/src/main.rs +695 -47
- package/dist/create/server-source/crates/feltdb-server/src/metrics.rs +21 -0
- package/dist/studio-app/assets/{feltdb_wasm-CVQWgXO-.js → feltdb_wasm-C1VhI-U5.js} +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-C8HXbAXb.wasm +0 -0
- package/dist/studio-app/assets/{index-DwgNAIIX.js → index-Bbos1m2U.js} +1 -1
- package/dist/studio-app/index.html +1 -1
- package/dist/wasm/feltdb_wasm_bg.wasm +0 -0
- package/dist/workload.d.ts +2 -1
- package/dist/workload.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/studio-app/assets/feltdb_wasm_bg-CNVpvaZV.wasm +0 -0
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
/// Generates multiple orderings of the same operation set to test
|
|
4
4
|
/// whether independent nodes converge to identical state regardless
|
|
5
5
|
/// of message delivery order.
|
|
6
|
-
|
|
7
6
|
use crate::transactions::Operation;
|
|
8
7
|
use rand::seq::SliceRandom;
|
|
9
8
|
use rand::SeedableRng;
|
|
@@ -30,7 +29,10 @@ pub struct OperationSchedule {
|
|
|
30
29
|
|
|
31
30
|
impl OperationSchedule {
|
|
32
31
|
pub fn new(strategy: ScheduleStrategy, operations: Vec<Operation>) -> Self {
|
|
33
|
-
Self {
|
|
32
|
+
Self {
|
|
33
|
+
strategy,
|
|
34
|
+
operations,
|
|
35
|
+
}
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
pub fn id(&self) -> String {
|
|
@@ -78,7 +80,10 @@ impl PermutationScheduler {
|
|
|
78
80
|
/// Generate a comprehensive test set:
|
|
79
81
|
/// - All deterministic permutations
|
|
80
82
|
/// - N random permutations
|
|
81
|
-
pub fn comprehensive_schedules(
|
|
83
|
+
pub fn comprehensive_schedules(
|
|
84
|
+
operations: &[Operation],
|
|
85
|
+
random_count: usize,
|
|
86
|
+
) -> Vec<OperationSchedule> {
|
|
82
87
|
let mut schedules = Self::deterministic_schedules(operations);
|
|
83
88
|
schedules.extend(Self::random_schedules(operations, random_count));
|
|
84
89
|
schedules
|
|
@@ -115,7 +120,7 @@ impl PermutationScheduler {
|
|
|
115
120
|
mod tests {
|
|
116
121
|
use super::*;
|
|
117
122
|
use crate::convergence::VectorClock;
|
|
118
|
-
use crate::transactions::{
|
|
123
|
+
use crate::transactions::{OperationCommand, OperationId, StateVersion};
|
|
119
124
|
use std::collections::HashMap;
|
|
120
125
|
|
|
121
126
|
fn create_test_operation(seq: u64, collection: &str, record_id: &str, value: i32) -> Operation {
|
|
@@ -165,7 +170,10 @@ mod tests {
|
|
|
165
170
|
|
|
166
171
|
// All should be RandomSeed variants
|
|
167
172
|
for schedule in &schedules {
|
|
168
|
-
assert!(matches!(
|
|
173
|
+
assert!(matches!(
|
|
174
|
+
schedule.strategy,
|
|
175
|
+
ScheduleStrategy::RandomSeed { .. }
|
|
176
|
+
));
|
|
169
177
|
}
|
|
170
178
|
}
|
|
171
179
|
|
|
@@ -181,8 +189,16 @@ mod tests {
|
|
|
181
189
|
|
|
182
190
|
// Same seed should produce same order
|
|
183
191
|
for i in 0..3 {
|
|
184
|
-
let ops1: Vec<u64> = schedules1[i]
|
|
185
|
-
|
|
192
|
+
let ops1: Vec<u64> = schedules1[i]
|
|
193
|
+
.operations
|
|
194
|
+
.iter()
|
|
195
|
+
.map(|o| o.operation_id.sequence)
|
|
196
|
+
.collect();
|
|
197
|
+
let ops2: Vec<u64> = schedules2[i]
|
|
198
|
+
.operations
|
|
199
|
+
.iter()
|
|
200
|
+
.map(|o| o.operation_id.sequence)
|
|
201
|
+
.collect();
|
|
186
202
|
assert_eq!(ops1, ops2);
|
|
187
203
|
}
|
|
188
204
|
}
|
|
@@ -222,7 +238,11 @@ mod tests {
|
|
|
222
238
|
|
|
223
239
|
for schedule in &schedules {
|
|
224
240
|
assert_eq!(schedule.operations.len(), 3);
|
|
225
|
-
let seq: Vec<u64> = schedule
|
|
241
|
+
let seq: Vec<u64> = schedule
|
|
242
|
+
.operations
|
|
243
|
+
.iter()
|
|
244
|
+
.map(|o| o.operation_id.sequence)
|
|
245
|
+
.collect();
|
|
226
246
|
assert!(seq.contains(&1));
|
|
227
247
|
assert!(seq.contains(&2));
|
|
228
248
|
assert!(seq.contains(&3));
|
|
@@ -240,7 +260,11 @@ mod tests {
|
|
|
240
260
|
let schedules = PermutationScheduler::deterministic_schedules(&ops);
|
|
241
261
|
let original = &schedules[0];
|
|
242
262
|
|
|
243
|
-
let seq: Vec<u64> = original
|
|
263
|
+
let seq: Vec<u64> = original
|
|
264
|
+
.operations
|
|
265
|
+
.iter()
|
|
266
|
+
.map(|o| o.operation_id.sequence)
|
|
267
|
+
.collect();
|
|
244
268
|
assert_eq!(seq, vec![1, 2, 3]);
|
|
245
269
|
}
|
|
246
270
|
|
|
@@ -255,7 +279,11 @@ mod tests {
|
|
|
255
279
|
let schedules = PermutationScheduler::deterministic_schedules(&ops);
|
|
256
280
|
let reversed = &schedules[1];
|
|
257
281
|
|
|
258
|
-
let seq: Vec<u64> = reversed
|
|
282
|
+
let seq: Vec<u64> = reversed
|
|
283
|
+
.operations
|
|
284
|
+
.iter()
|
|
285
|
+
.map(|o| o.operation_id.sequence)
|
|
286
|
+
.collect();
|
|
259
287
|
assert_eq!(seq, vec![3, 2, 1]);
|
|
260
288
|
}
|
|
261
289
|
}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
/// process writes → crash → restart → recover
|
|
6
6
|
///
|
|
7
7
|
/// Critical test: Same data after arbitrary crash/recovery cycles.
|
|
8
|
-
|
|
9
8
|
use std::collections::HashMap;
|
|
10
9
|
|
|
11
10
|
/// Point at which to inject a crash during persistence
|
|
@@ -26,7 +25,7 @@ pub enum PersistenceCrashPoint {
|
|
|
26
25
|
/// Write-ahead log entry (simplified)
|
|
27
26
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
28
27
|
pub struct WALEntry {
|
|
29
|
-
pub lsn: u64,
|
|
28
|
+
pub lsn: u64, // Log sequence number
|
|
30
29
|
pub operation_id: String,
|
|
31
30
|
pub data: Vec<u8>,
|
|
32
31
|
pub checksum: u32,
|
|
@@ -178,7 +177,10 @@ impl DurablePersistenceLayer {
|
|
|
178
177
|
|
|
179
178
|
/// Simulate disk corruption: flip random bytes
|
|
180
179
|
pub fn corrupt_tail(&mut self, num_entries_affected: usize) {
|
|
181
|
-
let start = self
|
|
180
|
+
let start = self
|
|
181
|
+
.committed_log
|
|
182
|
+
.len()
|
|
183
|
+
.saturating_sub(num_entries_affected);
|
|
182
184
|
for entry in &mut self.committed_log[start..] {
|
|
183
185
|
if !entry.data.is_empty() {
|
|
184
186
|
entry.data[0] ^= 0xFF; // Flip all bits in first byte
|
|
@@ -229,7 +231,9 @@ impl Default for DurablePersistenceLayer {
|
|
|
229
231
|
/// Result of a write operation
|
|
230
232
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
231
233
|
pub enum WriteResult {
|
|
232
|
-
Success {
|
|
234
|
+
Success {
|
|
235
|
+
lsn: u64,
|
|
236
|
+
},
|
|
233
237
|
Crashed {
|
|
234
238
|
written_to_buffer: bool,
|
|
235
239
|
fsynced: bool,
|
|
@@ -321,7 +325,10 @@ impl PersistenceContractVerifier {
|
|
|
321
325
|
if scenario.corrupted_count > 0 {
|
|
322
326
|
// If corruption occurred, it should be detected or entry dropped
|
|
323
327
|
// (not silently included in recovered)
|
|
324
|
-
let expected_max = scenario
|
|
328
|
+
let expected_max = scenario
|
|
329
|
+
.written_operations
|
|
330
|
+
.len()
|
|
331
|
+
.saturating_sub(scenario.corrupted_count);
|
|
325
332
|
if scenario.recovered_operations.len() > expected_max {
|
|
326
333
|
corrupted_undetected += 1;
|
|
327
334
|
}
|
|
@@ -353,7 +360,9 @@ impl Default for PersistenceContractVerifier {
|
|
|
353
360
|
/// Result of fsync durability verification
|
|
354
361
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
355
362
|
pub enum FsyncDurabilityResult {
|
|
356
|
-
Satisfied {
|
|
363
|
+
Satisfied {
|
|
364
|
+
scenarios_checked: usize,
|
|
365
|
+
},
|
|
357
366
|
Violated {
|
|
358
367
|
scenario: String,
|
|
359
368
|
written: usize,
|
|
@@ -400,13 +409,7 @@ mod tests {
|
|
|
400
409
|
PersistenceCrashPoint::AfterFsyncBeforeReturn,
|
|
401
410
|
);
|
|
402
411
|
|
|
403
|
-
assert!(matches!(
|
|
404
|
-
result,
|
|
405
|
-
WriteResult::Crashed {
|
|
406
|
-
fsynced: true,
|
|
407
|
-
..
|
|
408
|
-
}
|
|
409
|
-
));
|
|
412
|
+
assert!(matches!(result, WriteResult::Crashed { fsynced: true, .. }));
|
|
410
413
|
assert_eq!(wal.get_log().len(), 1);
|
|
411
414
|
}
|
|
412
415
|
|
|
@@ -524,7 +527,10 @@ mod tests {
|
|
|
524
527
|
);
|
|
525
528
|
|
|
526
529
|
let result = verifier.verify_corruption_detection();
|
|
527
|
-
assert!(matches!(
|
|
530
|
+
assert!(matches!(
|
|
531
|
+
result,
|
|
532
|
+
CorruptionDetectionResult::Satisfied { .. }
|
|
533
|
+
));
|
|
528
534
|
}
|
|
529
535
|
|
|
530
536
|
#[test]
|