mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 07:49:11 +03:00
historypack: implement get_missing
Summary: Implements another piece of the HistoryStore API. Reviewed By: markbt Differential Revision: D9231396 fbshipit-source-id: b2949396eab999c46cf1a2c24fa7a329a5971682
This commit is contained in:
parent
e41732f1e7
commit
faa6b7a152
@ -225,8 +225,11 @@ impl HistoryStore for HistoryPack {
|
||||
unimplemented!();
|
||||
}
|
||||
|
||||
fn get_missing(&self, _keys: &[Key]) -> Result<Vec<Key>> {
|
||||
unimplemented!();
|
||||
fn get_missing(&self, keys: &[Key]) -> Result<Vec<Key>> {
|
||||
Ok(keys.iter()
|
||||
.filter(|k| self.index.get_node_entry(k).is_err())
|
||||
.map(|k| k.clone())
|
||||
.collect())
|
||||
}
|
||||
|
||||
fn get_node_info(&self, key: &Key) -> Result<NodeInfo> {
|
||||
@ -329,6 +332,23 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_missing() {
|
||||
let mut rng = ChaChaRng::from_seed([0u8; 32]);
|
||||
let tempdir = TempDir::new().unwrap();
|
||||
|
||||
let (nodes, _) = get_nodes(&mut rng);
|
||||
|
||||
let pack = make_pack(&tempdir, &nodes);
|
||||
|
||||
let mut test_keys: Vec<Key> = nodes.keys().map(|k| k.clone()).collect();
|
||||
let missing_key = Key::new(Box::new([9]), Node::random(&mut rng));
|
||||
test_keys.push(missing_key.clone());
|
||||
|
||||
let missing = pack.get_missing(&test_keys[..]).unwrap();
|
||||
assert_eq!(vec![missing_key], missing);
|
||||
}
|
||||
|
||||
quickcheck! {
|
||||
fn test_file_section_header_serialization(name: Vec<u8>, count: u32) -> bool {
|
||||
let header = FileSectionHeader {
|
||||
|
Loading…
Reference in New Issue
Block a user