BUILD.bazel 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616
  1. load("@rules_python//python:defs.bzl", "py_library", "py_test")
  2. load("@rules_python//python:pip.bzl", "compile_pip_requirements")
  3. load("@py_deps_buildkite//:requirements.bzl", bk_require = "requirement")
  4. compile_pip_requirements(
  5. name = "requirements_buildkite",
  6. requirements_in = "requirements_buildkite.in",
  7. requirements_txt = "requirements_buildkite.txt",
  8. tags = [
  9. "team:ci",
  10. ],
  11. visibility = ["//visibility:private"],
  12. )
  13. compile_pip_requirements(
  14. name = "requirements_byod_3.9",
  15. requirements_in = "ray_release/byod/requirements_byod_3.9.in",
  16. requirements_txt = "ray_release/byod/requirements_byod_3.9.txt",
  17. tags = [
  18. "team:ci",
  19. ],
  20. visibility = ["//visibility:private"],
  21. )
  22. compile_pip_requirements(
  23. name = "requirements_byod_3.11",
  24. requirements_in = "ray_release/byod/requirements_byod_3.11.in",
  25. requirements_txt = "ray_release/byod/requirements_byod_3.11.txt",
  26. tags = [
  27. "team:ci",
  28. ],
  29. visibility = ["//visibility:private"],
  30. )
  31. compile_pip_requirements(
  32. name = "requirements_ml_byod_3.9",
  33. requirements_in = "ray_release/byod/requirements_ml_byod_3.9.in",
  34. requirements_txt = "ray_release/byod/requirements_ml_byod_3.9.txt",
  35. tags = [
  36. "team:ci",
  37. ],
  38. visibility = ["//visibility:private"],
  39. )
  40. test_srcs = glob(["**/*.py"])
  41. ####
  42. # SERVE smoke tests
  43. ####
  44. py_test(
  45. name = "serve_failure_smoke_test",
  46. size = "medium",
  47. srcs = test_srcs,
  48. env = {
  49. "RAY_UNIT_TEST": "1",
  50. },
  51. main = "serve_failure.py",
  52. tags = [
  53. "exclusive",
  54. "team:serve",
  55. ],
  56. deps = [
  57. "//:ray_lib",
  58. "//python/ray/serve:serve_lib",
  59. ],
  60. )
  61. py_test(
  62. name = "multi_deployment_1k_noop_replica_smoke_test",
  63. size = "medium",
  64. srcs = test_srcs,
  65. env = {
  66. "IS_SMOKE_TEST": "1",
  67. },
  68. main = "multi_deployment_1k_noop_replica.py",
  69. tags = [
  70. "exclusive",
  71. "team:serve",
  72. ],
  73. deps = [
  74. "//:ray_lib",
  75. "//python/ray/serve:serve_lib",
  76. ],
  77. )
  78. py_test(
  79. name = "tune_serve_golden_notebook_client_smoke_test",
  80. size = "medium",
  81. srcs = test_srcs,
  82. env = {
  83. "IS_SMOKE_TEST": "1",
  84. },
  85. main = "golden_notebook_tests/workloads/torch_tune_serve_test.py",
  86. tags = [
  87. "exclusive",
  88. "team:serve",
  89. ],
  90. deps = [
  91. "//:ray_lib",
  92. "//python/ray/serve:serve_lib",
  93. ],
  94. )
  95. ####
  96. # AIR smoke tests
  97. ####
  98. py_test(
  99. name = "xgboost_train_batch_inference_benchmark_smoke_test",
  100. size = "small",
  101. srcs = test_srcs,
  102. args = ["xgboost", "--smoke-test"],
  103. main = "train_tests/xgboost_lightgbm/train_batch_inference_benchmark.py",
  104. tags = [
  105. "exclusive",
  106. "team:ml",
  107. ],
  108. deps = [
  109. "//:ray_lib",
  110. "//python/ray/air:ml_lib",
  111. ],
  112. )
  113. py_test(
  114. name = "air_benchmark_gpu_batch_inference_parquet_smoke_test",
  115. size = "small",
  116. srcs = test_srcs,
  117. args = [
  118. "--data-directory=10G-image-data-synthetic-raw-parquet",
  119. "--data-format=parquet",
  120. "--smoke-test",
  121. ],
  122. main = "nightly_tests/dataset/gpu_batch_inference.py",
  123. tags = [
  124. "exclusive",
  125. "team:data",
  126. ],
  127. deps = [
  128. "//:ray_lib",
  129. "//python/ray/air:ml_lib",
  130. ],
  131. )
  132. py_test(
  133. name = "air_benchmark_gpu_batch_inference_raw_image_smoke_test",
  134. size = "small",
  135. srcs = test_srcs,
  136. args = [
  137. "--data-directory=10G-image-data-synthetic-raw",
  138. "--data-format=raw",
  139. "--smoke-test",
  140. ],
  141. main = "nightly_tests/dataset/gpu_batch_inference.py",
  142. tags = [
  143. "exclusive",
  144. "team:data",
  145. ],
  146. deps = [
  147. "//:ray_lib",
  148. "//python/ray/air:ml_lib",
  149. ],
  150. )
  151. py_test(
  152. name = "air_benchmark_pytorch_training_e2e_smoke_test",
  153. size = "small",
  154. srcs = test_srcs,
  155. args = [
  156. "--data-size-gb=1",
  157. "--smoke-test",
  158. ],
  159. main = "air_tests/air_benchmarks/workloads/pytorch_training_e2e.py",
  160. tags = [
  161. "exclusive",
  162. "team:ml",
  163. ],
  164. deps = [
  165. "//:ray_lib",
  166. "//python/ray/air:ml_lib",
  167. ],
  168. )
  169. py_test(
  170. name = "air_benchmark_tensorflow_smoke_test",
  171. size = "large",
  172. srcs = test_srcs,
  173. args = [
  174. "run",
  175. "--num-runs=1",
  176. "--num-epochs=1",
  177. "--num-workers=1",
  178. "--cpus-per-worker=1",
  179. "--batch-size=1",
  180. "--smoke-test",
  181. "--local",
  182. ],
  183. main = "air_tests/air_benchmarks/workloads/tensorflow_benchmark.py",
  184. tags = [
  185. "exclusive",
  186. "team:ml",
  187. ],
  188. deps = [
  189. "//:ray_lib",
  190. "//python/ray/air:ml_lib",
  191. ],
  192. )
  193. py_test(
  194. name = "air_benchmark_torch_smoke_test",
  195. size = "large",
  196. srcs = test_srcs,
  197. args = [
  198. "run",
  199. "--num-runs=1",
  200. "--num-epochs=1",
  201. "--num-workers=1",
  202. "--cpus-per-worker=1",
  203. "--batch-size=1",
  204. "--smoke-test",
  205. "--local",
  206. ],
  207. main = "air_tests/air_benchmarks/workloads/torch_benchmark.py",
  208. tags = [
  209. "exclusive",
  210. "team:ml",
  211. ],
  212. deps = [
  213. "//:ray_lib",
  214. "//python/ray/air:ml_lib",
  215. ],
  216. )
  217. py_test(
  218. name = "air_benchmark_tune_torch_smoke_test",
  219. # Keep this medium, as it will be slower if data has to be downloaded
  220. # (runtime is shorter when air_benchmark_torch_smoke_test is executed first)
  221. size = "medium",
  222. srcs = test_srcs,
  223. args = [
  224. "--num-runs=1",
  225. "--num-trials=1",
  226. "--num-workers=1",
  227. "--smoke-test",
  228. ],
  229. main = "air_tests/air_benchmarks/workloads/tune_torch_benchmark.py",
  230. tags = [
  231. "exclusive",
  232. "team:ml",
  233. ],
  234. deps = [
  235. "//:ray_lib",
  236. "//python/ray/air:ml_lib",
  237. ],
  238. )
  239. ####
  240. # RELEASE TEST INFRA unit tests
  241. ####
  242. sh_binary(
  243. name = "run",
  244. srcs = ["run_release_test.sh"],
  245. data = ["run_release_test"],
  246. env = {
  247. "NO_INSTALL": "1",
  248. "RAY_TEST_SCRIPT": "./run_release_test",
  249. }
  250. )
  251. py_binary(
  252. name = "run_release_test",
  253. srcs = ["ray_release/scripts/run_release_test.py"],
  254. deps = [":ray_release"],
  255. )
  256. py_library(
  257. name = "ray_release",
  258. srcs = glob(
  259. ["ray_release/**/*.py"],
  260. exclude = ["ray_release/tests/*.py"],
  261. ),
  262. data = glob(["ray_release/environments/*.env"]) + [
  263. "ray_release/buildkite/aws_instance_types.csv",
  264. "ray_release/schema.json",
  265. ] + glob(["ray_release/configs/*.yaml"]),
  266. imports = ["."],
  267. visibility = ["//visibility:public"],
  268. deps = [
  269. bk_require("anyscale"),
  270. bk_require("aws-requests-auth"),
  271. bk_require("bazel-runfiles"),
  272. bk_require("aioboto3"),
  273. bk_require("boto3"),
  274. bk_require("botocore"),
  275. bk_require("click"),
  276. bk_require("google-cloud-storage"),
  277. bk_require("jinja2"),
  278. bk_require("pybuildkite"),
  279. bk_require("pygithub"),
  280. bk_require("requests"),
  281. bk_require("retry"),
  282. ],
  283. )
  284. py_library(
  285. name = "test_utils",
  286. srcs = ["ray_release/tests/utils.py"],
  287. imports = ["."],
  288. visibility = ["//visibility:private"],
  289. )
  290. py_test(
  291. name = "test_alerts",
  292. size = "small",
  293. srcs = ["ray_release/tests/test_alerts.py"],
  294. exec_compatible_with = ["//:hermetic_python"],
  295. tags = [
  296. "release_unit",
  297. "team:ci",
  298. ],
  299. deps = [
  300. ":ray_release",
  301. bk_require("pytest"),
  302. ],
  303. )
  304. py_test(
  305. name = "test_anyscale_job_manager",
  306. size = "small",
  307. srcs = ["ray_release/tests/test_anyscale_job_manager.py"],
  308. exec_compatible_with = ["//:hermetic_python"],
  309. tags = [
  310. "release_unit",
  311. "team:ci",
  312. ],
  313. deps = [
  314. ":ray_release",
  315. bk_require("pytest"),
  316. ],
  317. )
  318. py_test(
  319. name = "test_anyscale_job_wrapper",
  320. size = "small",
  321. srcs = ["ray_release/tests/test_anyscale_job_wrapper.py"],
  322. exec_compatible_with = ["//:hermetic_python"],
  323. tags = [
  324. "release_unit",
  325. "team:ci",
  326. ],
  327. deps = [
  328. ":ray_release",
  329. bk_require("pytest"),
  330. ],
  331. )
  332. py_test(
  333. name = "test_bisect",
  334. size = "small",
  335. srcs = ["ray_release/tests/test_bisect.py"],
  336. data = [
  337. "cluster_tests/cpt_autoscaling_1-3_aws.yaml",
  338. "ray_release/tests/test_collection_data.yaml",
  339. ],
  340. exec_compatible_with = ["//:hermetic_python"],
  341. tags = [
  342. "release_unit",
  343. "team:ci",
  344. ],
  345. deps = [
  346. ":ray_release",
  347. bk_require("pytest"),
  348. ],
  349. )
  350. py_test(
  351. name = "test_buildkite",
  352. size = "small",
  353. srcs = ["ray_release/tests/test_buildkite.py"],
  354. exec_compatible_with = ["//:hermetic_python"],
  355. tags = [
  356. "release_unit",
  357. "team:ci",
  358. ],
  359. deps = [
  360. ":ray_release",
  361. bk_require("pyyaml"),
  362. bk_require("pytest"),
  363. ],
  364. )
  365. py_test(
  366. name = "test_byod_build",
  367. size = "small",
  368. srcs = ["ray_release/tests/test_byod_build.py"],
  369. data = [
  370. "ray_release/configs/oss_config.yaml",
  371. ],
  372. exec_compatible_with = ["//:hermetic_python"],
  373. tags = [
  374. "release_unit",
  375. "team:ci",
  376. ],
  377. deps = [
  378. ":ray_release",
  379. bk_require("pytest"),
  380. ],
  381. )
  382. py_test(
  383. name = "test_cluster_manager",
  384. size = "small",
  385. srcs = ["ray_release/tests/test_cluster_manager.py"],
  386. exec_compatible_with = ["//:hermetic_python"],
  387. tags = [
  388. "release_unit",
  389. "team:ci",
  390. ],
  391. deps = [
  392. ":ray_release",
  393. ":test_utils",
  394. bk_require("freezegun"),
  395. bk_require("pytest"),
  396. ],
  397. )
  398. py_test(
  399. name = "test_config",
  400. size = "small",
  401. srcs = ["ray_release/tests/test_config.py"],
  402. data = glob(
  403. ["**/*.yaml"],
  404. exclude = ["ray_release/**/*.yaml"],
  405. ) + [
  406. "ray_release/tests/test_collection_data.yaml",
  407. "//python/ray/autoscaler/aws:test_configs",
  408. "//python/ray/autoscaler/gcp:test_configs",
  409. ],
  410. exec_compatible_with = ["//:hermetic_python"],
  411. tags = [
  412. "release_unit",
  413. "team:ci",
  414. ],
  415. deps = [
  416. ":ray_release",
  417. bk_require("pytest"),
  418. ],
  419. )
  420. py_test(
  421. name = "test_env",
  422. size = "small",
  423. srcs = ["ray_release/tests/test_env.py"],
  424. exec_compatible_with = ["//:hermetic_python"],
  425. tags = [
  426. "release_unit",
  427. "team:ci",
  428. ],
  429. deps = [
  430. ":ray_release",
  431. bk_require("pytest"),
  432. ],
  433. )
  434. py_test(
  435. name = "test_global_config",
  436. size = "small",
  437. srcs = ["ray_release/tests/test_global_config.py"],
  438. exec_compatible_with = ["//:hermetic_python"],
  439. tags = [
  440. "release_unit",
  441. "team:ci",
  442. ],
  443. deps = [
  444. ":ray_release",
  445. ":test_utils",
  446. bk_require("pytest"),
  447. ],
  448. )
  449. py_test(
  450. name = "test_glue",
  451. size = "small",
  452. srcs = ["ray_release/tests/test_glue.py"],
  453. exec_compatible_with = ["//:hermetic_python"],
  454. tags = [
  455. "release_unit",
  456. "team:ci",
  457. ],
  458. deps = [
  459. ":ray_release",
  460. ":test_utils",
  461. bk_require("pytest"),
  462. ],
  463. )
  464. py_test(
  465. name = "test_log_aggregator",
  466. size = "small",
  467. srcs = ["ray_release/tests/test_log_aggregator.py"],
  468. exec_compatible_with = ["//:hermetic_python"],
  469. tags = [
  470. "release_unit",
  471. "team:ci",
  472. ],
  473. deps = [
  474. ":ray_release",
  475. bk_require("pytest"),
  476. ],
  477. )
  478. py_test(
  479. name = "test_result",
  480. size = "small",
  481. srcs = ["ray_release/tests/test_result.py"],
  482. exec_compatible_with = ["//:hermetic_python"],
  483. tags = [
  484. "release_unit",
  485. "team:ci",
  486. ],
  487. deps = [
  488. ":ray_release",
  489. bk_require("pytest"),
  490. ],
  491. )
  492. py_test(
  493. name = "test_run_script",
  494. size = "small",
  495. srcs = ["ray_release/tests/test_run_script.py"],
  496. data = [
  497. "ray_release/tests/_test_catch_args.py",
  498. "ray_release/tests/_test_run_release_test_sh.py",
  499. "run_release_test.sh",
  500. ],
  501. exec_compatible_with = ["//:hermetic_python"],
  502. tags = [
  503. "release_unit",
  504. "team:ci",
  505. ],
  506. deps = [
  507. ":ray_release",
  508. bk_require("pytest"),
  509. ],
  510. )
  511. py_test(
  512. name = "test_state_machine",
  513. size = "small",
  514. srcs = ["ray_release/tests/test_state_machine.py"],
  515. exec_compatible_with = ["//:hermetic_python"],
  516. tags = [
  517. "release_unit",
  518. "team:ci",
  519. ],
  520. deps = [
  521. ":ray_release",
  522. bk_require("pytest"),
  523. ],
  524. )
  525. py_test(
  526. name = "test_test",
  527. size = "small",
  528. srcs = ["ray_release/tests/test_test.py"],
  529. data = [
  530. "ray_release/configs/oss_config.yaml",
  531. ],
  532. exec_compatible_with = ["//:hermetic_python"],
  533. tags = [
  534. "release_unit",
  535. "team:ci",
  536. ],
  537. deps = [
  538. ":ray_release",
  539. bk_require("pytest"),
  540. ],
  541. )
  542. py_test(
  543. name = "test_step",
  544. size = "small",
  545. srcs = ["ray_release/tests/test_step.py"],
  546. data = [
  547. "ray_release/configs/oss_config.yaml",
  548. ],
  549. exec_compatible_with = ["//:hermetic_python"],
  550. tags = [
  551. "release_unit",
  552. "team:ci",
  553. ],
  554. deps = [
  555. ":ray_release",
  556. bk_require("pytest"),
  557. ],
  558. )
  559. py_test(
  560. name = "test_wheels",
  561. size = "small",
  562. srcs = ["ray_release/tests/test_wheels.py"],
  563. data = [
  564. "//:python_sources",
  565. ],
  566. exec_compatible_with = ["//:hermetic_python"],
  567. tags = [
  568. "release_unit",
  569. "team:ci",
  570. ],
  571. deps = [
  572. ":ray_release",
  573. bk_require("freezegun"),
  574. bk_require("pytest"),
  575. ],
  576. )