Load a v1.2 database, verify that the expected tables are present, and we can add a table.
(use_snapshot: bool)
| 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<()> { |
searching dependent graphs…