murblanc commented on a change in pull request #2133:
URL: https://github.com/apache/lucene-solr/pull/2133#discussion_r546779168



##########
File path: 
solr/core/src/test/org/apache/solr/cluster/placement/impl/PlacementPluginIntegrationTest.java
##########
@@ -220,6 +231,66 @@ public void testDynamicReconfiguration() throws Exception {
     assertNull("no factory should be present", factory);
   }
 
+  @Test
+  public void testAttributeFetcherImpl() throws Exception {
+    CollectionAdminResponse rsp = 
CollectionAdminRequest.createCollection(COLLECTION, "conf", 2, 2)
+        .process(cluster.getSolrClient());
+    assertTrue(rsp.isSuccess());
+    cluster.waitForActiveCollection(COLLECTION, 2, 4);
+    Cluster cluster = new 
SimpleClusterAbstractionsImpl.ClusterImpl(cloudManager);
+    SolrCollection collection = cluster.getCollection(COLLECTION);
+    AttributeFetcher attributeFetcher = new AttributeFetcherImpl(cloudManager);
+    String someMetricName = "solr.jvm:system.properties:user.name";
+    String sysprop = "user.name";
+    String sysenv = "PWD";
+    attributeFetcher
+        .fetchFrom(cluster.getLiveNodes())
+        .requestNodeHeapUsage()
+        .requestNodeMetric(someMetricName)
+        .requestNodeSystemProperty(sysprop)
+        .requestNodeEnvironmentVariable(sysenv)
+        .requestNodeTotalDisk()
+        .requestNodeFreeDisk()
+        .requestNodeCoresCount()
+        .requestCollectionMetrics(collection, 
Set.of(ReplicaMetric.QUERY_RATE_1MIN, ReplicaMetric.UPDATE_RATE_1MIN));
+    AttributeValues attributeValues = attributeFetcher.fetchAttributes();
+    String userName = System.getProperty("user.name");
+    String pwd = System.getenv("PWD");
+    // node metrics
+    for (Node node : cluster.getLiveNodes()) {
+      assertTrue("heap usage", attributeValues.getHeapUsage(node).isPresent());
+      assertTrue("total disk", attributeValues.getTotalDisk(node).isPresent());
+      assertTrue("free disk", attributeValues.getFreeDisk(node).isPresent());
+      assertTrue("cores count", 
attributeValues.getCoresCount(node).isPresent());
+      Optional<Object> userNameOpt = attributeValues.getNodeMetric(node, 
someMetricName);
+      assertTrue("user.name", userNameOpt.isPresent());
+      assertEquals("userName", userName, userNameOpt.get());
+      Optional<String> syspropOpt = attributeValues.getSystemProperty(node, 
sysprop);
+      assertTrue("sysprop", syspropOpt.isPresent());
+      assertEquals("user.name sysprop", userName, syspropOpt.get());
+      Optional<String> sysenvOpt = 
attributeValues.getEnvironmentVariable(node, sysenv);
+      assertTrue("sysenv", sysenvOpt.isPresent());
+      assertEquals("PWD sysenv", pwd, sysenvOpt.get());
+    }
+    assertTrue(attributeValues.getCollectionMetrics(COLLECTION).isPresent());
+    CollectionMetrics collectionMetrics = 
attributeValues.getCollectionMetrics(COLLECTION).get();
+    collection.shards().forEach(shard -> {
+      Optional<ShardMetrics> shardMetricsOpt = 
collectionMetrics.getShardMetrics(shard.getShardName());
+      assertTrue("shard metrics", shardMetricsOpt.isPresent());
+      shard.replicas().forEach(replica -> {
+        Optional<ReplicaMetrics> replicaMetricsOpt = 
shardMetricsOpt.get().getReplicaMetrics(replica.getReplicaName());
+        assertTrue("replica metrics", replicaMetricsOpt.isPresent());
+        ReplicaMetrics replicaMetrics = replicaMetricsOpt.get();
+        // this should always be present
+        assertNotNull("size", replicaMetrics.getReplicaSizeGB());
+        assertTrue("should be greater than 0 but was " + 
replicaMetrics.getReplicaSizeGB(),
+            replicaMetrics.getReplicaSizeGB() > 0);
+        assertNotNull("queryRate", 
replicaMetrics.getReplicaMetric(ReplicaMetric.QUERY_RATE_1MIN.getName()));

Review comment:
       This will possibly happen earlier in the test code if index size is 
converted into a normal metric though.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to