You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ja...@apache.org on 2019/04/05 10:15:44 UTC
[lucene-solr] 02/02: SOLR-12120: Harden AuditLoggerIntegrationTest,
timing issues
This is an automated email from the ASF dual-hosted git repository.
janhoy pushed a commit to branch branch_8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
commit 4d95746b01cbed6868a65bd4cd713126cb43275e
Author: Jan Høydahl <ja...@apache.org>
AuthorDate: Fri Apr 5 10:19:42 2019 +0200
SOLR-12120: Harden AuditLoggerIntegrationTest, timing issues
(cherry picked from commit aadc94a6e3887955ed08439d32e29fe31b622a45)
---
.../solr/security/AuditLoggerIntegrationTest.java | 26 +++++++++++++++++-----
.../solr/security/CallbackAuditLoggerPlugin.java | 2 +-
2 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/solr/core/src/test/org/apache/solr/security/AuditLoggerIntegrationTest.java b/solr/core/src/test/org/apache/solr/security/AuditLoggerIntegrationTest.java
index 8f9e295..6ab0a71 100644
--- a/solr/core/src/test/org/apache/solr/security/AuditLoggerIntegrationTest.java
+++ b/solr/core/src/test/org/apache/solr/security/AuditLoggerIntegrationTest.java
@@ -95,8 +95,8 @@ public class AuditLoggerIntegrationTest extends SolrCloudAuthTestCase {
public void testSynchronous() throws Exception {
setupCluster(false, 0, false, null);
runAdminCommands();
+ waitForAuditEventCallbacks(3);
assertAuditMetricsMinimums(testHarness.get().cluster, CallbackAuditLoggerPlugin.class.getSimpleName(), 3, 0);
- testHarness.get().shutdownCluster();
assertThreeAdminEvents();
}
@@ -104,24 +104,34 @@ public class AuditLoggerIntegrationTest extends SolrCloudAuthTestCase {
public void testAsync() throws Exception {
setupCluster(true, 0, false, null);
runAdminCommands();
+ waitForAuditEventCallbacks(3);
assertAuditMetricsMinimums(testHarness.get().cluster, CallbackAuditLoggerPlugin.class.getSimpleName(), 3, 0);
- testHarness.get().shutdownCluster();
assertThreeAdminEvents();
}
@Test
- public void testAsyncWithQueue() throws Exception {
+ public void testQueuedTimeMetric() throws Exception {
setupCluster(true, 100, false, null);
runAdminCommands();
+ waitForAuditEventCallbacks(3);
assertAuditMetricsMinimums(testHarness.get().cluster, CallbackAuditLoggerPlugin.class.getSimpleName(), 3, 0);
ArrayList<MetricRegistry> registries = getMetricsReigstries(testHarness.get().cluster);
Timer timer = ((Timer) registries.get(0).getMetrics().get("SECURITY./auditlogging.CallbackAuditLoggerPlugin.queuedTime"));
double meanTimeOnQueue = timer.getSnapshot().getMean() / 1000000; // Convert to ms
- assertTrue(meanTimeOnQueue > 50);
+ assertTrue("Expecting mean time on queue >10ms, got " + meanTimeOnQueue, meanTimeOnQueue > 10);
+ }
+
+ @Test
+ public void testAsyncQueueDrain() throws Exception {
+ setupCluster(true, 100, false, null);
+ runAdminCommands();
+ assertTrue("Expecting <2 callbacks in buffer, was " + testHarness.get().receiver.getBuffer().size(),
+ testHarness.get().receiver.getBuffer().size() < 2); // Events still on queue
+ // We shutdown cluster while events are still in queue
testHarness.get().shutdownCluster();
assertThreeAdminEvents();
}
-
+
@Test
public void testMuteAdminListCollections() throws Exception {
setupCluster(false, 0, false, "[ \"type:UNKNOWN\", [ \"path:/admin\", \"param:action=LIST\" ] ]");
@@ -208,11 +218,15 @@ public class AuditLoggerIntegrationTest extends SolrCloudAuthTestCase {
}
private void waitForAuditEventCallbacks(int number) throws InterruptedException {
+ waitForAuditEventCallbacks(number, 5);
+ }
+
+ private void waitForAuditEventCallbacks(int number, int timeoutSeconds) throws InterruptedException {
CallbackReceiver receiver = testHarness.get().receiver;
int count = 0;
while(receiver.buffer.size() < number) {
Thread.sleep(100);
- if (++count >= 30) fail("Failed waiting for " + number + " callbacks");
+ if (++count >= timeoutSeconds*10) fail("Failed waiting for " + number + " callbacks after " + timeoutSeconds + " seconds");
}
}
diff --git a/solr/core/src/test/org/apache/solr/security/CallbackAuditLoggerPlugin.java b/solr/core/src/test/org/apache/solr/security/CallbackAuditLoggerPlugin.java
index c0a829b..22cfbe2 100644
--- a/solr/core/src/test/org/apache/solr/security/CallbackAuditLoggerPlugin.java
+++ b/solr/core/src/test/org/apache/solr/security/CallbackAuditLoggerPlugin.java
@@ -70,7 +70,7 @@ public class CallbackAuditLoggerPlugin extends AuditLoggerPlugin {
@Override
public void close() throws IOException {
- if (socket != null) socket.close();
super.close();
+ if (socket != null) socket.close();
}
}