Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a7ad7e2c9f
|
||
|
|
376a66d2fb | ||
|
|
a10a31b695
|
||
|
|
3ea2debd6b | ||
|
|
21f22bb926
|
No files matched your search
@@ -25,7 +25,7 @@ section E (summary in [docs/DESIGN.md](docs/DESIGN.md)).
|
||||
<dependency>
|
||||
<groupId>com.kingsrook.qbits</groupId>
|
||||
<artifactId>qbit-cluster</artifactId>
|
||||
<version>0.1.0-RC.1</version>
|
||||
<version>0.1.0-RC.1</version><!-- first release; see GitHub releases for the latest -->
|
||||
</dependency>
|
||||
```
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
|
||||
<properties>
|
||||
<revision>0.1.0-RC.1</revision>
|
||||
<revision>0.1.0-SNAPSHOT</revision>
|
||||
<maven.compiler.source>21</maven.compiler.source>
|
||||
<maven.compiler.target>21</maven.compiler.target>
|
||||
<jacoco.version>0.8.15</jacoco.version>
|
||||
@@ -211,7 +211,7 @@
|
||||
<activeByDefault>true</activeByDefault>
|
||||
</activation>
|
||||
<properties>
|
||||
<qqq.snapshot.version>4.1.0-SNAPSHOT</qqq.snapshot.version>
|
||||
<qqq.snapshot.version>4.1.0-RC.14</qqq.snapshot.version>
|
||||
</properties>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
||||
@@ -67,8 +67,6 @@ public class ClusterNodesWidgetRenderer extends AbstractWidgetRenderer
|
||||
static final String NODE = "node";
|
||||
static final String STATUS = "status";
|
||||
static final String HEARTBEAT = "heartbeat";
|
||||
static final String WHERE = "where";
|
||||
static final String VERSION = "version";
|
||||
|
||||
|
||||
|
||||
@@ -96,7 +94,7 @@ public class ClusterNodesWidgetRenderer extends AbstractWidgetRenderer
|
||||
}
|
||||
|
||||
TableData table = new TableData(null, List.of(
|
||||
column("Role", ROLE), column("Node", NODE), column("Status", STATUS), column("Last heartbeat", HEARTBEAT), column("Where", WHERE), column("Version", VERSION)), rows)
|
||||
column("Role", ROLE), column("Node", NODE), column("Status", STATUS), column("Last heartbeat", HEARTBEAT)), rows)
|
||||
.withNoRowsFoundHTML("No nodes are running. A node appears here once it starts with the Cluster qbit.")
|
||||
.withRowsPerPage(50)
|
||||
.withHidePaginationDropdown(true);
|
||||
@@ -112,17 +110,29 @@ public class ClusterNodesWidgetRenderer extends AbstractWidgetRenderer
|
||||
{
|
||||
Map<String, Object> row = new LinkedHashMap<>();
|
||||
row.put(ROLE, roleLabel(role));
|
||||
row.put(NODE, node.getValueString(ClusterTables.NODE_ID));
|
||||
row.put(NODE, nodeText(node));
|
||||
row.put(STATUS, statusText(node));
|
||||
row.put(HEARTBEAT, age(node.getValueInstant(ClusterTables.HEARTBEAT_AT), now));
|
||||
row.put(WHERE, Stream.of(node.getValueString(ClusterTables.K8S_NODE_NAME), node.getValueString(ClusterTables.ZONE), node.getValueString(ClusterTables.DEPLOYMENT))
|
||||
.filter(StringUtils::hasContent).collect(Collectors.joining(", ")));
|
||||
row.put(VERSION, node.getValueString(ClusterTables.VERSION) == null ? "" : node.getValueString(ClusterTables.VERSION));
|
||||
return (row);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** The node id, with where it runs and its version folded in (four columns
|
||||
** keep the table readable at every width): "web-7f9 (k8s-2, website-backend, 0.1.110)".
|
||||
*******************************************************************************/
|
||||
static String nodeText(QRecord node)
|
||||
{
|
||||
String details = Stream.of(node.getValueString(ClusterTables.K8S_NODE_NAME), node.getValueString(ClusterTables.ZONE), node.getValueString(ClusterTables.DEPLOYMENT),
|
||||
node.getValueString(ClusterTables.VERSION))
|
||||
.filter(StringUtils::hasContent).collect(Collectors.joining(", "));
|
||||
String nodeId = node.getValueString(ClusterTables.NODE_ID);
|
||||
return (details.isEmpty() ? nodeId : nodeId + " (" + details + ")");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
** "Up", "Draining", "Up, drain requested", "Lost".
|
||||
*******************************************************************************/
|
||||
|
||||
@@ -89,7 +89,14 @@ class ClusterQBitProducerTest extends BaseClusterTest
|
||||
assertThat(QAlertTypeMetaData.of(qInstance, ClusterAlerts.NODE_LOST)).isNotNull();
|
||||
assertThat(HealthChecksMetaData.ofOrWithNew(qInstance).getChecks()).anyMatch(check -> ClusterHeartbeatHealthCheck.NAME.equals(check.getName()));
|
||||
assertThat(qInstance.getRuntimeServices()).extracting(reference -> reference.getName()).containsOnlyOnce(ClusterRuntimeService.class.getName());
|
||||
assertThat(ClusterQBitProducer.version()).isEqualTo("0.1.0-RC.1");
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// the version comes from the build (filtered qbit-cluster.properties) //
|
||||
////////////////////////////////////////////////////////////////////
|
||||
assertThat(ClusterQBitProducer.version()).matches("[0-9]+[.][0-9]+[.][0-9]+(-[A-Za-z0-9.]+)?");
|
||||
if(System.getProperty("qbit.artifactVersion") != null)
|
||||
{
|
||||
assertThat(ClusterQBitProducer.version()).isEqualTo(System.getProperty("qbit.artifactVersion"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -118,7 +118,7 @@ class ClusterSettingsWidgetHealthTest extends BaseClusterTest
|
||||
assertThat(rows.get(0).get("heartbeat")).isEqualTo("5 hours ago");
|
||||
assertThat(rows.get(2).get("status")).isEqualTo("Up, drain requested");
|
||||
assertThat(rows.get(3).get("heartbeat")).isEqualTo("3 minutes ago");
|
||||
assertThat(table.getColumns()).hasSize(6);
|
||||
assertThat(table.getColumns()).as("four columns: readable at every width").hasSize(4);
|
||||
assertThat(lost).isNotNull();
|
||||
|
||||
assertThat(ClusterNodesWidgetRenderer.class).isNotNull();
|
||||
|
||||
Reference in new issue
Block a user