Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Etag 的单测跑不通 #21

Open
Jetsly opened this issue Feb 15, 2023 · 1 comment
Open

Etag 的单测跑不通 #21

Jetsly opened this issue Feb 15, 2023 · 1 comment
Labels
bug Something isn't working

Comments

@Jetsly
Copy link

Jetsly commented Feb 15, 2023

单测地址 : https://github.com/qiniu/rust-sdk/blob/master/etag/src/etag.rs#L222

#[cfg(test)]
mod tests {
    use qiniu_etag::{prelude::*, EtagV1, EtagV2};
    use std::{boxed::Box, error::Error, result::Result};

    mod utils {
        const FAKE_DATA: [u8; 4096] = make_fake_data();

        pub(super) fn data_of_size(size: usize) -> Vec<u8> {
            let mut buffer = Vec::with_capacity(size);
            let mut rest = size;

            while rest > 0 {
                let add_size = rest.min(FAKE_DATA.len());
                buffer.extend_from_slice(&FAKE_DATA[..add_size]);
                rest -= add_size;
            }
            buffer
        }

        const fn make_fake_data() -> [u8; 4096] {
            let mut buf = [b'b'; 4096];
            buf[0] = b'A';
            buf[4094] = b'\r';
            buf[4095] = b'\n';
            buf
        }
    }

    #[test]
    fn test_etag_v2() -> Result<(), Box<dyn Error>> {
        let mut etag_v1 = EtagV1::default();
        let mut etag_v2 = EtagV2::default();
        etag_v1.update(&utils::data_of_size(1 << 22));
        etag_v2.update(&utils::data_of_size(1 << 22));
        etag_v1.update(&utils::data_of_size(1 << 22));
        etag_v2.update(&utils::data_of_size(1 << 22));
        etag_v1.update(&utils::data_of_size(1 << 20));
        etag_v2.update(&utils::data_of_size(1 << 20));
        assert_eq!(
            etag_v1.finalize_fixed().as_slice(),
            etag_v2.finalize_fixed().as_slice(),
        );
        Ok(())
    }
}
  1. 看逻辑当 https://github.com/qiniu/rust-sdk/blob/master/etag/src/etag_v2.rs#L47 长度不等于固定大小的时候,下一次就不会用etagv1
  2. 输出的结果 https://github.com/qiniu/rust-sdk/blob/master/etag/src/etag_v2.rs#L94 前缀就不会一样
@Jetsly Jetsly changed the title Etag 的单测跑不通 Etag 的单测跑不通 https://github.com/qiniu/rust-sdk/blob/master/etag/src/etag.rs#L222 Feb 15, 2023
@Jetsly Jetsly changed the title Etag 的单测跑不通 https://github.com/qiniu/rust-sdk/blob/master/etag/src/etag.rs#L222 Etag 的单测跑不通 Feb 15, 2023
@bachue bachue added the bug Something isn't working label Feb 16, 2023
@bachue
Copy link
Collaborator

bachue commented Feb 16, 2023

好的,这个之后会修复的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants