Skip to content

fix: Throw an exception if the container has exited while checking for readiness #1451

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

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

0xced
Copy link
Contributor

@0xced 0xced commented May 20, 2025

What does this PR do?

This pull request ensures that if a container has exited, readiness check are aborted with the newly introduced ContainerException. The exception message includes both stdout and stderr of the container to help diagnosing the issue.

Why is it important?

As described in #1445, this change significantly improves the developer experience. Developers get immediate feedback when something goes wrong.

Related issues

Fixes #1445

How to test this PR

A simple way to test this PR is to run the Oracle21 tests on an Apple Silicon Mac. You'll get this error.

DotNet.Testcontainers.Configurations.ContainerException
The gvenzl/oracle-xe:21-slim-faststart container has exited.

=== stdout of sad_noyce (63dc2f99ee704a934636f47d2372d0283697ec6731af1f9ffad564e9e34a1f0a) ===
2025-05-20T08:32:31.693685128Z CONTAINER: starting up...
2025-05-20T08:32:31.769256852Z CONTAINER: first database startup, initializing...
2025-05-20T08:32:31.904095582Z CONTAINER: starting up Oracle Database...
2025-05-20T08:32:31.945699749Z 
2025-05-20T08:32:31.945714499Z LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 20-MAY-2025 08:32:31
2025-05-20T08:32:31.945716291Z 
2025-05-20T08:32:31.945717499Z Copyright (c) 1991, 2021, Oracle.  All rights reserved.
2025-05-20T08:32:31.945718624Z 
2025-05-20T08:32:31.959288638Z Starting /opt/oracle/product/21c/dbhomeXE/bin/tnslsnr: please wait...
2025-05-20T08:32:31.959295388Z 
2025-05-20T08:32:32.411257859Z TNSLSNR for Linux: Version 21.0.0.0.0 - Production
2025-05-20T08:32:32.411270818Z System parameter file is /opt/oracle/homes/OraDBHome21cXE/network/admin/listener.ora
2025-05-20T08:32:32.411272401Z Log messages written to /opt/oracle/diag/tnslsnr/63dc2f99ee70/listener/alert/log.xml
2025-05-20T08:32:32.411273526Z Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
2025-05-20T08:32:32.411274526Z Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
2025-05-20T08:32:32.411275526Z 
2025-05-20T08:32:32.411276401Z Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
2025-05-20T08:32:32.421983213Z STATUS of the LISTENER
2025-05-20T08:32:32.421995755Z ------------------------
2025-05-20T08:32:32.421997338Z Alias                     LISTENER
2025-05-20T08:32:32.421998546Z Version                   TNSLSNR for Linux: Version 21.0.0.0.0 - Production
2025-05-20T08:32:32.422025213Z Start Date                20-MAY-2025 08:32:32
2025-05-20T08:32:32.422028838Z Uptime                    0 days 0 hr. 0 min. 0 sec
2025-05-20T08:32:32.422030046Z Trace Level               off
2025-05-20T08:32:32.422031130Z Security                  ON: Local OS Authentication
2025-05-20T08:32:32.422032213Z SNMP                      OFF
2025-05-20T08:32:32.422033255Z Default Service           XE
2025-05-20T08:32:32.422034296Z Listener Parameter File   /opt/oracle/homes/OraDBHome21cXE/network/admin/listener.ora
2025-05-20T08:32:32.422035421Z Listener Log File         /opt/oracle/diag/tnslsnr/63dc2f99ee70/listener/alert/log.xml
2025-05-20T08:32:32.422187838Z Listening Endpoints Summary...
2025-05-20T08:32:32.422193421Z   (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_XE)))
2025-05-20T08:32:32.422195004Z   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
2025-05-20T08:32:32.422196213Z The listener supports no services
2025-05-20T08:32:32.422213212Z The command completed successfully
2025-05-20T08:32:38.970127990Z ORA-03113: end-of-file on communication channel

