Skip to main content

TestDag

Struct TestDag 

Source
pub struct TestDag {
    pub dag: Dag,
    pub seg_size: usize,
    pub dir: TempDir,
    pub output: Arc<Mutex<Vec<String>>>,
}
Expand description

Dag structure for testing purpose.

Fields§

§dag: Dag§seg_size: usize§dir: TempDir§output: Arc<Mutex<Vec<String>>>

Implementations§

Source§

impl TestDag

Source

pub fn new() -> Self

Creates a TestDag for testing. Side effect of the TestDag will be removed on drop.

Source

pub fn draw(text: &str) -> Self

Crates a TestDag using the given ASCII.

This is just new, followed by drawdag, with an extra rule that comments like “# master: M” at the end can be used to specify master heads .

Source

pub async fn draw_client(text: &str) -> Self

Similar to draw but creates a lazy client so all vertexes in the master group are lazy.

Source

pub fn new_with_segment_size(seg_size: usize) -> Self

Creates a TestDag with a specific segment size.

Source

pub fn reopen(&mut self)

Reopen the dag. Drop in-memory state including caches.

Source

pub fn drawdag(&mut self, text: &str, master_heads: &[&str])

Add vertexes to the graph. Does not resolve vertexes remotely.

Source

pub async fn drawdag_async(&mut self, text: &str, master_heads: &[&str])

Add vertexes to the graph. Async version that might resolve vertexes remotely on demand.

Source

pub fn drawdag_with_limited_heads( &mut self, text: &str, master_heads: &[&str], heads: Option<&[&str]>, )

Add vertexes to the graph.

If heads is set, ignore part of the graph. Only consider specified heads.

Source

pub async fn drawdag_with_limited_heads_async( &mut self, text: &str, master_heads: &[&str], heads: Option<&[&str]>, validate: bool, )

Source

pub async fn add_one_vertex(&mut self, name: &str, parents: &str)

Add one vertex to the non-master group. parents is split by whitespaces.

Source

pub async fn flush(&mut self, master_heads: &str)

Flush space-separated master heads.

Source

pub fn annotate_ascii(&self, text: &str) -> String

Replace ASCII with Ids in the graph.

Source

pub fn render_segments(&self) -> String

Render the segments.

Source

pub fn render_graph(&self) -> String

Render the graph.

Source

pub async fn client(&self) -> TestDag

Use this DAG as the “server”, return the “client” Dag that has lazy Vertexes.

Source

pub fn set_remote(&mut self, server_dag: &Self)

Update remote protocol to use the (updated) server graph.

Source

pub fn with_remote(self, server_dag: &Self) -> Self

Alternative syntax of set_remote.

Source

pub async fn client_cloned_data(&self) -> TestDag

Similar to client, but also clone the Dag from the server.

Source

pub async fn pull_ff_master( &mut self, server: &Self, old_master: impl Into<Set>, new_master: impl Into<Set>, ) -> Result<()>

Pull from the server Dag using the master fast forward fast path.

Source

pub async fn export_pull_data( &self, common: impl Into<Set>, heads: impl Into<Set>, ) -> Result<CloneData<Vertex>>

Generate the “pull data”. This is intended to be called from a “server”.

Source

pub async fn import_pull_data( &mut self, pull_data: CloneData<Vertex>, head_opts: impl Into<VertexListWithOptions>, ) -> Result<()>

Imports the “pull data”. This is intended to be called from a “client”.

Source

pub async fn strip(&mut self, names: &'static str)

Strip space-separated vertexes.

Source

pub fn remote_protocol( &self, output: Arc<Mutex<Vec<String>>>, ) -> Arc<dyn RemoteIdConvertProtocol>

Remote protocol used to resolve Id <-> Vertex remotely using the test dag as the “server”.

Logs of the remote access will be written to output.

Source

pub fn debug_segments(&self, level: Level, group: Group) -> String

Describe segments at the given level and group as a string.

Source

pub fn output(&self) -> Vec<String>

Output of remote protocols since the last call.

Source

pub fn contains_vertex_locally(&self, name: impl Into<Vertex>) -> bool

Check that a vertex exists locally.

Methods from Deref<Target = Dag>§

Source

pub async fn set_managed_virtual_group( &mut self, items: Option<Vec<(Vertex, Vec<Vertex>)>>, ) -> Result<()>

Set the content of the VIRTUAL group that survives reloading.

items is a list of vertexes and parents. The vertexes MUST be unique and not already exist in non-VIRTUAL groups. This assumption is used as an optimization to avoid remote lookups.

Existing content of the VIRTUAL group will be cleared before inserting items. So this API feels declarative. As a comparison, add_heads is imperative.

This function calls maybe_recreate_virtual_group immediately to clear and update contents in the VIRTUAL group. maybe_recreate_virtual_group will be called automatically after graph changing operations: add_heads_and_flush, strip, flush, import_pull_data.

Source

pub fn set_remote_protocol( &mut self, protocol: Arc<dyn RemoteIdConvertProtocol>, )

Set the remote protocol for converting between Id and Vertex remotely.

This is usually used on “sparse” (“lazy”) Dag where the IdMap is incomplete for vertexes in the master groups.

Source

pub fn dag(&self) -> &IdDag<IS>

Source

pub fn map(&self) -> &M

Trait Implementations§

Source§

impl Deref for TestDag

Source§

type Target = AbstractDag<IdDag<IndexedLogStore>, IdMap, IndexedLogDagPath, DagState>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl DerefMut for TestDag

Source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more