невозможно запустить процесс в приложении Scala / Play - PullRequest
0 голосов
/ 15 мая 2019

У меня есть скрипт ccm.py, который запускает кластер Cassandra на локальной машине. Я могу запустить команду с помощью командной строки Windows. Но я получаю ошибку, если пытаюсь сделать это, используя Process класс в Scala.

Я хочу запустить его перед началом моих тестовых случаев. Поэтому я звоню Process в beforeAll.

override def beforeAll():Unit = {
    println("starting cassandra cluster locally")
    val ccmCommand = Process("ccm.py start").!
  }

Я получаю ошибку

An exception or error caused a run to abort: Cannot run program "ccm.py": CreateProcess error=193, %1 is not a valid Win32 application 
java.io.IOException: Cannot run program "ccm.py": CreateProcess error=193, %1 is not a valid Win32 application
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)

Я также пытался использовать команду cassandra -f (которая также работает из приглашения cmd), но я получил ошибку

An exception or error caused a run to abort: Cannot run program "cassandra": CreateProcess error=2, The system cannot find the file specified 
java.io.IOException: Cannot run program "cassandra": CreateProcess error=2, The system cannot find the file specified
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)

Как мне решить проблему?

Обновление Благодаря Алексу Отту я добился некоторого прогресса, но я думаю, что должен быть лучший и более надежный способ тестирования кода, а также сделать код более переносимым

Код, который пока работает,

override def beforeAll():Unit = {
    println("starting cassandra cluster locally")
      val ccmCommand = Process("python",Seq("C:\\Users\\manu\\Documents\\manu\\ccm-3.1.4.tar\\dist\\ccm-3.1.4\\ccm.py","start")).run //NOT GOOD. Using hardcoded path!!

    println(s"ccm returned ${ccmCommand}")
    Thread.sleep(30000) //the wait is too long and there is no guarantee that the cluster will be up properly
  }

Есть ли лучший (надежный w.r.t без жесткого кодирования пути) запуск кластера до выполнения тестов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...