程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了无法在 GoCD 上实例化测试容器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决无法在 GoCD 上实例化测试容器?

开发过程中遇到无法在 GoCD 上实例化测试容器的问题如何解决?下面主要结合日常开发的经验,给出你关于无法在 GoCD 上实例化测试容器的解决方法建议,希望对你解决无法在 GoCD 上实例化测试容器有所启发或帮助;

我正在尝试使用 TESTContainers 和 spring-boot 运行 AWS DynamoDB 以进行测试。它使用 Docker 引擎 19.03.13 及更高版本,Java 15 在我的 MAC 上成功运行和执行测试。不幸的是,它在尝试在 GoCD 上运行时失败。详情如下。

摇篮:

testImplementation 'org.TESTContainers:TESTContainers:1.15.3'
testImplementation 'org.TESTContainers:junit-jupiter:1.15.3

'

Java/Spring:

@TESTContainers
@TesTinstance(PER_CLASS)
@SpringBoottest()
public class DynamodbTESTContainer {
    protected AmazonDynamoDB amazonDynamoDB;
    protected ApplicationInfoRepo applicationInfoRepo;

    @Container
    static final GenericContainer dynamoDb = new GenericContainer("amazon/dynamodb-local:1.16.0")
            .withCommand("-jar DynamoDBLocal.jar -inMemory -sharedDb")
            .withExposedPorts(8000);

