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

feat: SQLNESS SLEEP <DURATION_STRING> #67

Merged
merged 10 commits into from
Jun 18, 2024
Merged

Conversation

discord9
Copy link
Contributor

@discord9 discord9 commented Jun 17, 2024

Rationale

Some test would require a certain amount of time to output final results(i.e. continous aggregate with some amount of delay)
So it make sense for sqlness to have a sleep function, i.e. mysql&postgre sql both have sleep function, but it could be useful to have a sleep function in test client side anyway.

Detailed Changes

add a -- SQLNESS SLEEP <Milliseconds> to sleep for given time in milliseconds before executing query,
which internally just spawn a new thread for sleeping when sleep is needed, this is for simplicity sake, and also to allow cross-runtime async sleep. The overhead of spawn a thread is deemed low since the query is sleeping anyway, the only reason why we can't just blocking sleep directly is because it's async up there so blocking a async task make a lot of trouble to any async runtime.

Test Plan

a simple test added for waiting given time

sqlness/src/interceptor/sleep.rs Outdated Show resolved Hide resolved
sqlness/src/interceptor.rs Outdated Show resolved Hide resolved
sqlness/src/interceptor/sleep.rs Outdated Show resolved Hide resolved
@waynexia waynexia requested a review from jiacai2050 June 17, 2024 08:27
Copy link
Member

@jiacai2050 jiacai2050 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@@ -74,7 +75,9 @@ impl InterceptorFactory for SleepInterceptorFactory {
prefix: PREFIX.to_string(),
msg: format!("Failed to parse milliseconds: {}", e),
})?;
Ok(Box::new(SleepInterceptor { milliseconds }))
Ok(Box::new(SleepInterceptor {
duration: Duration::from_millis(milliseconds),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not what I mean, I expect the params used in template is duration, like -- SQLNESS SLEEP 15s.

@waynexia waynexia changed the title feat: SQLNESS SLEEP <MILLSECONDS> feat: SQLNESS SLEEP <DURATION_STRING> Jun 18, 2024
Copy link
Member

@waynexia waynexia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@waynexia waynexia merged commit 5469532 into CeresDB:main Jun 18, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants