8000 useNanoTime option is not taken into account (#462) by peshek-of-rattay · Pull Request #529 · p6spy/p6spy · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

useNanoTime option is not taken into account (#462) #529

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: mas 8000 ter
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions src/main/java/com/p6spy/engine/common/MillisecondsStrategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.p6spy.engine.common;

import java.util.concurrent.TimeUnit;

/**
* The {@code MillisecondsStrategy} class implements a strategy that converts a
* duration in nanoseconds to milliseconds.
*/
public class MillisecondsStrategy implements TimeUnitStrategy {

@Override
public long convert(long durationInNanoseconds) {
return TimeUnit.NANOSECONDS.toMillis(durationInNanoseconds);
}

}
14 changes: 14 additions & 0 deletions src/main/java/com/p6spy/engine/common/NanosecondsStrategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.p6spy.engine.common;

/**
* The {@code NanosecondsStrategy} class represents implements a strategy that
* returns a duration in nanoseconds.
*/
public class NanosecondsStrategy implements TimeUnitStrategy {

@Override
public long convert(long durationInNanoseconds) {
return durationInNanoseconds;
10000 }

}
6 changes: 5 additions & 1 deletion src/main/java/com/p6spy/engine/common/P6LogQuery.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ public class P6LogQuery implements P6OptionChangedListener {

protected static P6Logger logger;

protected static TimeUnitStrategy timeUnitStrategy;

static {
initialize();
}
Expand Down Expand Up @@ -80,6 +82,7 @@ public static synchronized void initialize() {
}
}
}
timeUnitStrategy = opts.getUseNanoTime() ? new NanosecondsStrategy(): new MillisecondsStrategy();
}

protected static void doLog(long elapsed, Category category, String prepared, String sql) {
Expand Down Expand Up @@ -118,7 +121,8 @@ protected static void doLog(int connectionId, long elapsedNanos, Category catego
stringNow = new SimpleDateFormat(format).format(new java.util.Date()).trim();
}

logger.logSQL(connectionId, stringNow, TimeUnit.NANOSECONDS.toMillis(elapsedNanos), category, prepared, sql, url);
long elapsed = timeUnitStrategy.convert(elapsedNanos);
logger.logSQL(connectionId, stringNow, elapsed, category, prepared, sql, url);

final boolean stackTrace = P6SpyOptions.getActiveInstance().getStackTrace();
if (stackTrace) {
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/com/p6spy/engine/common/TimeUnitStrategy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.p6spy.engine.common;

/**
* The {@code TimeUnitStrategy} interface represents a strategy that decides
* which time unit to use.
*/
public interface TimeUnitStrategy {

/**
* Converts duration in nanoseconds to another time unit according to this
* strategy.
*
* @param durationInNanoseconds duration in nanoseconds
* @return the converted duration
*/
long convert(long durationInNanoseconds);

}
3 changes: 3 additions & 0 deletions src/main/java/com/p6spy/engine/spy/P6SpyLoadableOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,7 @@ public interface P6SpyLoadableOptions extends P6LoadableOptions, P6SpyOptionsMBe
MessageFormattingStrategy getLogMessageFormatInstance();

void setJmx(String jmx);

void setUseNanoTime(String useNanoTime);

}
18 changes: 18 additions & 0 deletions src/main/java/com/p6spy/engine/spy/P6SpyOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ public class P6SpyOptions extends StandardMBean implements P6SpyLoadableOptions
public static final String DATABASE_DIALECT_BINARY_FORMAT_INSTANCE = "databaseDialectBinaryFormatInstance";
public static final String JMX = "jmx";
public static final String JMX_PREFIX = "jmxPrefix";
public static final String USE_NANO_TIME = "useNanoTime";

// those set indirectly (via properties visible from outside)
public static final String DRIVER_NAMES = "driverNames";
Expand Down Expand Up @@ -87,6 +88,7 @@ public class P6SpyOptions extends StandardMBean implements P6SpyLoadableOptions
CustomLineFormat.CURRENT_TIME, CustomLineFormat.EXECUTION_TIME, CustomLineFormat.CATEGORY,
CustomLineFormat.CONNECTION_ID, CustomLineFormat.SQL_SINGLE_LINE));
defaults.put(JMX, Boolean.TRUE.toString());
defaults.put(USE_NANO_TIME, Boolean.FALSE.toString());
}

private final P6OptionsRepository optionsRepository;
Expand Down Expand Up @@ -123,6 +125,7 @@ public void load(Map<String, String> options) {
setCustomLogMessageFormat(options.get(CUSTOM_LOG_MESSAGE_FORMAT));
setJmx(options.get(JMX));
setJmxPrefix(options.get(JMX_PREFIX));
setUseNanoTime(options.get(USE_NANO_TIME));
}

/**
Expand Down Expand Up @@ -550,4 +553,19 @@ public void setJmxPrefix(String jmxPrefix) {
optionsRepository.set(String.class, JMX_PREFIX, jmxPrefix);
}

@Override
public void setUseNanoTime(String useNanoTime) {
optionsRepository.set(Boolean.class, USE_NANO_TIME, useNanoTime);
}

@Override
public void setUseNanoTime(boolean useNanoTime) {
optionsRepository.set(Boolean.class, USE_NANO_TIME, useNanoTime);
}

@Override
public boolean getUseNanoTime() {
return optionsRepository.get(Boolean.class, USE_NANO_TIME);
}

}
4 changes: 4 additions & 0 deletions src/main/java/com/p6spy/engine/spy/P6SpyOptionsMBean.java
Original file line number Diff line number Diff line change
Expand Up @@ -148,4 +148,8 @@ public interface P6SpyOptionsMBean {

void setJmxPrefix(String jmxPrefix);

void setUseNanoTime(boolean useNanoTime);

boolean getUseNanoTime();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.p6spy.engine.common;

import org.junit.Assert;
import org.junit.Test;

public class MillisecondsStrategyTest {

@Test
public void testConvert() {
TimeUnitStrategy strategy = new MillisecondsStrategy();
Assert.assertEquals(123L, strategy.convert(123456789L));
}

}
14 changes: 14 additions & 0 deletions src/test/java/com/p6spy/engine/common/NanosecondsStrategyTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.p6spy.engine.common;

import org.junit.Assert;
import org.junit.Test;

public class NanosecondsStrategyTest {

@Test
public void testConvert() {
TimeUnitStrategy strategy = new NanosecondsStrategy();
Assert.assertEquals(123L, strategy.convert(123L));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ public void testP6SpyOptionDefaults() {
opts.getCustomLogMessageFormat());
Assert.assertTrue(opts.getJmx());
Assert.assertNull(opts.getJmxPrefix());
Assert.assertFalse(opts.getUseNanoTime());
}

@Test
Expand Down
0