You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ja...@apache.org on 2015/05/04 18:44:15 UTC
[2/4] cassandra git commit: Ninja fix CASSANDRA-9029
Ninja fix CASSANDRA-9029
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a6549440
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a6549440
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a6549440
Branch: refs/heads/cassandra-2.1
Commit: a6549440f30997273f0b1a073b1493684715c43b
Parents: 5bffaf8
Author: Ariel Weisberg <ar...@weisberg.ws>
Authored: Mon Apr 6 23:00:00 2015 +0200
Committer: T Jake Luciani <ja...@apache.org>
Committed: Mon May 4 12:34:08 2015 -0400
----------------------------------------------------------------------
.../apache/cassandra/utils/NoSpamLogger.java | 35 +++---
.../cassandra/utils/NoSpamLoggerTest.java | 115 +++++++++++++++----
2 files changed, 109 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a6549440/src/java/org/apache/cassandra/utils/NoSpamLogger.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/NoSpamLogger.java b/src/java/org/apache/cassandra/utils/NoSpamLogger.java
index 9f5d5ce..3cc8b5e 100644
--- a/src/java/org/apache/cassandra/utils/NoSpamLogger.java
+++ b/src/java/org/apache/cassandra/utils/NoSpamLogger.java
@@ -103,32 +103,32 @@ public class NoSpamLogger
public void info(long nowNanos, Object... objects)
{
- log(Level.INFO, nowNanos, objects);
+ NoSpamLogStatement.this.log(Level.INFO, nowNanos, objects);
}
public void info(Object... objects)
{
- info(CLOCK.nanoTime(), objects);
+ NoSpamLogStatement.this.info(CLOCK.nanoTime(), objects);
}
public void warn(long nowNanos, Object... objects)
{
- log(Level.WARN, nowNanos, objects);
+ NoSpamLogStatement.this.log(Level.WARN, nowNanos, objects);
}
- public void warn(String s, Object... objects)
+ public void warn(Object... objects)
{
- warn(CLOCK.nanoTime(), s, objects);
+ NoSpamLogStatement.this.warn(CLOCK.nanoTime(), objects);
}
public void error(long nowNanos, Object... objects)
{
- log(Level.ERROR, nowNanos, objects);
+ NoSpamLogStatement.this.log(Level.ERROR, nowNanos, objects);
}
public void error(Object... objects)
{
- error(CLOCK.nanoTime(), objects);
+ NoSpamLogStatement.this.error(CLOCK.nanoTime(), objects);
}
}
@@ -165,7 +165,8 @@ public class NoSpamLogger
statement.log(level, nowNanos, objects);
}
- public static NoSpamLogStatement getStatement(Logger logger, String message, long minInterval, TimeUnit unit) {
+ public static NoSpamLogStatement getStatement(Logger logger, String message, long minInterval, TimeUnit unit)
+ {
NoSpamLogger wrapped = getLogger(logger, minInterval, unit);
return wrapped.getStatement(message);
}
@@ -182,45 +183,45 @@ public class NoSpamLogger
public void info(long nowNanos, String s, Object... objects)
{
- log( Level.INFO, s, nowNanos, objects);
+ NoSpamLogger.this.log( Level.INFO, s, nowNanos, objects);
}
public void info(String s, Object... objects)
{
- info(CLOCK.nanoTime(), s, objects);
+ NoSpamLogger.this.info(CLOCK.nanoTime(), s, objects);
}
public void warn(long nowNanos, String s, Object... objects)
{
- log( Level.WARN, s, nowNanos, objects);
+ NoSpamLogger.this.log( Level.WARN, s, nowNanos, objects);
}
public void warn(String s, Object... objects)
{
- warn(CLOCK.nanoTime(), s, objects);
+ NoSpamLogger.this.warn(CLOCK.nanoTime(), s, objects);
}
public void error(long nowNanos, String s, Object... objects)
{
- log( Level.ERROR, s, nowNanos, objects);
+ NoSpamLogger.this.log( Level.ERROR, s, nowNanos, objects);
}
public void error(String s, Object... objects)
{
- error(CLOCK.nanoTime(), s, objects);
+ NoSpamLogger.this.error(CLOCK.nanoTime(), s, objects);
}
public void log(Level l, String s, long nowNanos, Object... objects) {
- getStatement(s, minIntervalNanos).log(l, nowNanos, objects);
+ NoSpamLogger.this.getStatement(s, minIntervalNanos).log(l, nowNanos, objects);
}
public NoSpamLogStatement getStatement(String s)
{
- return getStatement(s, minIntervalNanos);
+ return NoSpamLogger.this.getStatement(s, minIntervalNanos);
}
public NoSpamLogStatement getStatement(String s, long minInterval, TimeUnit unit) {
- return getStatement(s, unit.toNanos(minInterval));
+ return NoSpamLogger.this.getStatement(s, unit.toNanos(minInterval));
}
public NoSpamLogStatement getStatement(String s, long minIntervalNanos)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a6549440/test/unit/org/apache/cassandra/utils/NoSpamLoggerTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/utils/NoSpamLoggerTest.java b/test/unit/org/apache/cassandra/utils/NoSpamLoggerTest.java
index 3ad7ab8..ca1d6d3 100644
--- a/test/unit/org/apache/cassandra/utils/NoSpamLoggerTest.java
+++ b/test/unit/org/apache/cassandra/utils/NoSpamLoggerTest.java
@@ -20,10 +20,10 @@ package org.apache.cassandra.utils;
import static org.junit.Assert.*;
-import java.util.ArrayList;
+import java.util.ArrayDeque;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
+import java.util.Queue;
import java.util.concurrent.TimeUnit;
import org.apache.cassandra.utils.NoSpamLogger.Level;
@@ -37,7 +37,7 @@ import org.slf4j.helpers.SubstituteLogger;
public class NoSpamLoggerTest
{
- Map<Level, List<Pair<String, Object[]>>> logged = new HashMap<>();
+ Map<Level, Queue<Pair<String, Object[]>>> logged = new HashMap<>();
Logger mock = new SubstituteLogger(null)
{
@@ -45,19 +45,19 @@ public class NoSpamLoggerTest
@Override
public void info(String statement, Object... args)
{
- logged.get(Level.INFO).add(Pair.create(statement, args));
+ logged.get(Level.INFO).offer(Pair.create(statement, args));
}
@Override
public void warn(String statement, Object... args)
{
- logged.get(Level.WARN).add(Pair.create(statement, args));
+ logged.get(Level.WARN).offer(Pair.create(statement, args));
}
@Override
public void error(String statement, Object... args)
{
- logged.get(Level.ERROR).add(Pair.create(statement, args));
+ logged.get(Level.ERROR).offer(Pair.create(statement, args));
}
@Override
@@ -74,6 +74,8 @@ public class NoSpamLoggerTest
};
+ static final String statement = "swizzle{}";
+ static final String param = "";
static long now;
@BeforeClass
@@ -92,9 +94,10 @@ public class NoSpamLoggerTest
@Before
public void setUp() throws Exception
{
- logged.put(Level.INFO, new ArrayList<Pair<String, Object[]>>());
- logged.put(Level.WARN, new ArrayList<Pair<String, Object[]>>());
- logged.put(Level.ERROR, new ArrayList<Pair<String, Object[]>>());
+ logged.put(Level.INFO, new ArrayDeque<Pair<String, Object[]>>());
+ logged.put(Level.WARN, new ArrayDeque<Pair<String, Object[]>>());
+ logged.put(Level.ERROR, new ArrayDeque<Pair<String, Object[]>>());
+ NoSpamLogger.clearWrappedLoggersForTest();
}
@Test
@@ -109,19 +112,18 @@ public class NoSpamLoggerTest
{
setUp();
now = 5;
- NoSpamLogger.clearWrappedLoggersForTest();
- NoSpamLogger.log( mock, l, 5, TimeUnit.NANOSECONDS, "swizzle{}", "a");
+ NoSpamLogger.log( mock, l, 5, TimeUnit.NANOSECONDS, statement, param);
assertEquals(1, logged.get(l).size());
- NoSpamLogger.log( mock, l, 5, TimeUnit.NANOSECONDS, "swizzle{}", "a");
+ NoSpamLogger.log( mock, l, 5, TimeUnit.NANOSECONDS, statement, param);
assertEquals(1, logged.get(l).size());
now += 5;
- NoSpamLogger.log( mock, l, 5, TimeUnit.NANOSECONDS, "swizzle{}", "a");
+ NoSpamLogger.log( mock, l, 5, TimeUnit.NANOSECONDS, statement, param);
assertEquals(2, logged.get(l).size());
}
@@ -139,20 +141,20 @@ public class NoSpamLoggerTest
now = 5;
NoSpamLogger logger = NoSpamLogger.getLogger( mock, 5, TimeUnit.NANOSECONDS);
- logger.info("swizzle{}", "a");
- logger.info("swizzle{}", "a");
- logger.warn("swizzle{}", "a");
- logger.error("swizzle{}", "a");
+ logger.info(statement, param);
+ logger.info(statement, param);
+ logger.warn(statement, param);
+ logger.error(statement, param);
assertLoggedSizes(1, 0, 0);
NoSpamLogStatement statement = logger.getStatement("swizzle2{}", 10, TimeUnit.NANOSECONDS);
- statement.warn("a");
+ statement.warn(param);
//now is 5 so it won't log
assertLoggedSizes(1, 0, 0);
now = 10;
- statement.warn("a");
+ statement.warn(param);
assertLoggedSizes(1, 1, 0);
}
@@ -160,15 +162,80 @@ public class NoSpamLoggerTest
@Test
public void testNoSpamLoggerStatementDirect() throws Exception
{
- NoSpamLogger.NoSpamLogStatement statement = NoSpamLogger.getStatement( mock, "swizzle{}", 5, TimeUnit.NANOSECONDS);
+ NoSpamLogger.NoSpamLogStatement nospam = NoSpamLogger.getStatement( mock, statement, 5, TimeUnit.NANOSECONDS);
now = 5;
- statement.info("swizzle{}", "a");
- statement.info("swizzle{}", "a");
- statement.warn("swizzle{}", "a");
- statement.error("swizzle{}", "a");
+ nospam.info(statement, param);
+ nospam.info(statement, param);
+ nospam.warn(statement, param);
+ nospam.error(statement, param);
assertLoggedSizes(1, 0, 0);
}
+
+ private void checkMock(Level l)
+ {
+ Pair<String, Object[]> p = logged.get(l).poll();
+ assertNotNull(p);
+ assertEquals(statement, p.left);
+ Object objs[] = p.right;
+ assertEquals(1, objs.length);
+ assertEquals(param, objs[0]);
+ assertTrue(logged.get(l).isEmpty());
+ }
+
+ /*
+ * Make sure that what is passed to the underlying logger is the correct set of objects
+ */
+ @Test
+ public void testLoggedResult() throws Exception
+ {
+ NoSpamLogger.log( mock, Level.INFO, 5, TimeUnit.NANOSECONDS, statement, param);
+ checkMock(Level.INFO);
+
+ now = 10;
+
+ NoSpamLogger.log( mock, Level.WARN, 5, TimeUnit.NANOSECONDS, statement, param);
+ checkMock(Level.WARN);
+
+ now = 15;
+
+ NoSpamLogger.log( mock, Level.ERROR, 5, TimeUnit.NANOSECONDS, statement, param);
+ checkMock(Level.ERROR);
+
+ now = 20;
+
+ NoSpamLogger logger = NoSpamLogger.getLogger(mock, 5, TimeUnit.NANOSECONDS);
+
+ logger.info(statement, param);
+ checkMock(Level.INFO);
+
+ now = 25;
+
+ logger.warn(statement, param);
+ checkMock(Level.WARN);
+
+ now = 30;
+
+ logger.error(statement, param);
+ checkMock(Level.ERROR);
+
+ NoSpamLogger.NoSpamLogStatement nospamStatement = logger.getStatement(statement);
+
+ now = 35;
+
+ nospamStatement.info(param);
+ checkMock(Level.INFO);
+
+ now = 40;
+
+ nospamStatement.warn(param);
+ checkMock(Level.WARN);
+
+ now = 45;
+
+ nospamStatement.error(param);
+ checkMock(Level.ERROR);
+ }
}