    @BeforeAll
    public voID init() {
        var endpointUrl = String.format("http://localhost:%d",dynamoDb.getFirstMappedPort());

amazonDynamoDB = AmazonDynamoDBClIEntBuilder.standard()              .withEndpointConfiguration(new AwsClIEntBuilder.EndpointConfiguration(endpointUrl,"eu-West-2"))
                .build();

错误原因

com.github.dockerjava.API.exception.DockerClIEntexception: Unsupported protocol scheR_583_11845@e found: 'localhost:2376

整个异常堆栈:

ApplicationInfoRepoTest > initializationError Failed
    java.util.serviceConfigurationError: org.TESTContainers.dockerclIEnt.DockerClIEntProvIDerStrategy: ProvIDer org.TESTContainers.dockerclIEnt.EnvironmentAndSystemPropertyClIEntProvIDerStrategy Could not be instantiated
        at java.base/java.util.serviceLoader.fail(serviceLoader.java:584)
        at java.base/java.util.serviceLoader$ProvIDerImpl.newInstance(serviceLoader.java:806)
        at java.base/java.util.serviceLoader$ProvIDerImpl.get(serviceLoader.java:724)
        at java.base/java.util.serviceLoader$3.next(serviceLoader.java:1396)
        at java.base/java.lang.Iterable.forEach(Iterable.java:74)
        at org.TESTContainers.DockerClIEntFactory.getorInitializeStrategy(DockerClIEntFactory.java:134)
        at org.TESTContainers.DockerClIEntFactory.clIEnt(DockerClIEntFactory.java:178)
        at org.TESTContainers.LazyDockerClIEnt.getDockerClIEnt(LazyDockerClIEnt.java:14)
        at org.TESTContainers.LazyDockerClIEnt.authConfig(LazyDockerClIEnt.java:12)
        at org.TESTContainers.containers.GenericContainer.start(GenericContainer.java:310)
        at org.TESTContainers.junit.jupiter.TESTContainersExtension$StoreAdapter.start(TESTContainersExtension.java:242)
        at org.TESTContainers.junit.jupiter.TESTContainersExtension$StoreAdapter.access$200(TESTContainersExtension.java:229)
        at org.TESTContainers.junit.jupiter.TESTContainersExtension.lambda$null$1(TESTContainersExtension.java:59)
        at org.junit.jupiter.ENGIne.execution.ExtensionValuesstore.lambda$getorComputeIfAbsent$4(ExtensionValuesstore.java:86)
        at org.junit.jupiter.ENGIne.execution.ExtensionValuesstore$Memoizingsupplier.computeValue(ExtensionValuesstore.java:223)
        at org.junit.jupiter.ENGIne.execution.ExtensionValuesstore$Memoizingsupplier.get(ExtensionValuesstore.java:211)
        at org.junit.jupiter.ENGIne.execution.ExtensionValuesstore$StoredValue.evaluate(ExtensionValuesstore.java:191)
        at org.junit.jupiter.ENGIne.execution.ExtensionValuesstore$StoredValue.access$100(ExtensionValuesstore.java:171)
        at org.junit.jupiter.ENGIne.execution.ExtensionValuesstore.getorComputeIfAbsent(ExtensionValuesstore.java:89)
        at org.junit.jupiter.ENGIne.execution.namespaceAwareStore.getorComputeIfAbsent(namespaceAwareStore.java:53)
        at org.TESTContainers.junit.jupiter.TESTContainersExtension.lambda$beforeAll$2(TESTContainersExtension.java:59)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
        at org.TESTContainers.junit.jupiter.TESTContainersExtension.beforeAll(TESTContainersExtension.java:59)
        at org.junit.jupiter.ENGIne.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallBACks$8(ClassBasedTestDescriptor.java:368)
        at org.junit.platform.ENGIne.support.hIErarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.jupiter.ENGIne.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallBACks(ClassBasedTestDescriptor.java:368)
        at org.junit.jupiter.ENGIne.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:192)
        at org.junit.jupiter.ENGIne.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:78)
        at org.junit.platform.ENGIne.support.hIErarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:136)
        at org.junit.platform.ENGIne.support.hIErarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.platform.ENGIne.support.hIErarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
        at org.junit.platform.ENGIne.support.hIErarchical.Node.around(Node.java:137)
        at org.junit.platform.ENGIne.support.hIErarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
        at org.junit.platform.ENGIne.support.hIErarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.platform.ENGIne.support.hIErarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
        at org.junit.platform.ENGIne.support.hIErarchical.NodeTestTask.execute(NodeTestTask.java:84)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
        at org.junit.platform.ENGIne.support.hIErarchical.SameThreadHIErarchicalTestExecutorservice.invokeAll(SameThreadHIErarchicalTestExecutorservice.java:38)
        at org.junit.platform.ENGIne.support.hIErarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
        at org.junit.platform.ENGIne.support.hIErarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.platform.ENGIne.support.hIErarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129)
        at org.junit.platform.ENGIne.support.hIErarchical.Node.around(Node.java:137)
        at org.junit.platform.ENGIne.support.hIErarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
        at org.junit.platform.ENGIne.support.hIErarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.platform.ENGIne.support.hIErarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
        at org.junit.platform.ENGIne.support.hIErarchical.NodeTestTask.execute(NodeTestTask.java:84)
        at org.junit.platform.ENGIne.support.hIErarchical.SameThreadHIErarchicalTestExecutorservice.submit(SameThreadHIErarchicalTestExecutorservice.java:32)
        at org.junit.platform.ENGIne.support.hIErarchical.HIErarchicalTestExecutor.execute(HIErarchicalTestExecutor.java:57)
        at org.junit.platform.ENGIne.support.hIErarchical.HIErarchicalTestENGIne.execute(HIErarchicalTestENGIne.java:51)
        at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
        at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
        at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
        at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
        at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)
        at org.gradle.API.internal.tasks.tesTing.junitplatform.JUnitPlatformTESTClassprocessor$CollectAllTESTClassesExecutor.processAllTESTClasses(JUnitPlatformTESTClassprocessor.java:99)
        at org.gradle.API.internal.tasks.tesTing.junitplatform.JUnitPlatformTESTClassprocessor$CollectAllTESTClassesExecutor.access$000(JUnitPlatformTESTClassprocessor.java:79)
        at org.gradle.API.internal.tasks.tesTing.junitplatform.JUnitPlatformTESTClassprocessor.stop(JUnitPlatformTESTClassprocessor.java:75)
        at org.gradle.API.internal.tasks.tesTing.SuiteTESTClassprocessor.stop(SuiteTESTClassprocessor.java:61)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
        at java.base/jdk.internal.reflect.DelegaTingMethodAccessorImpl.invoke(DelegaTingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.gradle.internal.dispatch.Reflectiondispatch.dispatch(Reflectiondispatch.java:36)
        at org.gradle.internal.dispatch.Reflectiondispatch.dispatch(Reflectiondispatch.java:24)
        at org.gradle.internal.dispatch.ContextClassLoaderdispatch.dispatch(ContextClassLoaderdispatch.java:33)
        at org.gradle.internal.dispatch.ProxydispatchAdapter$dispatchingInvocationHandler.invoke(ProxydispatchAdapter.java:94)
        at com.sun.proxy.$Proxy5.stop(UnkNown sourcE)
        at org.gradle.API.internal.tasks.tesTing.worker.TestWorker.stop(TestWorker.java:133)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
        at java.base/jdk.internal.reflect.DelegaTingMethodAccessorImpl.invoke(DelegaTingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:564)
        at org.gradle.internal.dispatch.Reflectiondispatch.dispatch(Reflectiondispatch.java:36)
        at org.gradle.internal.dispatch.Reflectiondispatch.dispatch(Reflectiondispatch.java:24)
        at org.gradle.internal.remote.internal.hub.messageHubBACkedobjectConnection$dispatchWrapper.dispatch(messageHubBACkedobjectConnection.java:182)
        at org.gradle.internal.remote.internal.hub.messageHubBACkedobjectConnection$dispatchWrapper.dispatch(messageHubBACkedobjectConnection.java:164)
        at org.gradle.internal.remote.internal.hub.messageHub$Handler.run(messageHub.java:414)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecord@R_330_4895@.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
        at java.base/java.lang.Thread.run(Thread.java:832)

        Caused by:
        com.github.dockerjava.API.exception.DockerClIEntexception: Unsupported protocol scheR_583_11845@e found: 'localhost:2376
            at org.TESTContainers.shaded.com.github.dockerjava.core.DefaultDockerClIEntConfig.checkDockerHostscheR_583_11845@e(DefaultDockerClIEntConfig.java:107)
            at org.TESTContainers.shaded.com.github.dockerjava.core.DefaultDockerClIEntConfig.<init>(DefaultDockerClIEntConfig.java:90)
            at org.TESTContainers.shaded.com.github.dockerjava.core.DefaultDockerClIEntConfig$Builder.build(DefaultDockerClIEntConfig.java:438)
            at org.TESTContainers.dockerclIEnt.EnvironmentAndSystemPropertyClIEntProvIDerStrategy.<init>(EnvironmentAndSystemPropertyClIEntProvIDerStrategy.java:18)
            at java.base/jdk.internal.reflect.NativeConstructOraccessorImpl.newInstance0(Native Method)
            at java.base/jdk.internal.reflect.NativeConstructOraccessorImpl.newInstance(NativeConstructOraccessorImpl.java:64)
            at java.base/jdk.internal.reflect.DelegaTingConstructOraccessorImpl.newInstance(DelegaTingConstructOraccessorImpl.java:45)
            at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
            at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
            at java.base/java.util.serviceLoader$ProvIDerImpl.newInstance(serviceLoader.java:782)
            ... 81 more

解决方法

GoCD 环境配置不正确,因为 DOCKER_HOST 设置为“localhost:2376”。更改 DOCKER_HOST=tcp://localhost:2376 后,它正常工作。

大佬总结

以上是大佬教程为你收集整理的无法在 GoCD 上实例化测试容器全部内容,希望文章能够帮你解决无法在 GoCD 上实例化测试容器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。