60 lines
1.7 KiB
Rust
60 lines
1.7 KiB
Rust
// 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::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");
|
|
})
|
|
}
|
|
}
|