cbridge - aragorn/home GitHub Wiki
cbridge - bridge tool according to ConvBridge interface
https://github.com/aragorn/home/blob/master/bin/cbridge
cbridge seed seed_url destination_pattern ...
cbridge session source_url file
cbridge pull source_url file [count]
cbridge pull source_url destination_url [count]
cbridge pull source_url [count]
cbridge list [pattern ...]
cbridge resume session [count]
cbridge resume pattern ... [count]
cbridge status session
cbridge stop pattern ...
cbridge remove pattern ...
cbridge
๋ ConvBridge ์ธํฐํ์ด์ค์ ๋ฐ๋ฅธ bridge๋ฅผ ๊ตฌํํ ํ๋ก๊ทธ๋จ์ด๋ค. cbridge
๋ source ์ ๋ฐ์ดํฐ๋ฅผ destination ์ผ๋ก ๋ณด๋ด๋ ์ ์ก ๊ธฐ๋ฅ์ ์ํํ๋ค. ConvBridge ์ธํฐํ์ด์ค์์ ๋ฐ์ดํฐ์ ๋ณํ, ๋ณํฉ ๋ฑ ๊ฐ๊ณต ๊ธฐ๋ฅ์ converter๊ฐ ๋ด๋นํ๊ณ , bridge๋ converter๋ก ๋ณํ๋ ๋ฐ์ดํฐ๋ฅผ destination์ผ๋ก ์ ์กํ๋ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ค. ConvBridge๋ ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ก์ ์ํ ์ธํฐํ์ด์ค๋ก ConvBridge์์ ์์ธํ ๋ช
์ธ์ ๋ฌธ์, ์์๋ฅผ ์ฐพ์ ์ ์๋ค.
bridge๋ ์ธ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ค. ์ธ์ ์ source์์ destination์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์ผ๋ จ์ ํ๋ฆ์์์ ์ํ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. bridge๋ ์ธ์ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์์ผ๋ฉฐ, ์ ์ฅ๋ ์ธ์ ์ ๋ณด๋ฅผ ์ด์ฉํด ์ค๋จ๋ ์ ์ก์ ์ฌ๊ฐํ ์ ์๋ค. ์ธ์ ์ ๊ตฌ์ฑํ๋ ํญ๋ชฉ ์ค, source, destination, next_urls ์ด ํ์ ํญ๋ชฉ์ด๋ค.
cbridge seed
๋ seed_url์์ converter_url ์ ๊ฐ์ ธ์ ์ธ์
์ ์์ฑํ๋ค. seed_url์ converter_url์ ํ๋ ์ด์ ๋์ดํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ณด๋ด๋ API์ด๋ค.
destination_pattern์ "sprintf" in perlfunc์์ ์ฌ์ฉํ๋ ํฌ๋งท์ผ๋ก, ์ ์ํ conversion specification ์ ํ๋ ํฌํจํ ์ ์๋ค. ์ ์ํ conversion specification์๋ seed_url์ด ๋ด๋ณด๋ด๋ converter_url์ ์์์ ๋ฐ๋ฅธ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค. ์๋ฅผ ๋ค์ด, converter_url์ด 10๊ฐ์ด๊ณ , destination_pattern์ด path/file-%02d.txt
๋ก ์ฃผ์ด์ง ๊ฒฝ์ฐ, ํฌ๋งท์ conversion specification์๋ 0..9 ์ ๊ฐ์ด ์ฃผ์ด์ ธ, path/file-00.txt
, path/file-01.txt
, path/file-02.txt
, ... , path/file-09.txt
๋ฑ 10๊ฐ์ destination ์ด ๊ฒฐ์ ๋๋ค.
์ฌ๋ฌ converter_url์ ํ๋ ์ด์ ์ฃผ์ด์ง destination_pattern์ ์์ฐจ์ ์ผ๋ก ๋์๋์ด ๊ฐ ์ธ์
์ ๊ตฌ์ฑํ๋ค. converter_url์ ์๋งํผ session์ด ์์ฑ๋๋ฉฐ, session์ source๋ converter_url, destination์ ์ง์ ๋ destination_pattern์ด ๋๋ค. destination_pattern์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ, session์ destination์ ์ฌ๋ฌ pattern์ ์์ฐจ์ ์ผ๋ก ๋์๋์ด ์์ฑ๋๋ค. ์๋ฅผ ๋ค์ด, converter_url์ด url1, url2, url3, ... url10 ๋ฑ 10๊ฐ์ด๊ณ , destination_pattern์ด path1/file-%02d.txt
, path2/file-%02d.txt
, path3/file-%02d.txt
์ผ๋ก 3๊ฐ์ธ ๊ฒฝ์ฐ, 10๊ฐ์ ์ธ์
์ด ์์ฑ๋๋ฉฐ, ๊ฐ session์ source - destination ๊ตฌ์ฑ์ url1 - path1/file-00.txt, url2 - path2/file-01.txt, url3 - path3/file-02.txt, url4 - path1/file-03.txt, ... , url10 - path1/file-09.txt ๊ฐ ๋๋ค.
bash
๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, destination_pattern์ shell์ brace expansion, tilde expansion ๋ฑ์ ํ์ฉํ์ฌ, ์์ ์์์ destination_pattern์ {path1,path2,path3}/file-%02d.txt
๋ก ์
๋ ฅํ ์ ์๋ค.
cbridge pull
๋๋ cbridge session
๋ช
๋ น์ ์๋ก์ด ์ธ์
์ ์์ฑํ๊ฒ ๋๋ค. cbridge session
๋ช
๋ น์ ์ธ์
์ ์์ฑํ ํ, ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ง ์๊ณ ์ข
๋ฃํ๋ค. cbridge pull
์ ์ธ์
์ ์์ฑํ ํ, ๋ฐ์ดํฐ ์ ์ก์ ์คํํ๋ค.
๋ฐ์ดํฐ ์ ์ก์ ๋ฐ์ดํฐ์ ๋ง์ง๋ง๊น์ง ์ ์ก์ด ์๋ฃ๋๊ฑฐ๋, ์ ํ์ ์ผ๋ก ์ฃผ์ด์ง ์คํ ํ๋ผ๋ฏธํฐ์ธ count๋งํผ converter์ ๋ณํ์์ฒญ์ ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ ์กํ ํ ์คํ์ ์ ์งํ๋ค. count๊ฐ 0 ์ธ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ์ ๋ง์ง๋ง๊น์ง ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค๋ ์๋ฏธ์ด๋ค. ์ง์ ๋ count ๋งํผ ๋ณํ ์์ฒญ์ ํ๊ธฐ ์ ์ ๋ฐ์ดํฐ ์ ์ก์ด ์๋ฃ๋์ด๋, cbridge๋ ์คํ์ ์ ์งํ๋ค.
count ํ๋ผ๋ฏธํฐ๋ converter์ url ์ฟผ๋ฆฌ์๋ ์ ์๋์ด ์์ง๋ง, cbridge pull
์ count ํ๋ผ๋ฏธํฐ๋ ์ด converter url์ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ์ ๊ด๋ จ์ด ์๋ค. converter์ url ์ฟผ๋ฆฌ์ ์ ์๋ count ํ๋ผ๋ฏธํฐ๋ 1ํ ๋ณํ ์์ฒญ์์ ๋ด๋ณด๋ด๋ ๋ฌธ์์ ์ต๋์ ๋๋ ๋ณ๊ฒฝ๋ชฉ๋ก์ ์ด๋ฒคํธ ์๋ฅผ ์๋ฏธํ๋ค. bridge์ ์คํ ํ๋ผ๋ฏธํฐ์ธ count๋ bridge๊ฐ converter์ http ์์ฒญ์ ๋ณด๋ด๋ ์ต๋ ํ์๋ฅผ ์๋ฏธํ๋ค.
cbridge list
๋ ์์ฑ๋ ์ธ์
์ ๋ชฉ๋ก์ผ๋ก ๋์ดํ๋ค. pattern์ ์ง์ ํ๋ ๊ฒฝ์ฐ, shell ์ ํ์ผ ๋งค์นญ๊ณผ ๋์ผํ ์ธ์
์ด๋ฆ ํจํด ๋งค์นญ์ด ๊ฐ๋ฅํ๋ค. pattern ๋งค์นญ์ perl์ "glob" in perlfunc ๋ด์ฅํจ์๋ฅผ ์ ์ฉํ์๋ค.
cbridge status
๋ ์ง์ ํ ์ธ์
์ ์์ธ ์ ๋ณด๋ฅผ ์ถ๋ ฅํ๋ค.
cbridge resume
๋ ์ง์ ํ ์ธ์
์ ๋ฐ์ดํฐ ์ ์ก์ ์ฌ๊ฐํ๋ค. cbridge pull
๋ช
๋ น์ cbridge session
์คํ ํ cbridge resume
๋ช
๋ น์ ์คํํ ๊ฒ๊ณผ ๋๋ฑํ๋ค.
cbridge stop
๋ pattern์ ์ผ์นํ๋ ์ด๋ฆ์ ์ธ์
์ ์ค์งํ๋ค. ์ด๋ ์ธ์
์ ๋ค๋ฅธ cbridge ํ๋ก์ธ์ค์ ์ํด ๋ฐ์ดํฐ ์ ์ก์ด ์งํ ์ค์ธ ์ธ์
์ ๊ฐ๋ฆฌํค๋ฉฐ, ๋ฐ์ดํฐ ์ ์ก์ ์ค์งํ๊ธฐ ์ํด SIGINT ์๊ทธ๋์ ๋ณด๋ธ๋ค.
cbridge remove
๋ ์ง์ ํ ์ธ์
์ ์ญ์ ํ๋ค. ํด๋น ์ธ์
์์ ์ ์กํ ๋ฐ์ดํฐ๋ ์ญ์ ํ์ง ์๋๋ค. ๋ก์ปฌ ํ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒฝ์ฐ, ๋ก์ปฌ ๋ฐ์ดํฐ ํ์ผ์ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๊ทธ๋๋ก ๋๋ค.
-
cbridge pull ์์ progress ๋ณด์ฌ์ฃผ๊ธฐ
-
cbridge pull ์์ from, to ํ๋ผ๋ฏธํฐ์ ๊ฐ์ ์ด์ฉํด ์ข ๋ฃ ์๊ฐ ์์ธกํ๊ธฐ
-
support for search engines - elastic search
-
support for search engines - breeze
-
support for mysql destination
-
cbridge seed
-
dump file ์ ์คํฌ๋ฆฝํธ ํ์ผ๋ก ๊ฐ์ฃผํ์ฌ ์คํํ๋ ๊ธฐ๋ฅ : ๋ ผ๋ฆฌ์ ์ด์ง ์์
์๋ก์ด ํ๋ก์ธ์ค์์ ์ ์ฅ๋ session์ resume ํ๋ ๊ฒฝ์ฐ, session ๊ฐ์ฒด๋ฅผ ์์ฑ ํ ๊ณง๋ฐ๋ก ํ์ผ์ ์ ์ฅํ๋ค. ์๊ฐ์ ์ธ race condition ์ ๊ฐ๋ฅํ๋, PID ๊ฐ ๊ฐฑ์ ์ ์์ด๊ฐ ์์๋์ง ์๋๋ค. race condition์์๋ ๋๋ค๋ฅธ ํ๋ก์ธ์ค์์ stop session ํ ๋ ์คํจํ ์ ์๋ค.
์ด๋ฏธ ์กด์ฌํ๋ ๋ก์ปฌํ์ผ์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ถ์ด๋ ์ธ์ ์ ์์ฑํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค.
ํ์ฌ ๊ตฌํ์ ์ธ์ ์์ฑ ์, ๋ก์ปฌํ์ผ์ด ์ด๋ฏธ ์กด์ฌํ๋ฉด ์คํ์ ์ค๋จํ๊ณ ์ธ์ ์์ฑ์ ์ทจ์ํ๋ค. destination ์์ append ๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฉํ๋ url schema ๋๋ ์ต์ ์ ๊ตฌํํ๋ฉด ๋ ๊น...??? ์๋๋ฉด append mode ์ต์ ์ ์ถ๊ฐํ ๊น....?
- session
-
session object ๋ session file์ open(2)ํ ํ, shared lock ์ ์ป๋๋ค. session ์ด active ์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ค๋ฉด, exclusive lock ์ ์ป์ผ๋ ค ์๋ํด ๋ณด๊ณ , ์คํจํ ๊ฒฝ์ฐ, ์ด session ์ด active ๋ผ ํ๋จํ๋ค. ์ฆ, ํ์ฌ์ session object ์ด์ธ์ ๋์ผํ session object ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ, active ๋ผ ํ๋จํ๋ ๊ฒ์ด๋ค.
session ์ด active ํ์ง ์๋ ๊ฒฝ์ฐ, next_urls ๊ฐ ์กด์ฌํ๋ฉด stopped ์ํ์ด๊ณ , next_urls ๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด, completed ์ํ์ด๋ค.
-
perl์ TAP ์ธํฐํ์ด์ค๋ก ํ ์คํธ๋ฅผ ์ํ
prove t/cbridge-basic.t prove t/cbridge-unit.t
-
Using TAP with Java - http://blogs.perl.org/users/confuseacat/2011/09/perl-testing-with-jenkinshudson-avoiding-some-pitfalls.html