pub struct TestEngine { /* private fields */ }Implementations§
Source§impl TestEngine
impl TestEngine
Sourcepub fn builder() -> TestEngineBuilder
pub fn builder() -> TestEngineBuilder
Start configuring a test engine via the builder.
Sourcepub fn admin(&self, rql: &str) -> Vec<Frame>
pub fn admin(&self, rql: &str) -> Vec<Frame>
Run an admin RQL statement as system identity. Panics on error.
Sourcepub fn command(&self, rql: &str) -> Vec<Frame>
pub fn command(&self, rql: &str) -> Vec<Frame>
Run a command RQL statement as system identity. Panics on error.
Sourcepub fn query(&self, rql: &str) -> Vec<Frame>
pub fn query(&self, rql: &str) -> Vec<Frame>
Run a query RQL statement as system identity. Panics on error.
Sourcepub fn admin_err(&self, rql: &str) -> String
pub fn admin_err(&self, rql: &str) -> String
Run an admin statement expecting an error. Panics if it succeeds.
Sourcepub fn command_err(&self, rql: &str) -> String
pub fn command_err(&self, rql: &str) -> String
Run a command statement expecting an error. Panics if it succeeds.
Sourcepub fn query_err(&self, rql: &str) -> String
pub fn query_err(&self, rql: &str) -> String
Run a query statement expecting an error. Panics if it succeeds.
Sourcepub fn identity() -> IdentityId
pub fn identity() -> IdentityId
Return the system identity used by this harness.
Sourcepub fn inner(&self) -> &StandardEngine
pub fn inner(&self) -> &StandardEngine
Access the underlying StandardEngine.
Methods from Deref<Target = StandardEngine>§
pub fn begin_command(&self, identity: IdentityId) -> Result<CommandTransaction>
pub fn begin_admin(&self, identity: IdentityId) -> Result<AdminTransaction>
pub fn begin_query(&self, identity: IdentityId) -> Result<QueryTransaction>
pub fn begin_subscription( &self, identity: IdentityId, ) -> Result<SubscriptionTransaction>
pub fn admin_as( &self, identity: IdentityId, rql: &str, params: Params, ) -> Result<Vec<Frame>>
pub fn command_as( &self, identity: IdentityId, rql: &str, params: Params, ) -> Result<Vec<Frame>>
pub fn query_as( &self, identity: IdentityId, rql: &str, params: Params, ) -> Result<Vec<Frame>>
pub fn subscription_as( &self, identity: IdentityId, rql: &str, params: Params, ) -> Result<Vec<Frame>>
Sourcepub fn procedure_as(
&self,
identity: IdentityId,
name: &str,
params: Params,
) -> Result<Vec<Frame>>
pub fn procedure_as( &self, identity: IdentityId, name: &str, params: Params, ) -> Result<Vec<Frame>>
Call a procedure by fully-qualified name.
Sourcepub fn register_virtual_table<T: UserVTable>(
&self,
namespace: &str,
name: &str,
table: T,
) -> Result<VTableId>
pub fn register_virtual_table<T: UserVTable>( &self, namespace: &str, name: &str, table: T, ) -> Result<VTableId>
Register a user-defined virtual table.
The virtual table will be available for queries using the given namespace and name.
§Arguments
namespace- The namespace name (e.g., “default”, “my_namespace”)name- The table nametable- The virtual table implementation
§Returns
The assigned VTableId on success.
§Example
use reifydb_engine::vtable::{UserVTable, UserVTableColumn};
use reifydb_type::value::r#type::Type;
use reifydb_core::value::Columns;
#[derive(Clone)]
struct MyTable;
impl UserVTable for MyTable {
fn definition(&self) -> Vec<UserVTableColumn> {
vec![UserVTableColumn::new("id", Type::Uint8)]
}
fn get(&self) -> Columns {
// Return column-oriented data
Columns::empty()
}
}
let id = engine.register_virtual_table("default", "my_table", MyTable)?;Sourcepub fn create_interceptors(&self) -> Interceptors
pub fn create_interceptors(&self) -> Interceptors
Create a new set of interceptors from the factory.
Sourcepub fn add_interceptor_factory(
&self,
factory: Arc<dyn Fn(&mut Interceptors) + Send + Sync>,
)
pub fn add_interceptor_factory( &self, factory: Arc<dyn Fn(&mut Interceptors) + Send + Sync>, )
Register an additional interceptor factory function.
The function will be called on every create() to augment the base interceptors.
This is thread-safe and can be called after the engine is constructed (e.g. by subsystems).
Sourcepub fn begin_query_at_version(
&self,
version: CommitVersion,
identity: IdentityId,
) -> Result<QueryTransaction>
pub fn begin_query_at_version( &self, version: CommitVersion, identity: IdentityId, ) -> Result<QueryTransaction>
Begin a query transaction at a specific version.
This is used for parallel query execution where multiple tasks need to read from the same snapshot (same CommitVersion) for consistency.
pub fn multi(&self) -> &MultiTransaction
pub fn multi_owned(&self) -> MultiTransaction
Sourcepub fn actor_system(&self) -> ActorSystem
pub fn actor_system(&self) -> ActorSystem
Get the actor system
pub fn single(&self) -> &SingleTransaction
pub fn single_owned(&self) -> SingleTransaction
pub fn emit<E: Event>(&self, event: E)
pub fn materialized_catalog(&self) -> &MaterializedCatalog
Sourcepub fn catalog(&self) -> Catalog
pub fn catalog(&self) -> Catalog
Returns a Catalog instance for catalog lookups.
The Catalog provides three-tier lookup methods that check transactional changes,
then MaterializedCatalog, then fall back to storage.
pub fn flow_operator_store(&self) -> &SystemFlowOperatorStore
Sourcepub fn current_version(&self) -> Result<CommitVersion>
pub fn current_version(&self) -> Result<CommitVersion>
Get the current version from the transaction manager
Sourcepub fn done_until(&self) -> CommitVersion
pub fn done_until(&self) -> CommitVersion
Returns the highest version where ALL prior versions have completed. This is useful for CDC polling to know the safe upper bound for fetching CDC events - all events up to this version are guaranteed to be in storage.
Sourcepub fn wait_for_mark_timeout(
&self,
version: CommitVersion,
timeout: Duration,
) -> bool
pub fn wait_for_mark_timeout( &self, version: CommitVersion, timeout: Duration, ) -> bool
Wait for the watermark to reach the given version with a timeout. Returns true if the watermark reached the target, false if timeout occurred.
pub fn executor(&self) -> Executor
Sourcepub fn cdc_store(&self) -> CdcStore
pub fn cdc_store(&self) -> CdcStore
Get the CDC store from the IoC container.
Returns the CdcStore that was registered during engine construction. Panics if CdcStore was not registered.
pub fn shutdown(&self)
Sourcepub fn bulk_insert<'e>(
&'e self,
identity: IdentityId,
) -> BulkInsertBuilder<'e, Validated>
pub fn bulk_insert<'e>( &'e self, identity: IdentityId, ) -> BulkInsertBuilder<'e, Validated>
Start a bulk insert operation with full validation.
This provides a fluent API for fast bulk inserts that bypasses RQL parsing. All inserts within a single builder execute in one transaction.
§Example
use reifydb_type::params;
engine.bulk_insert(&identity)
.table("namespace.users")
.row(params!{ id: 1, name: "Alice" })
.row(params!{ id: 2, name: "Bob" })
.done()
.execute()?;Sourcepub fn bulk_insert_trusted<'e>(
&'e self,
identity: IdentityId,
) -> BulkInsertBuilder<'e, Trusted>
pub fn bulk_insert_trusted<'e>( &'e self, identity: IdentityId, ) -> BulkInsertBuilder<'e, Trusted>
Start a bulk insert operation with validation disabled (trusted mode).
Use this for pre-validated internal data where constraint validation can be skipped for maximum performance.
§Safety
The caller is responsible for ensuring the data conforms to the schema constraints. Invalid data may cause undefined behavior.
Trait Implementations§
Source§impl Deref for TestEngine
impl Deref for TestEngine
Source§type Target = StandardEngine
type Target = StandardEngine
Source§fn deref(&self) -> &StandardEngine
fn deref(&self) -> &StandardEngine
Auto Trait Implementations§
impl Freeze for TestEngine
impl !RefUnwindSafe for TestEngine
impl Send for TestEngine
impl Sync for TestEngine
impl Unpin for TestEngine
impl UnsafeUnpin for TestEngine
impl !UnwindSafe for TestEngine
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
Source§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
self file descriptor.Source§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
Source§fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
self file descriptor. Read moreSource§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request