MCPcopy Create free account
hub / github.com/clockworklabs/SpacetimeDB / load_1_2_data

Function load_1_2_data

crates/engine/src/relational_db.rs:3908–3959  ·  view source on GitHub ↗

Load a v1.2 database, verify that the expected tables are present, and we can add a table.

(use_snapshot: bool)

Source from the content-addressed store, hash-verified

3906
3907 /// Load a v1.2 database, verify that the expected tables are present, and we can add a table.
3908 fn load_1_2_data(use_snapshot: bool) -> ResultTest<()> {
3909 let data_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("testdata/v1.2/replicas");
3910 let tempdir = copy_fixture_dir(&data_dir);
3911
3912 let dir = ReplicaDir::from_path_unchecked(tempdir.path().join("replicas/22000001"));
3913
3914 let rt = tokio::runtime::Builder::new_multi_thread().enable_all().build()?;
3915 // Enter the runtime so that `Self::durable_internal` can spawn a `SnapshotWorker`.
3916 let _rt = rt.enter();
3917
3918 let db_identity = Identity::from_hex("c2006c1c2ede44b44e9835dfe00e3e1edc3bc67024b504cb6a3b8491db5d98a3")?;
3919 let owner_identity = Identity::from_hex("c2001c551217385bdeba5f1e1b5b19a28910852a94ce43428508e7a098760cea")?;
3920 let (db, _durability_handle) = TestDB::open_existing_durable(
3921 &dir,
3922 rt.handle().clone(),
3923 22000001,
3924 db_identity,
3925 owner_identity,
3926 use_snapshot,
3927 )?;
3928 let mut tx = db.begin_mut_tx(IsolationLevel::Serializable, Workload::ForTests);
3929 let schemas = db.get_all_tables_mut(&tx)?;
3930 let user_table_names: Vec<String> = schemas
3931 .iter()
3932 .filter(|s| s.table_id.0 > 4000)
3933 .sorted_by_key(|s| s.table_id.0)
3934 .map(|s| s.table_name.clone().to_string())
3935 .collect();
3936 let expected_table_names = vec!["message", "user"];
3937 assert_eq!(user_table_names, expected_table_names);
3938
3939 let table_id = db.create_table(&mut tx, my_table(AlgebraicType::I32))?;
3940 db.commit_tx(tx)?;
3941
3942 let tx = db.begin_mut_tx(IsolationLevel::Serializable, Workload::ForTests);
3943 let t_id = db.table_id_from_name_mut(&tx, "MyTable")?.unwrap();
3944 assert_eq!(table_id, t_id);
3945 assert_eq!("MyTable", db.table_name_from_id_mut(&tx, t_id)?.unwrap());
3946 db.commit_tx(tx)?;
3947 let tx = db.begin_tx(Workload::ForTests);
3948 let user_table_names: Vec<String> = db
3949 .get_all_tables(&tx)?
3950 .iter()
3951 .filter(|s| s.table_id.0 > 4000)
3952 .sorted_by_key(|s| s.table_id.0)
3953 .map(|s| s.table_name.clone().to_string())
3954 .collect();
3955 let expected_table_names = vec!["message", "user", "MyTable"];
3956 assert_eq!(user_table_names, expected_table_names);
3957
3958 Ok(())
3959 }
3960
3961 #[test]
3962 fn load_1_2_quickstart_from_snapshot_test() -> ResultTest<()> {

Calls 15

copy_fixture_dirFunction · 0.85
my_tableFunction · 0.85
joinMethod · 0.80
handleMethod · 0.80
get_all_tables_mutMethod · 0.80
commit_txMethod · 0.80
get_all_tablesMethod · 0.80
filterMethod · 0.65
iterMethod · 0.65
OkFunction · 0.50
pathMethod · 0.45

Used in the wild real call sites across dependent graphs

searching dependent graphs…