Skip to content

Commit

Permalink
Add time units to the fields
Browse files Browse the repository at this point in the history
  • Loading branch information
thobe committed Jan 3, 2017
1 parent edfcf99 commit 9e77d86
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 37 deletions.
5 changes: 2 additions & 3 deletions community/common/src/main/java/org/neo4j/time/Clocks.java
Expand Up @@ -77,8 +77,7 @@ public static FakeClock fakeClock( long initialTime, TimeUnit unit )

public static FakeClock fakeClock( TemporalAccessor initialTime )
{
FakeClock clock = new FakeClock( initialTime.getLong( ChronoField.INSTANT_SECONDS ), TimeUnit.SECONDS );
clock.forward( initialTime.getLong( ChronoField.NANO_OF_SECOND ), TimeUnit.NANOSECONDS );
return clock;
return new FakeClock( initialTime.getLong( ChronoField.INSTANT_SECONDS ), TimeUnit.SECONDS )
.forward( initialTime.getLong( ChronoField.NANO_OF_SECOND ), TimeUnit.NANOSECONDS );
}
}
Expand Up @@ -20,7 +20,6 @@
package org.neo4j.kernel.api;

import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicLongFieldUpdater;

import org.apache.commons.lang3.builder.ToStringBuilder;
Expand All @@ -31,6 +30,7 @@
import org.neo4j.time.CpuClock;
import org.neo4j.time.SystemNanoClock;

import static java.util.concurrent.TimeUnit.NANOSECONDS;
import static java.util.concurrent.atomic.AtomicLongFieldUpdater.newUpdater;

/**
Expand All @@ -42,7 +42,6 @@ public class ExecutingQuery
newUpdater( ExecutingQuery.class, "waitTimeNanos" );
private final long queryId;
private final Locks.Tracer lockTracer = ExecutingQuery.this::waitForLock;

private final String username;
private final QuerySource querySource;
private final String queryText;
Expand Down Expand Up @@ -97,7 +96,6 @@ public boolean equals( Object o )
ExecutingQuery that = (ExecutingQuery) o;

return queryId == that.queryId;

}

@Override
Expand Down Expand Up @@ -136,22 +134,22 @@ public long startTime()
return startTime;
}

public long elapsedTime()
public long elapsedTimeMillis()
{
return clock.millis() - startTime;
}

/**
* @return the CPU time used by the query, in nanoseconds.
*/
public long cpuTime()
public long cpuTimeMicros()
{
return cpuClock.cpuTimeNanos( threadExecutingTheQuery ) - cpuTimeNanosWhenQueryStarted;
return NANOSECONDS.toMicros( cpuClock.cpuTimeNanos( threadExecutingTheQuery ) - cpuTimeNanosWhenQueryStarted );
}

public long waitTime()
public long waitTimeMillis()
{
return TimeUnit.NANOSECONDS.toMillis( waitTimeNanos + status.waitTimeNanos( clock ) );
return NANOSECONDS.toMillis( waitTimeNanos + status.waitTimeNanos( clock ) );
}

@Override
Expand Down
Expand Up @@ -82,7 +82,7 @@ Map<String,Object> toMap( SystemNanoClock clock )
{
Map<String,Object> map = new HashMap<>();
map.put( "state", "WAITING" );
map.put( "time", TimeUnit.NANOSECONDS.toMillis( waitTimeNanos( clock ) ) );
map.put( "waitTimeMillis", TimeUnit.NANOSECONDS.toMillis( waitTimeNanos( clock ) ) );
map.put( "resourceType", resourceType.toString() );
map.put( "resourceIds", resourceIds );
return map;
Expand Down
Expand Up @@ -62,7 +62,7 @@ public void shouldProduceSensibleMapRepresentationInWaitingState() throws Except
// then
Map<String,Object> expected = new HashMap<>();
expected.put( "state", "WAITING" );
expected.put( "time", 17L );
expected.put( "waitTimeMillis", 17L );
expected.put( "resourceType", "NODE" );
expected.put( "resourceIds", resourceIds );
assertEquals( expected, statusMap );
Expand Down
Expand Up @@ -65,7 +65,7 @@ public void shouldReportElapsedTime() throws Exception
{
// when
clock.forward( 10, TimeUnit.SECONDS );
long elapsedTime = query.elapsedTime();
long elapsedTime = query.elapsedTimeMillis();

// then
assertEquals( 10_000, elapsedTime );
Expand All @@ -86,13 +86,13 @@ public void shouldReportWaitTime() throws Exception
// then
assertThat( query.status(), CoreMatchers.<Map<String,Object>>allOf(
hasEntry( "state", "WAITING" ),
hasEntry( "time", 5_000L ),
hasEntry( "waitTimeMillis", 5_000L ),
hasEntry( "resourceType", "NODE" ),
hasEntry( equalTo( "resourceIds" ), longArray( 17 ) ) ) );
assertEquals( 5_000, query.waitTime() );
assertEquals( 5_000, query.waitTimeMillis() );
}
assertEquals( singletonMap( "state", "RUNNING" ), query.status() );
assertEquals( 5_000, query.waitTime() );
assertEquals( 5_000, query.waitTimeMillis() );

// when
clock.forward( 2, TimeUnit.SECONDS );
Expand All @@ -103,13 +103,13 @@ public void shouldReportWaitTime() throws Exception
// then
assertThat( query.status(), CoreMatchers.<Map<String,Object>>allOf(
hasEntry( "state", "WAITING" ),
hasEntry( "time", 1_000L ),
hasEntry( "waitTimeMillis", 1_000L ),
hasEntry( "resourceType", "RELATIONSHIP" ),
hasEntry( equalTo( "resourceIds" ), longArray( 612 ) ) ) );
assertEquals( 6_000, query.waitTime() );
assertEquals( 6_000, query.waitTimeMillis() );
}
assertEquals( singletonMap( "state", "RUNNING" ), query.status() );
assertEquals( 6_000, query.waitTime() );
assertEquals( 6_000, query.waitTimeMillis() );
}

