core/benches/ops/utils.rs (35 lines of code) (raw):
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
use bytes::Bytes;
use opendal::raw::tests::TEST_RUNTIME;
use opendal::*;
use rand::prelude::*;
pub fn gen_bytes(rng: &mut ThreadRng, size: usize) -> Bytes {
let mut content = vec![0; size];
rng.fill_bytes(&mut content);
content.into()
}
pub struct TempData {
op: Operator,
path: String,
}
impl TempData {
pub fn existing(op: Operator, path: &str) -> Self {
Self {
op,
path: path.to_string(),
}
}
pub fn generate(op: Operator, path: &str, content: Bytes) -> Self {
TEST_RUNTIME.block_on(async { op.write(path, content).await.expect("create test data") });
Self {
op,
path: path.to_string(),
}
}
}
impl Drop for TempData {
fn drop(&mut self) {
TEST_RUNTIME.block_on(async {
self.op.delete(&self.path).await.expect("cleanup test data");
})
}
}