[Rust] tokio: test

๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์žˆ๊ณ , ๊ทธ๊ฑธ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š”, ์ผ๋ฐ˜ ์œ ๋‹›ํ…Œ์ŠคํŠธ ์ปจํ…์ŠคํŠธ๋Š” async๊ฐ€ ์•„๋‹ˆ๋ผ์„œ awaiting์„ ์ œ๋Œ€๋กœ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹จ ๊ฒƒ์ด๋‹ค.

์ด๊ฑธ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ์ง์ ‘ tokio ์ปจํ…์ŠคํŠธ ์ƒ์„ฑํ•ด์„œ block_on ๊ฑธ๊ณ  ํ•˜๋ฉด ๋˜๊ฒ ์ง€๋งŒ, ๋„ˆ๋ฌด ์†์ด ๋งŽ์ด ๊ฐ€๊ณ  ๋ณต์žกํ•˜๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ๋Ÿฐ๊ฑธ ํ•ด์ฃผ๋Š”๊ฒŒ tokio::test๋ผ๋Š” ์ˆ์ปท ๋งคํฌ๋กœ๋‹ค.

์Šค๋ ˆ๋“œ ๋ช‡๊ฐœ ์“ธ์ง€ ์ •๋„๋งŒ ์ •์˜ํ•ด์„œ ๋Œ€์‹  ๋ฐ•์•„์ฃผ๋ฉด ์ž˜ ๋™์ž‘ํ•œ๋‹ค.

์Šค๋ ˆ๋“œ ๊ฐœ์ˆ˜๋‚˜ flavor๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด current_thread๋กœ ๋™์ž‘ํ•œ๋‹ค. ๊ทธ๋ƒฅ ํ…Œ์ŠคํŠธ๋งˆ๋‹ค ์ ๋‹นํžˆ ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ๋กœ ๋œจ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.




Sleep ์ฒ˜๋ฆฌ ๋Œ€์‘: start_paused

๋น„๋™๊ธฐ ์ฝ”๋“œ๋“ค์€ ์†๋„ ์ œ์–ด๋ฅผ ์œ„ํ•ด์„œ Sleep ๋“ฑ์„ ํ†ตํ•ด์„œ ๋ช…์‹œ์ ์ธ ๋Œ€๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค.
๋ฌธ์ œ๋Š”, ๊ทธ๋ ‡๊ฒŒ ๋ถ™์ด๋‹ค๋ณด๋ฉด ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ•˜๋‚˜ํ•˜๋‚˜๊ฐ€ ๋งค์šฐ ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋ ‡๊ฒŒ๋งŒ ํ•ด๋„ ํ•œ๋ฒˆ ๋Œ๋•Œ๋งˆ๋‹ค 10์ดˆ์”ฉ ๊ฑธ๋ฆฐ๋‹ค.

์‹œ๊ฐ„ ๋Œ€๊ธฐ๊ฐ€ ๋‹จ์œ„ํ…Œ์ŠคํŠธ์— ์žˆ์–ด์„œ ์œ ์˜๋ฏธํ•œ ์š”์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, start_paused ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์„œ ํ…Œ์ŠคํŠธ ์†๋„๋ฅผ ๋Œ์–ด์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

์ด๊ฒŒ ๋ญ๋ƒ๋ฉด, ํ…Œ์ŠคํŠธ ์ปจํ…์ŠคํŠธ์— ํ•œํ•ด์„œ๋Š” sleep ๋™์ž‘์„ ์”น๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๋Ÿฐํƒ€์ž„ ์ƒ์„ฑ์‹œ์— ์ € ํ”Œ๋ž˜๊ทธ๋ฅผ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ธ๋ฐ

์ €๊ฑธ ๋„ฃ์œผ๋ฉด paused ๋™์ž‘, ์ •ํ™•ํžˆ๋Š” tokio::time::sleep๊ณผ tokio::time::Interval::tick๊ฐ€ ๋ฌด์‹œ๋˜๋„๋ก ํ•œ๋‹ค.
std:๐Ÿงตsleep์ด๋‚˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋“ค์— ๋Œ€ํ•ด์„œ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. tokio๋งŒ์„ ์“ด๋‹ค๋Š” ์ „์ œ ํ•˜์—์„œ๋งŒ ์œ ํšจํ•˜๋‹ค.

์•„๋ฌดํŠผ ๋”ฑ ์ด๋Ÿฐ ํ…Œ์ŠคํŠธ ์ปจํ…์ŠคํŠธ์—๋งŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ํ”Œ๋ž˜๊ทธ๋‹ค.



์ฐธ์กฐ
https://docs.rs/tokio/latest/tokio/attr.test.html
https://tokio.rs/tokio/topics/testing