@Test
Expand All @@ -119,10 +119,10 @@ public void shouldReportCpuTime() throws Exception
cpuClock.add( 60, TimeUnit.MILLISECONDS );

// when
long cpuTime = query.cpuTime();
long cpuTime = query.cpuTimeMicros();

// then
assertEquals( 60_000_000, cpuTime );
assertEquals( 60_000, cpuTime );
}

private Locks.WaitEvent lock( String resourceType, long resourceId )
Expand Down
Expand Up @@ -44,9 +44,9 @@ public class QueryStatusResult
public final String startTime;
public final String elapsedTime;
public final String connectionDetails;
public final long cpuTime;
public final long cpuTimeMicros;
public final Map<String,Object> status;
public final long waitTime;
public final long waitTimeMillis;
public final Map<String,Object> metaData;

QueryStatusResult( ExecutingQuery q ) throws InvalidArgumentsException
Expand All @@ -57,12 +57,12 @@ public class QueryStatusResult
q.queryText(),
q.queryParameters(),
q.startTime(),
q.elapsedTime(),
q.elapsedTimeMillis(),
q.querySource(),
q.metaData(),
q.cpuTime(),
q.cpuTimeMicros(),
q.status(),
q.waitTime() );
q.waitTimeMillis() );
}

private QueryStatusResult(
Expand All @@ -74,9 +74,9 @@ private QueryStatusResult(
long elapsedTime,
QuerySource querySource,
Map<String,Object> txMetaData,
long cpuTime,
long cpuTimeMicros,
Map<String,Object> status,
long waitTime
long waitTimeMillis
) {
this.queryId = queryId.toString();
this.username = username;
Expand All @@ -86,9 +86,9 @@ private QueryStatusResult(
this.elapsedTime = formatInterval( elapsedTime );
this.connectionDetails = querySource.toString();
this.metaData = txMetaData;
this.cpuTime = cpuTime;
this.cpuTimeMicros = cpuTimeMicros;
this.status = status;
this.waitTime = waitTime;
this.waitTimeMillis = waitTimeMillis;
}

private static String formatTime( final long startTime )
Expand Down
Expand Up @@ -102,8 +102,8 @@ public void shouldProvideElapsedCpuTime() throws Exception
Map<String,Object> data = getQueryListing( "MATCH (n) SET n.v = n.v + 1" );

// then
assertTrue( "should contain a 'cpuTime' field", data.containsKey( "cpuTime" ) );
Object cpuTime1 = data.get( "cpuTime" );
assertTrue( "should contain a 'cpuTimeMicros' field", data.containsKey( "cpuTimeMicros" ) );
Object cpuTime1 = data.get( "cpuTimeMicros" );
assertThat( cpuTime1, instanceOf( Long.class ) );
assertTrue( "should contain a 'status' field", data.containsKey( "status" ) );
Object status = data.get( "status" );
Expand All @@ -113,17 +113,17 @@ public void shouldProvideElapsedCpuTime() throws Exception
assertEquals( "WAITING", statusMap.get( "state" ) );
assertEquals( "NODE", statusMap.get( "resourceType" ) );
assertArrayEquals( new long[]{node.getId()}, (long[]) statusMap.get( "resourceIds" ) );
assertTrue( "should contain a 'waitTime' field", data.containsKey( "waitTime" ) );
Object waitTime1 = data.get( "waitTime" );
assertTrue( "should contain a 'waitTimeMillis' field", data.containsKey( "waitTimeMillis" ) );
Object waitTime1 = data.get( "waitTimeMillis" );
assertThat( waitTime1, instanceOf( Long.class ) );

// when
data = getQueryListing( "MATCH (n) SET n.v = n.v + 1" );

// then
Long cpuTime2 = (Long) data.get( "cpuTime" );
Long cpuTime2 = (Long) data.get( "cpuTimeMicros" );
assertThat( cpuTime2, greaterThan( (Long) cpuTime1 ) );
Long waitTime2 = (Long) data.get( "waitTime" );
Long waitTime2 = (Long) data.get( "waitTimeMillis" );
assertThat( waitTime2, greaterThan( (Long) waitTime1 ) );
}
finally
Expand Down

0 comments on commit 9e77d86

Please sign in to comment.