[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