Bläddra i källkod

refactor(datax): runner 改走 cli gen-json,不再依赖 bin shim

gen_argv 从 bin/datax-job-config-generator.py 改为 -m dw_base.datax.cli gen-json
单测断言相应更新

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
tianyu.chu 2 veckor sedan
förälder
incheckning
d7a06ad926
2 ändrade filer med 8 tillägg och 7 borttagningar
  1. 4 5
      dw_base/datax/runner.py
  2. 4 2
      tests/unit/datax/test_runner.py

+ 4 - 5
dw_base/datax/runner.py

@@ -6,9 +6,8 @@ DataX 单任务执行器(从 bin/datax-single-job-starter.sh 搬迁 Python 版
 1. 生成 json(调 bin/datax-job-config-generator.py,本机 subprocess / 远端 ssh)
 2. 执行 datax.py(同样本机 / 远端分发)
 
-注:本版继续透过老 shim bin/datax-job-config-generator.py 生成 json(批次 4 删老
-脚本时再改为直接 import JobConfigGenerator);worker 选择由 worker.select_worker 提供,
-本模块只接收最终 worker_host。
+生成 json 通过 `python3 -m dw_base.datax.cli gen-json` 调用(替代老 bin shim);
+worker 选择由 worker.select_worker 提供,本模块只接收最终 worker_host。
 """
 import os
 import shlex
@@ -54,8 +53,8 @@ def run_job(ini_path: str,
 
     gen_argv = [
         python3_path, '-u',
-        os.path.join(base_dir, 'bin', 'datax-job-config-generator.py'),
-        '-c', ini_path,
+        '-m', 'dw_base.datax.cli',
+        'gen-json', ini_path,
         '-start-date', start_date,
         '-stop-date', stop_date,
     ]

+ 4 - 2
tests/unit/datax/test_runner.py

@@ -24,7 +24,8 @@ def test_run_job_local_two_subprocess_calls(mock_run, tmp_path):
     assert mock_run.call_count == 2  # 生成 json + 执行 datax.py
     first_argv = mock_run.call_args_list[0][0][0]
     assert first_argv[0] == '/usr/bin/python3'
-    assert 'datax-job-config-generator.py' in first_argv[2]
+    assert 'dw_base.datax.cli' in first_argv
+    assert 'gen-json' in first_argv
 
 
 @patch('dw_base.datax.runner.subprocess.run')
@@ -42,7 +43,8 @@ def test_run_job_remote_uses_ssh(mock_run, tmp_path):
     assert first_argv[0] == 'ssh'
     assert first_argv[1] == 'cdhnode02'
     # remote_cmd 是单字符串参数
-    assert 'datax-job-config-generator.py' in first_argv[2]
+    assert 'dw_base.datax.cli' in first_argv[2]
+    assert 'gen-json' in first_argv[2]
 
 
 @patch('dw_base.datax.runner.subprocess.run')