This is an automated email from the ASF dual-hosted git repository.

dhemery pushed a commit to branch GEODE-6918-log-when-server-is-online
in repository https://gitbox.apache.org/repos/asf/geode.git

commit 2a8b3c7c200df4e7f86fc014c87282dae9d2801e
Author: Dale Emery <[email protected]>
AuthorDate: Mon Jul 8 14:41:59 2019 -0700

    Log when server with no async tasks is done
---
 .../launchers/ServerStartupNotificationTest.java   | 72 ++++++++++++++++++++++
 .../apache/geode/distributed/ServerLauncher.java   |  5 ++
 2 files changed, 77 insertions(+)

diff --git 
a/geode-assembly/src/acceptanceTest/java/org/apache/geode/launchers/ServerStartupNotificationTest.java
 
b/geode-assembly/src/acceptanceTest/java/org/apache/geode/launchers/ServerStartupNotificationTest.java
new file mode 100644
index 0000000..32f8ccd
--- /dev/null
+++ 
b/geode-assembly/src/acceptanceTest/java/org/apache/geode/launchers/ServerStartupNotificationTest.java
@@ -0,0 +1,72 @@
+package org.apache.geode.launchers;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.regex.Pattern;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.junit.rules.TestName;
+
+import org.apache.geode.test.awaitility.GeodeAwaitility;
+import org.apache.geode.test.junit.rules.gfsh.GfshRule;
+
+public class ServerStartupNotificationTest {
+  @Rule
+  public GfshRule gfshRule = new GfshRule();
+
+  @Rule
+  public TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+  @Rule
+  public TestName testName = new TestName();
+  private File serverFolder;
+  private String serverName;
+
+  /**
+   * Test ideas
+   * - redundancy recovery
+   * - persistent value recovery
+   * - ServerLauncher.start() finished
+   * - Log statement that indicates server is online
+   * - Meter that reflects server online state
+   */
+
+  @Before
+  public void setup() {
+    serverFolder = temporaryFolder.getRoot();
+    serverName = testName.getMethodName();
+  }
+
+  @After
+  public void stopServer() {
+    String stopServerCommand = "stop server --dir=" + 
serverFolder.getAbsolutePath();
+    gfshRule.execute(stopServerCommand);
+  }
+
+  @Test
+  public void startupWithNoAsyncTasks() {
+    String startServerCommand = String.join(" ",
+        "start server",
+        "--name=" + serverName,
+        "--dir=" + serverFolder.getAbsolutePath(),
+        "--disable-default-server");
+
+    gfshRule.execute(startServerCommand);
+
+    Pattern logLinePattern = Pattern.compile("^\\[info .*].*Server is 
online.*");
+    Path logFile = serverFolder.toPath().resolve(serverName + ".log");
+    GeodeAwaitility.await()
+        .untilAsserted(() ->
+            assertThat(Files.lines(logFile))
+                .as("Log file " + logFile + " includes line matching " + 
logLinePattern)
+                .anyMatch(logLinePattern.asPredicate())
+        );
+  }
+}
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java 
b/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java
index 63c5a65..0df9b60 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/ServerLauncher.java
@@ -55,6 +55,8 @@ import joptsimple.OptionException;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.apache.logging.log4j.Logger;
+import 
org.apache.logging.log4j.core.jackson.Log4jStackTraceElementDeserializer;
 
 import org.apache.geode.SystemFailure;
 import org.apache.geode.annotations.Immutable;
@@ -76,6 +78,7 @@ import org.apache.geode.internal.cache.InternalCache;
 import org.apache.geode.internal.cache.PartitionedRegion;
 import org.apache.geode.internal.cache.tier.sockets.CacheServerHelper;
 import org.apache.geode.internal.lang.ObjectUtils;
+import org.apache.geode.internal.logging.LogService;
 import org.apache.geode.internal.logging.LoggingThread;
 import org.apache.geode.internal.net.SocketCreator;
 import org.apache.geode.internal.process.ConnectionFailedException;
@@ -180,6 +183,7 @@ public class ServerLauncher extends 
AbstractLauncher<String> {
   private static final ServerLauncherCacheProvider DEFAULT_CACHE_PROVIDER =
       new DefaultServerLauncherCacheProvider();
 
+  private static final Logger logger = LogService.getLogger();
   private volatile boolean debug;
 
   private final ControlNotificationHandler controlHandler;
@@ -808,6 +812,7 @@ public class ServerLauncher extends 
AbstractLauncher<String> {
 
           cache.setIsServer(true);
           startCacheServer(cache);
+          logger.info("Server is online");
           assignBuckets(cache);
           rebalance(cache);
         } finally {

Reply via email to