Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Improvement] Run integration test in rootless and non privileged mode #6475

Closed
youngyjd opened this issue Feb 19, 2025 · 3 comments · Fixed by #6480
Closed

[Improvement] Run integration test in rootless and non privileged mode #6475

youngyjd opened this issue Feb 19, 2025 · 3 comments · Fixed by #6480
Assignees
Labels
0.9.0 Release v0.9.0 improvement Improvements on everything

Comments

@youngyjd
Copy link

What would you like to be improved?

It seems that Gravitino integration tests require Docker to run in privileged mode. Is any there option we can run it in rootless and non privileged mode?

> Task :authorizations:authorization-ranger:test FAILED
--
  |  
  | RangerPaimonE2EIT > initializationError FAILED
  | java.lang.RuntimeException: Failed to initialize ContainerSuite
  | at org.apache.gravitino.integration.test.container.ContainerSuite.initIfNecessary(ContainerSuite.java:103)
  | at org.apache.gravitino.integration.test.container.ContainerSuite.startRangerContainer(ContainerSuite.java:519)
  | at org.apache.gravitino.authorization.ranger.integration.test.RangerITEnv.init(RangerITEnv.java:94)
  | at org.apache.gravitino.authorization.ranger.integration.test.RangerPaimonE2EIT.startIntegrationTest(RangerPaimonE2EIT.java:68)
  |  
  | Caused by:
  | org.testcontainers.containers.ContainerLaunchException: Container startup failed for image testcontainers/ryuk:0.5.1
  | at app//org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:361)
  | at app//org.testcontainers.containers.GenericContainer.start(GenericContainer.java:334)
  | at app//org.testcontainers.utility.RyukResourceReaper.maybeStart(RyukResourceReaper.java:78)
  | at app//org.testcontainers.utility.RyukResourceReaper.init(RyukResourceReaper.java:42)
  | at app//org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:231)
  | at app//org.apache.gravitino.integration.test.container.ContainerSuite.initIfNecessary(ContainerSuite.java:94)
  | at app//org.apache.gravitino.integration.test.container.ContainerSuite.startRangerContainer(ContainerSuite.java:519)
  | at app//org.apache.gravitino.authorization.ranger.integration.test.RangerITEnv.init(RangerITEnv.java:94)
  | at app//org.apache.gravitino.authorization.ranger.integration.test.RangerAuthorizationHDFSPluginIT.setup(RangerAuthorizationHDFSPluginIT.java:51)
  | at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
  | at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  | at java.base@17.0.13/java.lang.reflect.Method.invoke(Method.java:569)
  | at app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
  | at app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
  | at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
  | at app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
  | at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptLifecycleMethod(TimeoutExtension.java:126)
  | at app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptBeforeAllMethod(TimeoutExtension.java:68)
  | at app//org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115)
  | at app//org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105)
  | at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
  | at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
  | at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
  | at app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
  | at app//org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104)
  | at app//org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98)
  | at app//org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllMethods$11(ClassBasedTestDescriptor.java:397)
  | at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  | at app//org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllMethods(ClassBasedTestDescriptor.java:395)
  | at app//org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:209)
  | at app//org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:80)
  | at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:148)
  | at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  | at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
  | at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
  | at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
  | at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  | at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
  | at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
  | at java.base@17.0.13/java.util.ArrayList.forEach(ArrayList.java:1511)
  | at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
  | at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:155)
  | at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  | at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:141)
  | at app//org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
  | at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:139)
  | at app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
  | at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:138)
  | at app//org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:95)
  | at app//org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
  | at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
  | at app//org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
  | at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:107)
  | at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88)
  | at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54)
  | at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67)
  | at app//org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52)
  | at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:114)
  | at app//org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:86)
  | at app//org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java:86)
  | at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:110)
  | at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:90)
  | at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:85)
  | at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:62)
  | at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | at java.base@17.0.13/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
  | at java.base@17.0.13/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  | at java.base@17.0.13/java.lang.reflect.Method.invoke(Method.java:569)
  | 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 jdk.proxy2/jdk.proxy2.$Proxy5.stop(Unknown Source)
  | at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:193)
  | at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
  | at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
  | at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
  | at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
  | at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113)
  | at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65)
  | at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
  | at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
  |  
  | Caused by:
  | org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
  | at app//org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)
  | at app//org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)
  | ... 82 more
  |  
  | Caused by:
  | org.testcontainers.containers.ContainerLaunchException: Could not create/start container
  | at app//org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:565)
  | at app//org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:356)
  | at app//org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)
  | ... 83 more
  |  
  | Caused by:
  | com.github.dockerjava.api.exception.UnauthorizedException: Status 401: {"message":"Privileged mode is not allowed"}
  | at app//org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:239)
  | at app//org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.post(DefaultInvocationBuilder.java:124)
  | at app//org.testcontainers.shaded.com.github.dockerjava.core.exec.CreateContainerCmdExec.execute(CreateContainerCmdExec.java:37)
  | at app//org.testcontainers.shaded.com.github.dockerjava.core.exec.CreateContainerCmdExec.execute(CreateContainerCmdExec.java:13)
  | at app//org.testcontainers.shaded.com.github.dockerjava.core.exec.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:21)
  | at app//org.testcontainers.shaded.com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:33)
  | at app//org.testcontainers.shaded.com.github.dockerjava.core.command.CreateContainerCmdImpl.exec(CreateContainerCmdImpl.java:608)
  | at app//org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:439)
  | ... 85 more
  |  
  | 7 tests completed, 7 failed

How should we improve?

No response

@youngyjd youngyjd added the improvement Improvements on everything label Feb 19, 2025
@jerqi
Copy link
Contributor

jerqi commented Feb 19, 2025

I will take a look at this issue.

@xunliu
Copy link
Member

xunliu commented Feb 19, 2025

hi @jerqi
I think maybe we can fix this problem in this way.

@jerqi
Copy link
Contributor

jerqi commented Feb 19, 2025

  • TESTCONTAINERS_RYUK_DISABLED

Let me try this environment variable TESTCONTAINERS_RYUK_DISABLED first.

jerqi added a commit to qqqttt123/gravitino that referenced this issue Feb 19, 2025
@jerryshao jerryshao added the 0.9.0 Release v0.9.0 label Feb 21, 2025
jerqi added a commit to qqqttt123/gravitino that referenced this issue Feb 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0.9.0 Release v0.9.0 improvement Improvements on everything
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants