java-tests.yaml 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. # Copyright (c) 2023 Project CHIP Authors
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. name: Java Tests
  15. on:
  16. push:
  17. pull_request:
  18. merge_group:
  19. workflow_dispatch:
  20. concurrency:
  21. group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name ==
  22. 'pull_request' && github.event.number) || (github.event_name ==
  23. 'workflow_dispatch' && github.run_number) || github.sha }}
  24. cancel-in-progress: true
  25. env:
  26. CHIP_NO_LOG_TIMESTAMPS: true
  27. # XXX: Workaround for https://github.com/actions/cache/issues/1141
  28. SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3
  29. jobs:
  30. java_tests_linux:
  31. name: Linux
  32. timeout-minutes: 130
  33. env:
  34. TSAN_OPTIONS: "halt_on_error=1 suppressions=scripts/tests/chiptest/tsan-linux-suppressions.txt"
  35. if: github.actor != 'restyled-io[bot]'
  36. runs-on: ubuntu-latest
  37. container:
  38. image: connectedhomeip/chip-build-java:0.7.15
  39. options: --privileged --sysctl "net.ipv6.conf.all.disable_ipv6=0
  40. net.ipv4.conf.all.forwarding=0 net.ipv6.conf.all.forwarding=0"
  41. steps:
  42. - name: Checkout
  43. uses: actions/checkout@v3
  44. - name: Checkout submodules
  45. run: scripts/checkout_submodules.py --allow-changing-global-git-config --shallow --platform linux
  46. - name: Try to ensure the directories for core dumping exist and we
  47. can write them.
  48. run: |
  49. mkdir /tmp/cores || true
  50. sysctl -w kernel.core_pattern=/tmp/cores/core.%u.%p.%t || true
  51. mkdir objdir-clone || true
  52. - name: Bootstrap cache
  53. uses: actions/cache@v3
  54. timeout-minutes: 10
  55. with:
  56. key: ${{ runner.os }}-env-${{ hashFiles('scripts/setup/*', 'third_party/pigweed/**') }}
  57. path: |
  58. .environment
  59. build_overrides/pigweed_environment.gni
  60. - name: Bootstrap
  61. timeout-minutes: 10
  62. run: bash scripts/bootstrap.sh
  63. - name: Uploading bootstrap logs
  64. uses: actions/upload-artifact@v3
  65. if: ${{ always() && !env.ACT }}
  66. with:
  67. name: bootstrap-logs-linux-${{ matrix.build_variant }}${{ matrix.chip_tool }}
  68. path: |
  69. .environment/gn_out/.ninja_log
  70. .environment/pigweed-venv/*.log
  71. - name: Generate unit tests
  72. timeout-minutes: 1
  73. run: |
  74. scripts/run_in_build_env.sh \
  75. './scripts/build/build_examples.py \
  76. --target linux-x64-tests \
  77. gen \
  78. '
  79. - name: Build unit tests
  80. timeout-minutes: 25
  81. run: scripts/run_in_build_env.sh 'ninja -C out/linux-x64-tests src:java_controller_tests'
  82. - name: Run unit tests
  83. timeout-minutes: 10
  84. # TODO: this direct path loading is not maintainable. Our build system should define and
  85. # support test classes.
  86. run: |
  87. $JAVA_PATH/bin/java \
  88. -cp 'third_party/java_deps/artifacts/*:out/linux-x64-tests/lib/src/controller/java/*' \
  89. org.junit.runner.JUnitCore \
  90. chip.tlv.TlvWriterTest \
  91. chip.tlv.TlvReadWriteTest \
  92. chip.tlv.TlvReaderTest \
  93. chip.jsontlv.JsonToTlvToJsonTest
  94. - name: Build Java Matter Controller and all clusters app
  95. timeout-minutes: 50
  96. run: |
  97. scripts/run_in_build_env.sh './scripts/build_python.sh --install_wheel build-env'
  98. ./scripts/run_in_build_env.sh \
  99. "./scripts/build/build_examples.py \
  100. --target linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test \
  101. --target linux-x64-java-matter-controller \
  102. build \
  103. "
  104. - name: Run Discover Commissionables Test
  105. timeout-minutes: 10
  106. run: |
  107. scripts/run_in_build_env.sh \
  108. './scripts/tests/run_java_test.py \
  109. --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
  110. --app-args "--discriminator 3840 --interface-id -1" \
  111. --tool-path out/linux-x64-java-matter-controller \
  112. --tool-cluster "discover" \
  113. --tool-args "commissionables" \
  114. --factoryreset \
  115. '
  116. - name: Run Pairing Onnetwork Test
  117. timeout-minutes: 10
  118. run: |
  119. scripts/run_in_build_env.sh \
  120. './scripts/tests/run_java_test.py \
  121. --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
  122. --app-args "--discriminator 3840 --interface-id -1" \
  123. --tool-path out/linux-x64-java-matter-controller \
  124. --tool-cluster "pairing" \
  125. --tool-args "onnetwork-long --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
  126. --factoryreset \
  127. '
  128. - name: Run IM Invoke Test
  129. timeout-minutes: 10
  130. run: |
  131. scripts/run_in_build_env.sh \
  132. './scripts/tests/run_java_test.py \
  133. --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
  134. --app-args "--discriminator 3840 --interface-id -1" \
  135. --tool-path out/linux-x64-java-matter-controller \
  136. --tool-cluster "im" \
  137. --tool-args "onnetwork-long-im-invoke --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
  138. --factoryreset \
  139. '
  140. - name: Run IM Read Test
  141. timeout-minutes: 10
  142. run: |
  143. scripts/run_in_build_env.sh \
  144. './scripts/tests/run_java_test.py \
  145. --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
  146. --app-args "--discriminator 3840 --interface-id -1" \
  147. --tool-path out/linux-x64-java-matter-controller \
  148. --tool-cluster "im" \
  149. --tool-args "onnetwork-long-im-read --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
  150. --factoryreset \
  151. '
  152. - name: Run IM Write Test
  153. timeout-minutes: 10
  154. run: |
  155. scripts/run_in_build_env.sh \
  156. './scripts/tests/run_java_test.py \
  157. --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
  158. --app-args "--discriminator 3840 --interface-id -1" \
  159. --tool-path out/linux-x64-java-matter-controller \
  160. --tool-cluster "im" \
  161. --tool-args "onnetwork-long-im-write --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
  162. --factoryreset \
  163. '
  164. - name: Run IM Subscribe Test
  165. timeout-minutes: 10
  166. run: |
  167. scripts/run_in_build_env.sh \
  168. './scripts/tests/run_java_test.py \
  169. --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
  170. --app-args "--discriminator 3840 --interface-id -1" \
  171. --tool-path out/linux-x64-java-matter-controller \
  172. --tool-cluster "im" \
  173. --tool-args "onnetwork-long-im-subscribe --nodeid 1 --setup-pin-code 20202021 --discriminator 3840 -t 1000" \
  174. --factoryreset \
  175. '
  176. - name: Run Pairing AlreadyDiscovered Test
  177. timeout-minutes: 10
  178. run: |
  179. scripts/run_in_build_env.sh \
  180. './scripts/tests/run_java_test.py \
  181. --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
  182. --app-args "--discriminator 3840 --interface-id -1" \
  183. --tool-path out/linux-x64-java-matter-controller \
  184. --tool-cluster "pairing" \
  185. --tool-args "already-discovered --nodeid 1 --setup-pin-code 20202021 --address ::1 --port 5540 -t 1000" \
  186. --factoryreset \
  187. '
  188. - name: Run Pairing Address-PaseOnly Test
  189. timeout-minutes: 10
  190. run: |
  191. scripts/run_in_build_env.sh \
  192. './scripts/tests/run_java_test.py \
  193. --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
  194. --app-args "--discriminator 3840 --interface-id -1" \
  195. --tool-path out/linux-x64-java-matter-controller \
  196. --tool-cluster "pairing" \
  197. --tool-args "address-paseonly --nodeid 1 --setup-pin-code 20202021 --address ::1 --port 5540 -t 1000" \
  198. --factoryreset \
  199. '
  200. - name: Run Pairing SetupQRCode Test
  201. timeout-minutes: 10
  202. run: |
  203. scripts/run_in_build_env.sh \
  204. './scripts/tests/run_java_test.py \
  205. --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
  206. --app-args "--discriminator 3840 --interface-id -1" \
  207. --tool-path out/linux-x64-java-matter-controller \
  208. --tool-cluster "pairing" \
  209. --tool-args "code --nodeid 1 --setup-payload MT:-24J0AFN00KA0648G00 --discover-once 1 --use-only-onnetwork-discovery 0 -t 1000" \
  210. --factoryreset \
  211. '
  212. - name: Run Pairing ManualCode Test
  213. timeout-minutes: 10
  214. run: |
  215. scripts/run_in_build_env.sh \
  216. './scripts/tests/run_java_test.py \
  217. --app out/linux-x64-all-clusters-ipv6only-no-ble-no-wifi-tsan-clang-test/chip-all-clusters-app \
  218. --app-args "--discriminator 3840 --interface-id -1" \
  219. --tool-path out/linux-x64-java-matter-controller \
  220. --tool-cluster "pairing" \
  221. --tool-args "code --nodeid 1 --setup-payload 34970112332 --discover-once 1 --use-only-onnetwork-discovery 0 -t 1000" \
  222. --factoryreset \
  223. '
  224. - name: Uploading core files
  225. uses: actions/upload-artifact@v3
  226. if: ${{ failure() && !env.ACT }}
  227. with:
  228. name: crash-core-linux-java-controller
  229. path: /tmp/cores/
  230. # Cores are big; don't hold on to them too long.
  231. retention-days: 5
  232. - name: Uploading objdir for debugging
  233. uses: actions/upload-artifact@v3
  234. if: ${{ failure() && !env.ACT }}
  235. with:
  236. name: crash-objdir-linux-java-controller
  237. path: objdir-clone/
  238. # objdirs are big; don't hold on to them too long.
  239. retention-days: 5