Почему некоторые команды Linux не выполняются в Citrus, например PWD

Я подключаюсь к серверу Linux по протоколу SFTP, используя компонент цитрусовых FTP. следующая команда, представленная в документации, выполнялась нормально.

<send endpoint="ftpClient">
  <message>
    <payload>
      <ftp:command>
        <ftp:signal>MKD</ftp:signal>
        <ftp:arguments>test</ftp:arguments>
      </ftp:command>
    </payload>
  </message>
</send> 

но когда я предоставляю другую команду, например PWD, как показано ниже

<send endpoint="ftpClient">
      <message>
        <payload>
          <ftp:command>
            <ftp:signal>PWD</ftp:signal>
            <ftp:arguments></ftp:arguments>
          </ftp:command>
        </payload>
      </message>
    </send> 

Я получаю сообщение об ошибке. но когда я выполняю указанную выше команду с использованием протокола SSH, команда выполнялась нормально

<send endpoint="sftpClient">
  <message>
    <payload>
      <ftp:command>
        <ftp:signal>pwd</ftp:signal>
        <ftp:arguments></ftp:arguments>
      </ftp:command>
    </payload>
  </message>
</send>

Я не могу понять проблему, и другое дело, как выполнить две команды в последовательности, используя цитрусовый ftp-компонент, например, например: я хочу перейти по определенному пути и увидеть размер файлов на этом пути, для этого мы должны сначала используйте команду «CD», а затем у нас есть «ls -l», как я могу добиться этого с помощью цитрусовых. Вот трассировка стека ошибки

 TEST FAILED ssh_connection_Test <com.consol.citrus.samples.todolist> Nested exception is: 
com.consol.citrus.exceptions.CitrusRuntimeException: Failed to read ftp XML object from source
    at com.consol.citrus.ftp.message.FtpMarshaller.unmarshal(FtpMarshaller.java:120)
    at com.consol.citrus.ftp.message.FtpMessage.getCommand(FtpMessage.java:429)
    at com.consol.citrus.ftp.message.FtpMessage.getPayload(FtpMessage.java:384)
    at com.consol.citrus.ftp.client.FtpClient.send(FtpClient.java:108)
    at com.consol.citrus.actions.SendMessageAction.doExecute(SendMessageAction.java:125)
    at com.consol.citrus.actions.AbstractTestAction.execute(AbstractTestAction.java:42)
    at com.consol.citrus.TestCase.executeAction(TestCase.java:234)
    at com.consol.citrus.TestCase.doExecute(TestCase.java:153)
    at com.consol.citrus.actions.AbstractTestAction.execute(AbstractTestAction.java:42)
    at com.consol.citrus.Citrus.run(Citrus.java:403)
    at com.consol.citrus.testng.AbstractTestNGCitrusTest.invokeTestMethod(AbstractTestNGCitrusTest.java:124)
    at com.consol.citrus.testng.AbstractTestNGCitrusTest.run(AbstractTestNGCitrusTest.java:108)
    at com.consol.citrus.testng.AbstractTestNGCitrusTest.run(AbstractTestNGCitrusTest.java:70)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at org.testng.internal.MethodInvocationHelper.invokeHookable(MethodInvocationHelper.java:212)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:707)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
    at org.testng.TestRunner.privateRun(TestRunner.java:767)
    at org.testng.TestRunner.run(TestRunner.java:617)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
    at org.testng.SuiteRunner.run(SuiteRunner.java:240)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
    at org.testng.TestNG.run(TestNG.java:1057)
    at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
Caused by: org.springframework.oxm.UnmarshallingFailureException: JAXB unmarshalling exception; nested exception is javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 37; cvc-enumeration-valid: Value 'PWD' is not facet-valid with respect to enumeration '[OPEN, ABOR, ACCT, ALLO, APPE, CDUP, CWD, DELE, EPRT, EPSV, FEAT, HELP, LIST, MDTM, MFMT, MKD, MLSD, MLST, MODE, NLST, NOOP, PASS, PASV, PORT, PWD, QUIT, REIN, REST, RETR, RMD, RNFR, RNTO, SITE, SMNT, STAT, STOR, STOU, STRU, SYST, TYPE, USER]'. It must be a value from the enumeration.]
    at org.springframework.oxm.jaxb.Jaxb2Marshaller.convertJaxbException(Jaxb2Marshaller.java:909)
    at org.springframework.oxm.jaxb.Jaxb2Marshaller.unmarshal(Jaxb2Marshaller.java:782)
    at org.springframework.oxm.jaxb.Jaxb2Marshaller.unmarshal(Jaxb2Marshaller.java:751)
    at com.consol.citrus.ftp.message.FtpMarshaller.unmarshal(FtpMarshaller.java:95)
    ... 36 more

person kushma gonna    schedule 01.10.2018    source источник
comment
Вы говорите, что получаете какую-то ошибку при отправке сигнала PWD. какая ошибка? не могли бы вы предоставить дополнительную информацию об ошибке?   -  person Christoph Deppisch    schedule 05.10.2018
comment
@ChristophDeppisch добавил содержимое ошибки   -  person kushma gonna    schedule 05.10.2018


Ответы (1)


Информация об ошибке, которую вы предоставляете, не связана с сигналом PWD. Это не удается, потому что вы отправляете сигнал ls -ltr, который не поддерживается при использовании FTP-клиента.

Если вы хотите просмотреть файлы с FTP на сервере, вам нужно использовать сигнал LIST.

Пожалуйста, не путайте команды и сигналы SSH и FTP. Конечно, вы также можете открыть сеанс SSH и запустить команду списка файлов с помощью ls. Но тогда вам нужно использовать клиент Citrus SSH.

person Christoph Deppisch    schedule 05.10.2018
comment
даже для сигнала PWD я получаю ту же ошибку. добавлена ​​трассировка ошибки в вопросе. - person kushma gonna; 05.10.2018
comment
и одна вещь, как отправить две команды одновременно, например, хотите перейти к определенному пути и увидеть размер файлов на этом пути, для этого мы должны сначала использовать команду CD, а затем у нас есть СПИСОК, как я могу добиться этого с помощью цитрусовых . - person kushma gonna; 05.10.2018
comment
XML тестового примера загружается как целый файл, и поэтому ошибка возникает, как только вы получаете недопустимый сигнал в одном из ваших действий. - person Christoph Deppisch; 05.10.2018
comment
Сигнал LIST может содержать аргумент. Этот необязательный аргумент представляет собой путь к папке, который используется в качестве инструкции по смене каталога. В дополнение к этому есть сигнал CWD (изменение рабочего каталога), который можно использовать для перехода к папке на сервере. Сигнал LIST без каких-либо аргументов использует текущий рабочий каталог. - person Christoph Deppisch; 05.10.2018