build-and-test.yml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. name: build-and-test
  2. on: push
  3. env:
  4. CC: gcc-4.9
  5. CXX: g++-4.9
  6. secret_account: ${{ secrets.DOCKER_USERNAME }}
  7. jobs:
  8. building:
  9. runs-on: ubuntu-latest
  10. steps:
  11. - uses: actions/checkout@v3
  12. - name: Install gcc env
  13. run: |
  14. echo "deb http://dk.archive.ubuntu.com/ubuntu/ xenial main" | sudo tee -a /etc/apt/sources.list
  15. echo "deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe" | sudo tee -a /etc/apt/sources.list
  16. sudo apt update
  17. sudo apt install gcc-4.9 g++-4.9
  18. shell: bash
  19. - name: Install dependency
  20. run: |
  21. sudo apt-get install -y make zlib1g zlib1g-dev bzip2 liblz4-dev libasan0 openssl libmxml-dev
  22. - name: cmake project
  23. run: |
  24. cd ${{github.workspace}}
  25. mkdir build
  26. cd build
  27. cmake ../
  28. make
  29. - name: Login docker hub
  30. uses: docker/login-action@v2
  31. with:
  32. username: ${{ secrets.DOCKER_USERNAME }}
  33. password: ${{ secrets.DOCKER_PASSWORD }}
  34. - name: Publish devel docker
  35. run: |
  36. cd ${{github.workspace}}
  37. cp build/src/core/core dockerfiles/devel/
  38. cp build/src/agent/dtcagent dockerfiles/devel/
  39. cp build/src/agent-watchdog/agent-watchdog dockerfiles/devel/
  40. cp build/src/complex/async-connector dockerfiles/devel/
  41. cp build/src/connector/connector dockerfiles/devel/
  42. cp build/src/data_lifecycle/data-lifecycle-manager dockerfiles/devel/
  43. cp build/src/hwcserver/hwcserver dockerfiles/devel/
  44. cp build/src/rule/librule.so dockerfiles/devel/
  45. cp src/libs/hsql/libs/libsqlparser.so dockerfiles/devel/
  46. cp build/src/utils/conf-gen-utils dockerfiles/devel/
  47. cd dockerfiles/devel/
  48. docker build -t ${{ secrets.DOCKER_USERNAME }}/devel:all .
  49. docker push ${{ secrets.DOCKER_USERNAME }}/devel:all
  50. docker build -t ${{ secrets.DOCKER_USERNAME }}/devel:latest .
  51. docker push ${{ secrets.DOCKER_USERNAME }}/devel:latest
  52. # Core Junction
  53. CORE:
  54. needs: building
  55. runs-on: ubuntu-latest
  56. steps:
  57. - run: echo "Core Junction."
  58. # Agent Junction
  59. AGENT:
  60. needs: building
  61. runs-on: ubuntu-latest
  62. steps:
  63. - run: echo "Agent Junction."
  64. # Layered Junction
  65. LAYERED:
  66. needs: building
  67. runs-on: ubuntu-latest
  68. steps:
  69. - run: echo "Layered Junction."
  70. # Testing Cache Only
  71. test-dtc-cache-only:
  72. needs: CORE
  73. runs-on: ubuntu-latest
  74. services:
  75. dtc:
  76. image: docker.io/kfysck/devel:all
  77. ports:
  78. - 20015:20015
  79. volumes:
  80. - /usr/local/etc:/usr/local/dtc/conf/
  81. options: --name dtc
  82. env:
  83. DTC_BIN: agent-watchdog
  84. DTC_ARGV: -c
  85. steps:
  86. - uses: actions/checkout@v3
  87. - name: Install python dependency
  88. run: |
  89. python -m pip install --upgrade pip
  90. pip install pytest
  91. pip install pymysql
  92. - name: Set up Python 3.7
  93. uses: actions/setup-python@v2
  94. with:
  95. python-version: "3.7"
  96. - name: Copy conf files.
  97. run: |
  98. cd ${{github.workspace}}
  99. sudo cp -f conf/log4cplus.conf /usr/local/etc/
  100. sudo cp -f dockerfiles/devel/dtc.cacheonly.yaml /usr/local/etc/dtc.yaml
  101. - name: Run Testing Cases
  102. run: |
  103. sleep 5s
  104. docker ps -a
  105. docker logs dtc
  106. cd ${{github.workspace}}/tests
  107. pytest test_dtcd_cache_only.py
  108. # Testing Cache Only via Agent.
  109. test-agent-cache-only:
  110. needs: AGENT
  111. if: false
  112. runs-on: ubuntu-latest
  113. services:
  114. dtc:
  115. image: docker.io/kfysck/devel:all
  116. ports:
  117. - 20015:20015
  118. volumes:
  119. - /usr/local/etc:/usr/local/dtc/conf/
  120. options: --name dtc
  121. env:
  122. DTC_BIN: agent-watchdog
  123. DTC_ARGV: -c
  124. agent:
  125. image: docker.io/kfysck/devel:all
  126. ports:
  127. - 12001:12001
  128. volumes:
  129. - /usr/local/etc:/usr/local/dtc/conf/
  130. options: --name agent
  131. env:
  132. DTC_BIN: agent-watchdog
  133. DTC_ARGV: -a
  134. steps:
  135. - uses: actions/checkout@v3
  136. - name: Install python dependency
  137. run: |
  138. python -m pip install --upgrade pip
  139. pip install pytest
  140. pip install pymysql
  141. sudo apt update
  142. sudo apt install -y net-tools
  143. - name: Set up Python 3.7
  144. uses: actions/setup-python@v2
  145. with:
  146. python-version: "3.7"
  147. - name: Copy conf files.
  148. run: |
  149. cd ${{github.workspace}}
  150. sudo cp -f conf/log4cplus.conf /usr/local/etc/
  151. sudo cp -f dockerfiles/devel/dtc.cacheonly.yaml /usr/local/etc/dtc.yaml
  152. sudo cp -f dockerfiles/devel/agent.single.dtcd.xml /usr/local/etc/agent.xml
  153. - name: Run Testing Cases
  154. run: |
  155. sleep 5s
  156. docker ps -a
  157. netstat -ntpl
  158. docker logs agent
  159. docker logs dtc
  160. cd ${{github.workspace}}/tests
  161. pytest test_agent_cache_only.py
  162. # Testing Layered Storage.
  163. test-agent-layered:
  164. if: false
  165. needs: LAYERED
  166. runs-on: ubuntu-latest
  167. services:
  168. mysql:
  169. image: mysql:5.7
  170. ports:
  171. - 3306:3306
  172. env:
  173. MYSQL_ROOT_PASSWORD: 123456
  174. agent:
  175. image: docker.io/kfysck/devel:all
  176. ports:
  177. - 12001:12001
  178. volumes:
  179. - /usr/local/etc:/usr/local/dtc/conf/
  180. options: --name agent
  181. env:
  182. DTC_BIN: agent-watchdog
  183. DTC_ARGV: -ayc
  184. steps:
  185. - uses: actions/checkout@v3
  186. - name: Install python dependency
  187. run: |
  188. python -m pip install --upgrade pip
  189. pip install pytest
  190. pip install pymysql
  191. - name: Set up Python 3.7
  192. uses: actions/setup-python@v2
  193. with:
  194. python-version: "3.7"
  195. - name: Init db table
  196. run: |
  197. sleep 5s
  198. mysql -h127.0.0.1 -uroot -p123456 -e "create database layer2;"
  199. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "source tests/init.s1.sql;"
  200. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "show tables;"
  201. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "desc opensource;"
  202. mysql -h127.0.0.1 -uroot -p123456 -e "create database layer3;"
  203. mysql -h127.0.0.1 -uroot -p123456 -Dlayer3 -e "source tests/init.s1.sql;"
  204. mysql -h127.0.0.1 -uroot -p123456 -Dlayer3 -e "show tables;"
  205. mysql -h127.0.0.1 -uroot -p123456 -Dlayer3 -e "desc opensource;"
  206. - name: Copy conf files.
  207. run: |
  208. cd ${{github.workspace}}
  209. sudo cp -f conf/log4cplus.conf /usr/local/etc/
  210. sudo cp -f dockerfiles/devel/dtc.layered.yaml /usr/local/etc/dtc.yaml
  211. sudo cp -f dockerfiles/devel/agent.layered.xml /usr/local/etc/agent.xml
  212. - name: Run Testing Cases
  213. run: |
  214. sleep 5s
  215. docker ps -a
  216. netstat -ntpl
  217. docker logs agent
  218. cd ${{github.workspace}}/tests
  219. echo "show databases;"
  220. mysql -h127.0.0.1 -P12001 -uroot -p123456 -e "show databases;"
  221. echo "use layer2;"
  222. mysql -h127.0.0.1 -P12001 -uroot -p123456 -Dlayer2 -e "use layer2;"
  223. echo "show tables;"
  224. mysql -h127.0.0.1 -P12001 -uroot -p123456 -Dlayer2 -e "show tables;"
  225. # pytest test_agent_cache_only.py
  226. # Testing Cache with Datasource Scene 1 (Single DB and Single Table)
  227. test-dtc-ds-S-db-S-table:
  228. needs: CORE
  229. runs-on: ubuntu-latest
  230. services:
  231. mysql:
  232. image: mysql:5.7
  233. ports:
  234. - 3306:3306
  235. env:
  236. MYSQL_ROOT_PASSWORD: 123456
  237. dtc:
  238. image: docker.io/kfysck/devel:all
  239. ports:
  240. - 20015:20015
  241. volumes:
  242. - /usr/local/etc:/usr/local/dtc/conf/
  243. options: --name dtc
  244. env:
  245. DTC_BIN: agent-watchdog
  246. DTC_ARGV: -c
  247. steps:
  248. - uses: actions/checkout@v3
  249. - name: Install python dependency
  250. run: |
  251. python -m pip install --upgrade pip
  252. pip install pytest
  253. pip install pymysql
  254. - name: Set up Python 3.7
  255. uses: actions/setup-python@v2
  256. with:
  257. python-version: "3.7"
  258. - name: Init db table
  259. run: |
  260. sleep 5s
  261. mysql -h127.0.0.1 -uroot -p123456 -e "create database layer2;"
  262. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "source tests/init.s1.sql;"
  263. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "show tables;"
  264. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "desc opensource;"
  265. - name: Copy conf files.
  266. run: |
  267. cd ${{github.workspace}}
  268. sudo cp -f conf/log4cplus.conf /usr/local/etc/
  269. sudo cp -f dockerfiles/devel/dtc.dbaddition.s1.yaml /usr/local/etc/dtc.yaml
  270. - name: Run Testing Cases
  271. run: |
  272. sleep 5s
  273. docker ps -a
  274. docker logs dtc
  275. cd ${{github.workspace}}/tests
  276. pytest test_dtcd_datasource_s1.py
  277. # Testing Cache with Datasource Scene 1 (Single DB and Single Table) via Agent
  278. test-agent-ds-S-db-S-table:
  279. needs: AGENT
  280. if: false
  281. runs-on: ubuntu-latest
  282. services:
  283. mysql:
  284. image: mysql:5.7
  285. ports:
  286. - 3306:3306
  287. env:
  288. MYSQL_ROOT_PASSWORD: 123456
  289. agent:
  290. image: docker.io/kfysck/devel:all
  291. ports:
  292. - 12001:12001
  293. volumes:
  294. - /usr/local/etc:/usr/local/dtc/conf/
  295. options: --name agent
  296. env:
  297. DTC_BIN: dtcagent
  298. dtc:
  299. image: docker.io/kfysck/devel:all
  300. ports:
  301. - 20015:20015
  302. volumes:
  303. - /usr/local/etc:/usr/local/dtc/conf/
  304. options: --name dtc
  305. env:
  306. DTC_BIN: agent-watchdog
  307. DTC_ARGV: -c
  308. steps:
  309. - uses: actions/checkout@v3
  310. - name: Install python dependency
  311. run: |
  312. python -m pip install --upgrade pip
  313. pip install pytest
  314. pip install pymysql
  315. - name: Set up Python 3.7
  316. uses: actions/setup-python@v2
  317. with:
  318. python-version: "3.7"
  319. - name: Init db table
  320. run: |
  321. sleep 5s
  322. mysql -h127.0.0.1 -uroot -p123456 -e "create database layer2;"
  323. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "source tests/init.s1.sql;"
  324. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "show tables;"
  325. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "desc opensource;"
  326. - name: Copy conf files.
  327. run: |
  328. cd ${{github.workspace}}
  329. sudo cp -f conf/log4cplus.conf /usr/local/etc/
  330. sudo cp -f dockerfiles/devel/dtc.dbaddition.s1.yaml /usr/local/etc/dtc.yaml
  331. sudo cp -f dockerfiles/devel/agent.single.dtcd.xml /usr/local/etc/agent.xml
  332. - name: Run Testing Cases
  333. run: |
  334. sleep 5s
  335. docker ps -a
  336. docker logs agent
  337. docker logs dtc
  338. cd ${{github.workspace}}/tests
  339. pytest test_agent_datasource_s1.py
  340. # Testing Cache with Datasource Scene 2 (Single DB and Multi Table)
  341. test-dtc-ds-S-db-M-table:
  342. needs: CORE
  343. runs-on: ubuntu-latest
  344. services:
  345. mysql:
  346. image: mysql:5.7
  347. ports:
  348. - 3306:3306
  349. env:
  350. MYSQL_ROOT_PASSWORD: 123456
  351. dtc:
  352. image: docker.io/kfysck/devel:all
  353. ports:
  354. - 20015:20015
  355. volumes:
  356. - /usr/local/etc:/usr/local/dtc/conf/
  357. options: --name dtc
  358. env:
  359. DTC_BIN: agent-watchdog
  360. DTC_ARGV: -c
  361. steps:
  362. - uses: actions/checkout@v3
  363. - name: Install python dependency
  364. run: |
  365. python -m pip install --upgrade pip
  366. pip install pytest
  367. pip install pymysql
  368. - name: Set up Python 3.7
  369. uses: actions/setup-python@v2
  370. with:
  371. python-version: "3.7"
  372. - name: Init db table
  373. run: |
  374. sleep 5s
  375. mysql -h127.0.0.1 -uroot -p123456 -e "create database layer2;"
  376. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "source tests/init.s2.sql;"
  377. mysql -h127.0.0.1 -uroot -p123456 -Dlayer2 -e "show tables;"
  378. - name: Copy conf files.
  379. run: |
  380. cd ${{github.workspace}}
  381. sudo cp -f conf/log4cplus.conf /usr/local/etc/
  382. sudo cp -f dockerfiles/devel/dtc.dbaddition.s2.yaml /usr/local/etc/dtc.yaml
  383. - name: Run Testing Cases
  384. run: |
  385. sleep 5s
  386. docker ps -a
  387. docker logs dtc
  388. cd ${{github.workspace}}/tests
  389. pytest test_dtcd_datasource_s2.py