Another way is to update JanusGraphContainerTest with a bad configuration:

private readonly JanusGraphContainer _janusGraphContainer = new JanusGraphBuilder().WithEnvironment("janusgraph.storage.backend", "fail").Build();

This is a bit slow because the container tries to access the storage backend several times before giving up. Eventually the ContainerException is raised.

DotNet.Testcontainers.Configurations.ContainerException
The janusgraph/janusgraph:1.0.0 container has exited.

=== stderr of zen_boyd (219b4c540223bcca4302123353b7a6deb79b29f4291e9771809d48a4c22db5f7) ===
2025-05-20T08:44:10.796906006Z SLF4J: Class path contains multiple SLF4J bindings.
2025-05-20T08:44:10.796979214Z SLF4J: Found binding in [jar:file:/opt/janusgraph/lib/log4j-slf4j-impl-2.20.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
2025-05-20T08:44:10.796982631Z SLF4J: Found binding in [jar:file:/opt/janusgraph/lib/logback-classic-1.2.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
2025-05-20T08:44:10.796984089Z SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
2025-05-20T08:44:10.833135474Z SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

=== stdout of zen_boyd (219b4c540223bcca4302123353b7a6deb79b29f4291e9771809d48a4c22db5f7) ===
2025-05-20T08:43:16.921148209Z waiting for storage...
2025-05-20T08:43:28.859094884Z waiting for storage...
2025-05-20T08:43:40.728261827Z waiting for storage...
2025-05-20T08:43:52.573210101Z waiting for storage...
2025-05-20T08:44:04.523083150Z waiting for storage...
2025-05-20T08:44:09.756047117Z /etc/opt/janusgraph/janusgraph-server.yaml will be used to start JanusGraph Server in foreground
2025-05-20T08:44:11.065499419Z 08:44:11 INFO  org.janusgraph.graphdb.server.JanusGraphServer.printHeader -                                                                       
2025-05-20T08:44:11.065521253Z    mmm                                mmm                       #     
2025-05-20T08:44:11.065525794Z      #   mmm   m mm   m   m   mmm   m"   "  m mm   mmm   mmmm   # mm  
2025-05-20T08:44:11.065528252Z      #  "   #  #"  #  #   #  #   "  #   mm  #"  " "   #  #" "#  #"  # 
2025-05-20T08:44:11.065530086Z      #  m"""#  #   #  #   #   """m  #    #  #     m"""#  #   #  #   # 
2025-05-20T08:44:11.065531461Z  "mmm"  "mm"#  #   #  "mm"#  "mmm"   "mmm"  #     "mm"#  ##m#"  #   # 
2025-05-20T08:44:11.065532711Z                                                          #            
2025-05-20T08:44:11.065533877Z                                                          "            
2025-05-20T08:44:11.065534961Z 
2025-05-20T08:44:11.120586766Z 08:44:11 INFO  com.jcabi.log.Logger.infoForced - 106 attributes loaded from 339 stream(s) in 49ms, 106 saved, 5377 ignored: ["Agent-Class", "Ant-Version", "Archiver-Version", "Automatic-Module-Name", "Bnd-LastModified", "Build-Date", "Build-Date-UTC", "Build-Id", "Build-Java-Version", "Build-Jdk", "Build-Jdk-Spec", "Build-Number", "Build-Tag", "Build-Timezone", "Build-Version", "Built-By", "Built-JDK", "Built-OS", "Built-Status", "Bundle-ActivationPolicy", "Bundle-Activator", "Bundle-Category", "Bundle-ClassPath", "Bundle-Classpath", "Bundle-ContactAddress", "Bundle-Copyright", "Bundle-Description", "Bundle-Developers", "Bundle-DocURL", "Bundle-License", "Bundle-ManifestVersion", "Bundle-Name", "Bundle-NativeCode", "Bundle-RequiredExecutionEnvironment", "Bundle-SCM", "Bundle-SymbolicName", "Bundle-Vendor", "Bundle-Version", "Can-Redefine-Classes", "Can-Retransform-Classes", "Can-Set-Native-Method-Prefix", "Carl-Is-Awesome", "Change", "Copyright", "Created-By", "DSTAMP", "Dependencies", "DynamicImport-Package", "Eclipse-BuddyPolicy", "Eclipse-ExtensibleAPI", "Embed-Dependency", "Embed-Transitive", "Export-Package", "Extension-Name", "Extension-name", "Fragment-Host", "Gradle-Version", "Gremlin-Plugin-Dependencies", "Ignore-Package", "Implementation-Build", "Implementation-Build-Date", "Implementation-Build-Id", "Implementation-Title", "Implementation-URL", "Implementation-Vendor", "Implementation-Vendor-Id", "Implementation-Version", "Import-Package", "Include-Resource", "JCabi-Build", "JCabi-Date", "JCabi-Version", "Main-Class", "Manifest-Version", "Module-Origin", "Module-Requires", "Multi-Release", "Originally-Created-By", "Package", "Premain-Class", "Private-Package", "Provide-Capability", "Require-Bundle", "Require-Capability", "Sealed", "Specification-Title", "Specification-Vendor", "Specification-Version", "TODAY", "TSTAMP", "Target-Label", "Tool", "X-Compile-Elasticsearch-Snapshot", "X-Compile-Elasticsearch-Version", "X-Compile-Lucene-Version", "X-Compile-Source-JDK", "X-Compile-Target-JDK", "artifactId", "groupId", "hash", "janusgraphVersion", "service", "tinkerpop-version", "tinkerpopVersion", "url", "version"]
2025-05-20T08:44:11.123917634Z 08:44:11 INFO  org.janusgraph.graphdb.server.JanusGraphServer.printHeader - JanusGraph Version: 1.0.0
2025-05-20T08:44:11.124006509Z 08:44:11 INFO  org.janusgraph.graphdb.server.JanusGraphServer.printHeader - TinkerPop Version: 3.7.0
2025-05-20T08:44:11.124820382Z 08:44:11 INFO  org.janusgraph.graphdb.server.JanusGraphServer.start - Configuring JanusGraph Server from /etc/opt/janusgraph/janusgraph-server.yaml
2025-05-20T08:44:11.179736812Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager.addConsoleReporter - Configured Metrics ConsoleReporter configured with report interval=180000ms
2025-05-20T08:44:11.181416809Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager.addCsvReporter - Configured Metrics CsvReporter configured with report interval=180000ms to fileName=/tmp/gremlin-server-metrics.csv
2025-05-20T08:44:11.182765098Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager.addJmxReporter - Configured Metrics JmxReporter configured with domain= and agentId=
2025-05-20T08:44:11.184571761Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.util.MetricManager.addSlf4jReporter - Configured Metrics Slf4jReporter configured with interval=180000ms and loggerName=org.apache.tinkerpop.gremlin.server.Settings$Slf4jReporterMetrics
2025-05-20T08:44:11.260499107Z 08:44:11 INFO  org.apache.commons.beanutils.FluentPropertyBeanIntrospector.introspect - Error when creating PropertyDescriptor for public final void org.apache.commons.configuration2.AbstractConfiguration.setProperty(java.lang.String,java.lang.Object)! Ignoring this property.
2025-05-20T08:44:11.393766462Z 08:44:11 ERROR org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init> - Could not invoke constructor on class org.janusgraph.graphdb.management.JanusGraphManager (defined by the 'graphManager' setting) with one argument of class Settings
2025-05-20T08:44:11.401148447Z 08:44:11 ERROR org.janusgraph.graphdb.server.JanusGraphServer.lambda$main$0 - JanusGraph Server was unable to start and will now begin shutdown
2025-05-20T08:44:11.401164738Z java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
2025-05-20T08:44:11.401166572Z 	at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:97) ~[gremlin-server-3.7.0.jar:3.7.0]
2025-05-20T08:44:11.401168238Z 	at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:127) ~[gremlin-server-3.7.0.jar:3.7.0]
2025-05-20T08:44:11.401182697Z 	at org.apache.tinkerpop.gremlin.server.GremlinServer.<init>(GremlinServer.java:90) ~[gremlin-server-3.7.0.jar:3.7.0]
2025-05-20T08:44:11.401191238Z 	at org.janusgraph.graphdb.server.JanusGraphServer.start(JanusGraphServer.java:85) ~[janusgraph-server-1.0.0.jar:?]
2025-05-20T08:44:11.401192530Z 	at org.janusgraph.graphdb.server.JanusGraphServer.main(JanusGraphServer.java:53) [janusgraph-server-1.0.0.jar:?]
2025-05-20T08:44:11.401193738Z Caused by: java.lang.reflect.InvocationTargetException
2025-05-20T08:44:11.401194822Z 	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
2025-05-20T08:44:11.401196030Z 	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401197113Z 	at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401198238Z 	at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401199322Z 	at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:86) ~[gremlin-server-3.7.0.jar:3.7.0]
2025-05-20T08:44:11.401200530Z 	... 4 more
2025-05-20T08:44:11.401201572Z Caused by: java.lang.IllegalArgumentException: Could not find implementation class: fail
2025-05-20T08:44:11.401202697Z 	at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:75) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401203863Z 	at org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:548) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401205030Z 	at org.janusgraph.diskstorage.Backend.getStorageManager(Backend.java:509) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401206155Z 	at org.janusgraph.graphdb.configuration.builder.GraphDatabaseConfigurationBuilder.build(GraphDatabaseConfigurationBuilder.java:64) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401208072Z 	at org.janusgraph.core.JanusGraphFactory.lambda$open$0(JanusGraphFactory.java:165) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401209238Z 	at org.janusgraph.graphdb.management.JanusGraphManager.openGraph(JanusGraphManager.java:239) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401210446Z 	at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:165) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401211613Z 	at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:115) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401212696Z 	at org.janusgraph.graphdb.management.JanusGraphManager.lambda$new$0(JanusGraphManager.java:73) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401213863Z 	at java.util.LinkedHashMap.forEach(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401214905Z 	at org.janusgraph.graphdb.management.JanusGraphManager.<init>(JanusGraphManager.java:72) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401216071Z 	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
2025-05-20T08:44:11.401218030Z 	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401219905Z 	at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401221071Z 	at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401222155Z 	at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:86) ~[gremlin-server-3.7.0.jar:3.7.0]
2025-05-20T08:44:11.401223321Z 	... 4 more
2025-05-20T08:44:11.401224280Z Caused by: java.lang.ClassNotFoundException: fail
2025-05-20T08:44:11.401225363Z 	at jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401226446Z 	at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401227488Z 	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401228571Z 	at java.lang.Class.forName0(Native Method) ~[?:?]
2025-05-20T08:44:11.401229696Z 	at java.lang.Class.forName(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401230696Z 	at org.janusgraph.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:71) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401231821Z 	at org.janusgraph.diskstorage.Backend.getImplementationClass(Backend.java:548) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401232946Z 	at org.janusgraph.diskstorage.Backend.getStorageManager(Backend.java:509) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401234155Z 	at org.janusgraph.graphdb.configuration.builder.GraphDatabaseConfigurationBuilder.build(GraphDatabaseConfigurationBuilder.java:64) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401235530Z 	at org.janusgraph.core.JanusGraphFactory.lambda$open$0(JanusGraphFactory.java:165) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401236821Z 	at org.janusgraph.graphdb.management.JanusGraphManager.openGraph(JanusGraphManager.java:239) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401237946Z 	at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:165) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401239071Z 	at org.janusgraph.core.JanusGraphFactory.open(JanusGraphFactory.java:115) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401240196Z 	at org.janusgraph.graphdb.management.JanusGraphManager.lambda$new$0(JanusGraphManager.java:73) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401243071Z 	at java.util.LinkedHashMap.forEach(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401244280Z 	at org.janusgraph.graphdb.management.JanusGraphManager.<init>(JanusGraphManager.java:72) ~[janusgraph-core-1.0.0.jar:?]
2025-05-20T08:44:11.401245446Z 	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:?]
2025-05-20T08:44:11.401246530Z 	at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401247738Z 	at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401249488Z 	at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:?]
2025-05-20T08:44:11.401250946Z 	at org.apache.tinkerpop.gremlin.server.util.ServerGremlinExecutor.<init>(ServerGremlinExecutor.java:86) ~[gremlin-server-3.7.0.jar:3.7.0]
2025-05-20T08:44:11.401252155Z 	... 4 more
2025-05-20T08:44:11.420682074Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.op.OpLoader.lambda$static$0 - Adding the standard OpProcessor.
2025-05-20T08:44:11.456537334Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.op.OpLoader.lambda$static$0 - Adding the session OpProcessor.
2025-05-20T08:44:11.457328916Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.op.OpLoader.lambda$static$0 - Adding the traversal OpProcessor.
2025-05-20T08:44:11.457469999Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.GremlinServer.lambda$stop$2 - Shutting down OpProcessor[]
2025-05-20T08:44:11.457532749Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.GremlinServer.lambda$stop$2 - Shutting down OpProcessor[session]
2025-05-20T08:44:11.458040290Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.GremlinServer.lambda$stop$2 - Shutting down OpProcessor[traversal]
2025-05-20T08:44:11.458048248Z 08:44:11 INFO  org.apache.tinkerpop.gremlin.server.GremlinServer.stop - Shutting down thread pools.
2025-05-20T08:44:13.547865967Z 5/20/25, 8:44:13 AM ============================================================
2025-05-20T08:44:13.547947300Z 
2025-05-20T08:44:13.548353341Z -- Gauges ----------------------------------------------------------------------
2025-05-20T08:44:13.548550632Z org.apache.tinkerpop.gremlin.server.GremlinServer.sessions
2025-05-20T08:44:13.548935548Z              value = 0
2025-05-20T08:44:13.548967589Z 
2025-05-20T08:44:13.550939210Z -- Timers ----------------------------------------------------------------------
2025-05-20T08:44:13.550966127Z org.apache.tinkerpop.gremlin.server.GremlinServer.op.eval
2025-05-20T08:44:13.556035700Z              count = 0
2025-05-20T08:44:13.556241658Z          mean rate = 0.00 calls/second
2025-05-20T08:44:13.556387074Z      1-minute rate = 0.00 calls/second
2025-05-20T08:44:13.556503949Z      5-minute rate = 0.00 calls/second
2025-05-20T08:44:13.556549324Z     15-minute rate = 0.00 calls/second
2025-05-20T08:44:13.556657949Z                min = 0.00 milliseconds
2025-05-20T08:44:13.556751532Z                max = 0.00 milliseconds
2025-05-20T08:44:13.556795198Z               mean = 0.00 milliseconds
2025-05-20T08:44:13.556841698Z             stddev = 0.00 milliseconds
2025-05-20T08:44:13.556928948Z             median = 0.00 milliseconds
2025-05-20T08:44:13.557007948Z               75% <= 0.00 milliseconds
2025-05-20T08:44:13.557078865Z               95% <= 0.00 milliseconds
2025-05-20T08:44:13.557225114Z               98% <= 0.00 milliseconds
2025-05-20T08:44:13.557332364Z               99% <= 0.00 milliseconds
2025-05-20T08:44:13.557439572Z             99.9% <= 0.00 milliseconds
2025-05-20T08:44:13.557449322Z org.apache.tinkerpop.gremlin.server.GremlinServer.op.traversal
2025-05-20T08:44:13.557569364Z              count = 0
2025-05-20T08:44:13.557677238Z          mean rate = 0.00 calls/second
2025-05-20T08:44:13.557817321Z      1-minute rate = 0.00 calls/second
2025-05-20T08:44:13.557875738Z      5-minute rate = 0.00 calls/second
2025-05-20T08:44:13.557886905Z     15-minute rate = 0.00 calls/second
2025-05-20T08:44:13.557991321Z                min = 0.00 milliseconds
2025-05-20T08:44:13.558010571Z                max = 0.00 milliseconds
2025-05-20T08:44:13.558090529Z               mean = 0.00 milliseconds
2025-05-20T08:44:13.558652153Z             stddev = 0.00 milliseconds
2025-05-20T08:44:13.558668361Z             median = 0.00 milliseconds
2025-05-20T08:44:13.558673070Z               75% <= 0.00 milliseconds
2025-05-20T08:44:13.558677070Z               95% <= 0.00 milliseconds
2025-05-20T08:44:13.558680695Z               98% <= 0.00 milliseconds
2025-05-20T08:44:13.558684361Z               99% <= 0.00 milliseconds
2025-05-20T08:44:13.558687695Z             99.9% <= 0.00 milliseconds
2025-05-20T08:44:13.558690611Z 
2025-05-20T08:44:13.558693320Z 
2025-05-20T08:44:13.562733686Z 08:44:13 INFO  com.codahale.metrics.Slf4jReporter$InfoLoggerProxy.log - type=GAUGE, name=org.apache.tinkerpop.gremlin.server.GremlinServer.sessions, value=0
2025-05-20T08:44:13.567898509Z 08:44:13 INFO  com.codahale.metrics.Slf4jReporter$InfoLoggerProxy.log - type=TIMER, name=org.apache.tinkerpop.gremlin.server.GremlinServer.op.eval, count=0, min=0.0, max=0.0, mean=0.0, stddev=0.0, p50=0.0, p75=0.0, p95=0.0, p98=0.0, p99=0.0, p999=0.0, m1_rate=0.0, m5_rate=0.0, m15_rate=0.0, mean_rate=0.0, rate_unit=events/second, duration_unit=milliseconds
2025-05-20T08:44:13.567914134Z 08:44:13 INFO  com.codahale.metrics.Slf4jReporter$InfoLoggerProxy.log - type=TIMER, name=org.apache.tinkerpop.gremlin.server.GremlinServer.op.traversal, count=0, min=0.0, max=0.0, mean=0.0, stddev=0.0, p50=0.0, p75=0.0, p95=0.0, p98=0.0, p99=0.0, p999=0.0, m1_rate=0.0, m5_rate=0.0, m15_rate=0.0, mean_rate=0.0, rate_unit=events/second, duration_unit=milliseconds
2025-05-20T08:44:13.567918676Z 08:44:13 INFO  org.apache.tinkerpop.gremlin.server.GremlinServer.lambda$stop$9 - Gremlin Server - shutdown complete

Copy link

netlify bot commented May 20, 2025

Deploy Preview for testcontainers-dotnet ready!

Name Link
🔨 Latest commit bfe1617
🔍 Latest deploy log https://app.netlify.com/projects/testcontainers-dotnet/deploys/682c4ee7c2d27a00082ba20b
😎 Deploy Preview https://deploy-preview-1451--testcontainers-dotnet.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@0xced
Copy link
Contributor Author

0xced commented May 20, 2025

Many tests are failing, this is more complicated than I first thought. 😟

@HofmeisterAn
Copy link
Collaborator

Many tests are failing, this is more complicated than I first thought. 😟

I haven't looked closely at the implementation yet, but my initial idea was to create a base class for the wait strategy that checks whether the container has exited.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Enhancement]: Wait strategies should detect when a container exits early and throw an exception
2 participants