Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 32 additions & 49 deletions fuzz/src/array/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: Copyright the Vortex contributors

pub(crate) use cast::*;
pub(crate) use compare::*;
pub(crate) use fill_null::*;
pub(crate) use filter::*;
pub(crate) use mask::*;
pub(crate) use min_max::*;
pub(crate) use scalar_at::*;
pub(crate) use search_sorted::*;
pub(crate) use slice::*;
pub use sort::sort_canonical_array;
pub(crate) use sum::*;
pub(crate) use take::*;

mod cast;
mod compare;
mod fill_null;
Expand All @@ -20,43 +33,45 @@ use std::ops::Range;
use arbitrary::Arbitrary;
use arbitrary::Error::EmptyChoose;
use arbitrary::Unstructured;
pub(crate) use cast::*;
pub(crate) use compare::*;
pub(crate) use fill_null::*;
pub(crate) use filter::*;
use itertools::Itertools;
pub(crate) use mask::*;
pub(crate) use min_max::*;
pub(crate) use scalar_at::*;
pub(crate) use search_sorted::*;
pub(crate) use slice::*;
pub use sort::sort_canonical_array;
use strum::EnumCount;
use strum::EnumDiscriminants;
use strum::EnumIter;
use strum::IntoEnumIterator;
pub(crate) use sum::*;
pub(crate) use take::*;
use tracing::debug;
use vortex_array::ArrayRef;
use vortex_array::DynArray;
use vortex_array::IntoArray;
use vortex_array::arrays::ConstantArray;
use vortex_array::arrays::PrimitiveArray;
use vortex_array::arrays::arbitrary::ArbitraryArray;
use vortex_array::builtins::ArrayBuiltins;
use vortex_array::compute::MinMaxResult;
use vortex_array::compute::min_max;
use vortex_array::compute::sum;
use vortex_array::dtype::DType;
use vortex_array::dtype::Nullability;
use vortex_array::scalar::Scalar;
use vortex_array::scalar::arbitrary::random_scalar;
use vortex_array::scalar_fn::fns::operators::CompareOperator;
use vortex_array::scalar_fn::fns::operators::Operator;
use vortex_array::search_sorted::SearchResult;
use vortex_array::search_sorted::SearchSorted;
use vortex_array::search_sorted::SearchSortedSide;
use vortex_btrblocks::BtrBlocksCompressor;
use vortex_btrblocks::BtrBlocksCompressorBuilder;
use vortex_btrblocks::FloatCode;
use vortex_btrblocks::IntCode;
use vortex_btrblocks::StringCode;
use vortex_error::VortexExpect;
use vortex_error::vortex_panic;
use vortex_mask::Mask;
use vortex_utils::aliases::hash_set::HashSet;

use crate::error::Backtrace;
use crate::error::VortexFuzzError;
use crate::error::VortexFuzzResult;

#[derive(Debug)]
pub struct FuzzArrayAction {
pub array: ArrayRef,
Expand Down Expand Up @@ -518,11 +533,6 @@ fn random_action_from_list(
/// Compress an array using the given strategy.
#[cfg(feature = "zstd")]
pub fn compress_array(array: &ArrayRef, strategy: CompressorStrategy) -> ArrayRef {
use vortex_btrblocks::BtrBlocksCompressorBuilder;
use vortex_btrblocks::FloatCode;
use vortex_btrblocks::IntCode;
use vortex_btrblocks::StringCode;

match strategy {
CompressorStrategy::Default => BtrBlocksCompressor::default()
.compress(array)
Expand Down Expand Up @@ -552,12 +562,7 @@ pub fn compress_array(array: &ArrayRef, _strategy: CompressorStrategy) -> ArrayR
/// - `Ok(false)` - reject from corpus
/// - `Err(_)` - a bug was found
#[allow(clippy::result_large_err)]
pub fn run_fuzz_action(fuzz_action: FuzzArrayAction) -> crate::error::VortexFuzzResult<bool> {
use vortex_array::arrays::ConstantArray;
use vortex_array::builtins::ArrayBuiltins;
use vortex_array::compute::min_max;
use vortex_array::compute::sum;
use vortex_array::scalar_fn::fns::operators::Operator;
pub fn run_fuzz_action(fuzz_action: FuzzArrayAction) -> VortexFuzzResult<bool> {
let FuzzArrayAction { array, actions } = fuzz_action;
let mut current_array = array.to_array();

Expand Down Expand Up @@ -675,12 +680,7 @@ fn assert_search_sorted(
side: SearchSortedSide,
expected: SearchResult,
step: usize,
) -> crate::error::VortexFuzzResult<()> {
use vortex_array::search_sorted::SearchSorted;

use crate::error::Backtrace;
use crate::error::VortexFuzzError;

) -> VortexFuzzResult<()> {
let search_result = array
.search_sorted(&s, side)
.map_err(|e| VortexFuzzError::VortexError(e, Backtrace::capture()))?;
Expand All @@ -701,14 +701,7 @@ fn assert_search_sorted(

/// Assert two arrays are equal.
#[allow(clippy::result_large_err)]
pub fn assert_array_eq(
lhs: &ArrayRef,
rhs: &ArrayRef,
step: usize,
) -> crate::error::VortexFuzzResult<()> {
use crate::error::Backtrace;
use crate::error::VortexFuzzError;

pub fn assert_array_eq(lhs: &ArrayRef, rhs: &ArrayRef, step: usize) -> VortexFuzzResult<()> {
if lhs.dtype() != rhs.dtype() {
return Err(VortexFuzzError::DTypeMismatch(
lhs.clone(),
Expand Down Expand Up @@ -749,14 +742,7 @@ pub fn assert_array_eq(

/// Assert two scalars are equal.
#[allow(clippy::result_large_err)]
pub fn assert_scalar_eq(
lhs: &Scalar,
rhs: &Scalar,
step: usize,
) -> crate::error::VortexFuzzResult<()> {
use crate::error::Backtrace;
use crate::error::VortexFuzzError;

pub fn assert_scalar_eq(lhs: &Scalar, rhs: &Scalar, step: usize) -> VortexFuzzResult<()> {
if lhs != rhs {
return Err(VortexFuzzError::ScalarMismatch(
lhs.clone(),
Expand All @@ -774,10 +760,7 @@ pub fn assert_min_max_eq(
lhs: &Option<MinMaxResult>,
rhs: &Option<MinMaxResult>,
step: usize,
) -> crate::error::VortexFuzzResult<()> {
use crate::error::Backtrace;
use crate::error::VortexFuzzError;

) -> VortexFuzzResult<()> {
if lhs != rhs {
return Err(VortexFuzzError::MinMaxMismatch(
lhs.clone(),
Expand Down
Loading