lib.rs 31.8 KiB
Newer Older
			.expect(REMOTE_INACCESSIBLE)
			.execute_with(|| {});

		Builder::<Block>::new()
			.mode(Mode::Online(OnlineConfig {
				transport: "wss://rpc.polkadot.io:443".to_owned().into(),
				pallets: vec!["Proxy".to_owned(), "Multisig".to_owned()],
				..Default::default()
			}))
			.build()
			.await
			.expect(REMOTE_INACCESSIBLE)
			.execute_with(|| {});
	}

	#[tokio::test]
	async fn can_create_top_snapshot() {
		init_logger();
		Builder::<Block>::new()
			.mode(Mode::Online(OnlineConfig {
				state_snapshot: Some(SnapshotConfig::new("can_create_top_snapshot_data")),
				pallets: vec!["Proxy".to_owned()],
				..Default::default()
			}))
			.build()
			.await
			.expect(REMOTE_INACCESSIBLE)
			.execute_with(|| {});

		let to_delete = std::fs::read_dir(Path::new("."))
			.unwrap()
			.into_iter()
			.map(|d| d.unwrap())
			.filter(|p| {
				p.path().file_name().unwrap_or_default() == "can_create_top_snapshot_data" ||
					p.path().extension().unwrap_or_default() == "top" ||
					p.path().extension().unwrap_or_default() == "child"
			})
			.collect::<Vec<_>>();

		assert!(to_delete.len() > 0);

		for d in to_delete {
			use std::os::unix::fs::MetadataExt;
			if d.path().extension().unwrap_or_default() == "top" {
				// if this is the top snapshot it must not be empty.
				assert!(std::fs::metadata(d.path()).unwrap().size() > 1);
			} else {
				// the child is empty for this pallet.
				assert!(std::fs::metadata(d.path()).unwrap().size() == 1);
			}
			std::fs::remove_file(d.path()).unwrap();
		}
	}
	#[tokio::test]
	async fn can_build_child_tree() {
		init_logger();
		Builder::<Block>::new()
			.mode(Mode::Online(OnlineConfig {
				transport: "wss://rpc.polkadot.io:443".to_owned().into(),
				pallets: vec!["Crowdloan".to_owned()],
				..Default::default()
			}))
			.build()
			.await
			.expect(REMOTE_INACCESSIBLE)
	#[tokio::test]
	async fn can_create_child_snapshot() {
		init_logger();
		Builder::<Block>::new()
			.mode(Mode::Online(OnlineConfig {
				state_snapshot: Some(SnapshotConfig::new("can_create_child_snapshot_data")),
				pallets: vec!["Crowdloan".to_owned()],
				..Default::default()
			}))
			.inject_default_child_tree_prefix()
			.expect(REMOTE_INACCESSIBLE)
			.execute_with(|| {});

		let to_delete = std::fs::read_dir(Path::new("."))
			.unwrap()
			.into_iter()
			.map(|d| d.unwrap())
			.filter(|p| {
				p.path().file_name().unwrap_or_default() == "can_create_child_snapshot_data" ||
					p.path().extension().unwrap_or_default() == "top" ||
					p.path().extension().unwrap_or_default() == "child"
			})
			.collect::<Vec<_>>();

		assert!(to_delete.len() > 0);

		for d in to_delete {
			use std::os::unix::fs::MetadataExt;
			// if this is the top snapshot it must not be empty
			if d.path().extension().unwrap_or_default() == "child" {
				assert!(std::fs::metadata(d.path()).unwrap().size() > 1);
			} else {
				assert!(std::fs::metadata(d.path()).unwrap().size() > 1);
			}
			std::fs::remove_file(d.path()).unwrap();
		}
	}

	#[tokio::test]
	async fn can_fetch_all() {
		init_logger();
		Builder::<Block>::new()
			.mode(Mode::Online(OnlineConfig {
				state_snapshot: Some(SnapshotConfig::new("can_fetch_all_data")),
				..Default::default()
			}))
			.expect(REMOTE_INACCESSIBLE)
			.execute_with(|| {});

		let to_delete = std::fs::read_dir(Path::new("."))
			.unwrap()
			.into_iter()
			.map(|d| d.unwrap())
			.filter(|p| {
				p.path().file_name().unwrap_or_default() == "can_fetch_all_data" ||
					p.path().extension().unwrap_or_default() == "top" ||
					p.path().extension().unwrap_or_default() == "child"
			})
			.collect::<Vec<_>>();

		assert!(to_delete.len() > 0);

		for d in to_delete {
			use std::os::unix::fs::MetadataExt;
			// if we download everything, child tree must also be filled.
			if d.path().extension().unwrap_or_default() == "child" {
				assert!(std::fs::metadata(d.path()).unwrap().size() > 1);
			} else {
				assert!(std::fs::metadata(d.path()).unwrap().size() > 1);
			}
			std::fs::remove_file(d.path()).unwrap();
		}