diff --git a/enterprise/kernel/src/main/java/org/neo4j/kernel/enterprise/builtinprocs/BuiltInProcedures.java b/enterprise/kernel/src/main/java/org/neo4j/kernel/enterprise/builtinprocs/BuiltInProcedures.java index b4306e9b85a90..7fa9a719fae97 100644 --- a/enterprise/kernel/src/main/java/org/neo4j/kernel/enterprise/builtinprocs/BuiltInProcedures.java +++ b/enterprise/kernel/src/main/java/org/neo4j/kernel/enterprise/builtinprocs/BuiltInProcedures.java @@ -20,6 +20,9 @@ package org.neo4j.kernel.enterprise.builtinprocs; import java.io.IOException; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneId; import java.util.Map; import java.util.stream.Stream; @@ -34,6 +37,7 @@ import org.neo4j.procedure.Context; import org.neo4j.procedure.Procedure; +import static java.time.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME; import static org.neo4j.procedure.Procedure.Mode.DBMS; public class BuiltInProcedures @@ -85,7 +89,7 @@ public static class QueryStatusResult public final String username; public final String query; public final Map parameters; - public final long startTime; + public final String startTime; QueryStatusResult( long queryId, String username, String query, Map parameters, long startTime ) { @@ -93,7 +97,10 @@ public static class QueryStatusResult this.username = username; this.query = query; this.parameters = parameters; - this.startTime = startTime; + this.startTime = OffsetDateTime.ofInstant( + Instant.ofEpochMilli( startTime ), + ZoneId.systemDefault() + ).format( ISO_OFFSET_DATE_TIME ); } } } diff --git a/enterprise/security/src/test/java/org/neo4j/server/security/enterprise/auth/AuthProceduresTestLogic.java b/enterprise/security/src/test/java/org/neo4j/server/security/enterprise/auth/AuthProceduresTestLogic.java index c78e763e50e75..cbad280a8e66b 100644 --- a/enterprise/security/src/test/java/org/neo4j/server/security/enterprise/auth/AuthProceduresTestLogic.java +++ b/enterprise/security/src/test/java/org/neo4j/server/security/enterprise/auth/AuthProceduresTestLogic.java @@ -23,6 +23,7 @@ import org.junit.Rule; import org.junit.Test; +import java.time.OffsetDateTime; import java.util.Collections; import java.util.Map; import java.util.Set; @@ -39,6 +40,7 @@ import org.neo4j.test.rule.concurrent.ThreadingRule; import static java.lang.String.format; +import static java.time.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.allOf; import static org.hamcrest.Matchers.anyOf; @@ -188,10 +190,11 @@ public void shouldListRestrictedTransaction() } @Test - public void shouldListQueries() throws Throwable + public void shouldListAllQueriesWhenRunningAsAdmin() throws Throwable { DoubleLatch latch = new DoubleLatch( 3, true ); - long startTime = System.currentTimeMillis(); + String startTime = OffsetDateTime.now().format( ISO_OFFSET_DATE_TIME ); + ThreadedTransactionCreate read1 = new ThreadedTransactionCreate<>( neo, latch ); ThreadedTransactionCreate read2 = new ThreadedTransactionCreate<>( neo, latch ); @@ -218,10 +221,10 @@ public void shouldListQueries() throws Throwable } @Test - public void shouldOnlyListOwnQueriesWhenNotAdmin() throws Throwable + public void shouldOnlyListOwnQueriesWhenNotRunningAsAdmin() throws Throwable { DoubleLatch latch = new DoubleLatch( 3, true ); - long startTime = System.currentTimeMillis(); + String startTime = OffsetDateTime.now().format( ISO_OFFSET_DATE_TIME ); ThreadedTransactionCreate read1 = new ThreadedTransactionCreate<>( neo, latch ); ThreadedTransactionCreate read2 = new ThreadedTransactionCreate<>( neo, latch ); @@ -1321,7 +1324,7 @@ private TransportConnection startBoltSession( String username, String password ) } //---------- matchers----------- - private Matcher> listedQuery( long startTime, String username, String query ) + private Matcher> listedQuery( String startTime, String username, String query ) { return allOf( hasQuery( query ), @@ -1350,10 +1353,9 @@ private Matcher> hasQueryId() } @SuppressWarnings( "unchecked" ) - private Matcher> hasStartTimeAfter( long base ) + private Matcher> hasStartTimeAfter( String base ) { - // TODO - return (Matcher>) (Matcher) hasEntry( equalTo( "startTime" ), allOf( isA( Long.class ), greaterThanOrEqualTo( base ) ) ); + return (Matcher>) (Matcher) hasEntry( equalTo( "startTime" ), allOf( greaterThanOrEqualTo( base ) ) ); } @SuppressWarnings( "unchecked" )