Я работал над проектом, который отправляет данные поставщику, выполняя банку изнутри нашего кода Kotlin (см. Загрузку файла JAR в тест на модуль Kotlin для получения более подробной информации). Я реализовал то, что, по моему мнению, было решением, используя java.lang.processbuilder. Все мои тесты проходят, когда я запускаю их из своей местной сборки. Когда я пытаюсь запустить те же тесты как часть процесса развертывания в нашем конвейере Gitlab CI, однако, я получаю странные результаты.
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
Picked up _JAVA_OPTIONS: -Xms256m -Xmx1024m
[INFO] Running edu.bucknell.eventmanagement.int295.Test
ERROR 2025-05-13 15:10:21,841 [main] edu.bucknell.eventmanagement.int295.executeJavaJar: Picked up _JAVA_OPTIONS: -Xms256m -Xmx1024m
Exception in thread "main" java.lang.Exception: Too many args
at Main.main(Main.java:10)
ERROR 2025-05-13 15:10:22,431 [main] edu.bucknell.eventmanagement.int295.executeJavaJar: Picked up _JAVA_OPTIONS: -Xms256m -Xmx1024m
[ERROR] Tests run: 4, Failures: 1, Errors: 0, Skipped: 1, Time elapsed: 2.779 s
error.left()
})
}
< /code>
и фактический тест: < /p>
@Test
fun `test execute java jar with tmp`()
{
mockContext(300).value().let { context ->
testInt295DependencyProvider(context).let { dp ->
javaClass.classLoader.getResourceAsStream("HelloTest.jar").use { stream ->
assertNotNull(stream)
val inputFile = createTempFile(prefix = "hello", suffix = ".jar").toFile()
Files.copy(stream, inputFile.toPath(), StandardCopyOption.REPLACE_EXISTING)
executeJavaJar(dp,".",
inputFile.absolutePath, listOf("abc")).fold({
fail("test execute java jar failed with error: ${it.message}")
}, {
output->
println(output)
assertNotNull(output)
assertThat(output).isNotEmpty
})
}
}
}
}
< /code>
Я подозреваю, что это как -то связано с перенаправлением трубопровода в процессе. Однако я не могу найти никакой информации о том, как правильно настроить процесс разработчика процесса для маршрутизации вывода в среде CI. Может ли кто -нибудь пролить свет на то, где я ошибаюсь с этим? После добавления дополнительных журналов я определил, что выполняемый класс Java на самом деле не производит никаких ошибок. Тем не менее, что -то в развертывании CI -это написание текста «_java_options =" -xms256m -xmx1024m " Когда я смотрю на содержимое этого потока для своего теста, в результате я получаю ложный положитель. Если я запускаю этот сценарий Bash: < /p>
#!/bin/sh
# shared gitlab runner host based script
export _JAVA_OPTIONS="-Xms256m -Xmx1024m"
mvn test -Dmule.testingMode=true -Dpackage=edu.bucknell -DfailIfNoTests=false -Dsurefire.skipAfterFailureCount=1
< /code>
Это воспроизводит проблемы, которые я вижу в среде CI. Я могу обойти эту проблему путем вручную убрать эту переменную из среды процесса построения < /p>
val pb = ProcessBuilder(cmdArgs).directory(File(workingDir))
.redirectError(ProcessBuilder.Redirect.PIPE)
pb.environment().remove("_JAVA_OPTIONS")
pb.start()
Я работал над проектом, который отправляет данные поставщику, выполняя банку изнутри нашего кода Kotlin (см. Загрузку файла JAR в тест на модуль Kotlin для получения более подробной информации). Я реализовал то, что, по моему мнению, было решением, используя java.lang.processbuilder. Все мои тесты проходят, когда я запускаю их из своей местной сборки. Когда я пытаюсь запустить те же тесты как часть процесса развертывания в нашем конвейере Gitlab CI, однако, я получаю странные результаты.[code][INFO] ------------------------------------------------------- [INFO] T E S T S [INFO] ------------------------------------------------------- Picked up _JAVA_OPTIONS: -Xms256m -Xmx1024m [INFO] Running edu.bucknell.eventmanagement.int295.Test ERROR 2025-05-13 15:10:21,841 [main] edu.bucknell.eventmanagement.int295.executeJavaJar: Picked up _JAVA_OPTIONS: -Xms256m -Xmx1024m Exception in thread "main" java.lang.Exception: Too many args at Main.main(Main.java:10) ERROR 2025-05-13 15:10:22,431 [main] edu.bucknell.eventmanagement.int295.executeJavaJar: Picked up _JAVA_OPTIONS: -Xms256m -Xmx1024m [ERROR] Tests run: 4, Failures: 1, Errors: 0, Skipped: 1, Time elapsed: 2.779 s error.left() }) } < /code> и фактический тест: < /p> @Test fun `test execute java jar with tmp`() { mockContext(300).value().let { context -> testInt295DependencyProvider(context).let { dp -> javaClass.classLoader.getResourceAsStream("HelloTest.jar").use { stream -> assertNotNull(stream) val inputFile = createTempFile(prefix = "hello", suffix = ".jar").toFile() Files.copy(stream, inputFile.toPath(), StandardCopyOption.REPLACE_EXISTING)
executeJavaJar(dp,".", inputFile.absolutePath, listOf("abc")).fold({ fail("test execute java jar failed with error: ${it.message}") }, { output-> println(output) assertNotNull(output) assertThat(output).isNotEmpty }) } } } } < /code> Я подозреваю, что это как -то связано с перенаправлением трубопровода в процессе. Однако я не могу найти никакой информации о том, как правильно настроить процесс разработчика процесса для маршрутизации вывода в среде CI. Может ли кто -нибудь пролить свет на то, где я ошибаюсь с этим? После добавления дополнительных журналов я определил, что выполняемый класс Java на самом деле не производит никаких ошибок. Тем не менее, что -то в развертывании CI -это написание текста «_java_options =" -xms256m -xmx1024m " Когда я смотрю на содержимое этого потока для своего теста, в результате я получаю ложный положитель. Если я запускаю этот сценарий Bash: < /p> #!/bin/sh # shared gitlab runner host based script export _JAVA_OPTIONS="-Xms256m -Xmx1024m"
mvn test -Dmule.testingMode=true -Dpackage=edu.bucknell -DfailIfNoTests=false -Dsurefire.skipAfterFailureCount=1 < /code> Это воспроизводит проблемы, которые я вижу в среде CI. Я могу обойти эту проблему путем вручную убрать эту переменную из среды процесса построения < /p> val pb = ProcessBuilder(cmdArgs).directory(File(workingDir)) .redirectError(ProcessBuilder.Redirect.PIPE) pb.environment().remove("_JAVA_OPTIONS") pb.start() [/code] Но я не ближе к пониманию основной причины.
Я внедряю механизм очередей за лазурными изделиями, чтобы одновременно запустить несколько пиблейнов. У меня есть два функциональных приложения,
functiona_app1, function_app2. В каждом из этих функциональных приложений у меня есть две трубопроводы,...
Существует ли способ увеличить скорость A процесс в .NET бросает событие outputDatarevied ? Он создает большой буфер (я считаю, что 1024 символов), который сбрасывается оптом, что делает приложение не таким плавным потоком, как мне, как и было бы....
Контекст
У меня есть модульный тест, написанный с использованием платформы Spock Testing для тестирования моего приложения Spring Boot.
Я объявил следующие тестовые зависимости:
Контекст
У меня есть модульный тест, написанный с использованием платформы Spock Testing для тестирования моего приложения Spring Boot.
Я объявил следующие тестовые зависимости:
Я потратил на это около часа. У меня есть файл app.config, который находится в проекте модульного тестирования. Когда я его компилирую/собираю, он попадает в папку bin вместе со всем остальным. Однако, когда я запускаю указанные модульные тесты,...