Search in sources :

Example 6 with BoltWorker

use of org.neo4j.bolt.v1.runtime.BoltWorker in project neo4j by neo4j.

the class MonitoredBoltWorkerFactoryTest method shouldSignalReceivedStartAndComplete.

@Test
public void shouldSignalReceivedStartAndComplete() throws Throwable {
    // given
    FakeClock clock = Clocks.fakeClock();
    WorkerFactory delegate = mock(WorkerFactory.class);
    BoltStateMachine machine = mock(BoltStateMachine.class);
    when(delegate.newWorker(anyObject(), anyObject())).thenReturn(new BoltWorker() {

        @Override
        public void enqueue(Job job) {
            clock.forward(1337, TimeUnit.MILLISECONDS);
            try {
                job.perform(machine);
            } catch (BoltConnectionFatality connectionFatality) {
                throw new RuntimeException(connectionFatality);
            }
        }

        @Override
        public void interrupt() {
            throw new RuntimeException();
        }

        @Override
        public void halt() {
            throw new RuntimeException();
        }
    });
    Monitors monitors = new Monitors();
    CountingSessionMonitor monitor = new CountingSessionMonitor();
    monitors.addMonitorListener(monitor);
    MonitoredWorkerFactory workerFactory = new MonitoredWorkerFactory(monitors, delegate, clock);
    BoltWorker worker = workerFactory.newWorker(CONNECTION_DESCRIPTOR);
    // when
    worker.enqueue((stateMachine) -> {
        stateMachine.run("hello", null, nullResponseHandler());
        clock.forward(1338, TimeUnit.MILLISECONDS);
    });
    // then
    assertEquals(1, monitor.messagesReceived);
    assertEquals(1337, monitor.queueTime);
    assertEquals(1338, monitor.processingTime);
}
Also used : FakeClock(org.neo4j.time.FakeClock) MonitoredBoltWorker(org.neo4j.bolt.v1.runtime.MonitoredWorkerFactory.MonitoredBoltWorker) Monitors(org.neo4j.kernel.monitoring.Monitors) Test(org.junit.Test)

Aggregations

Test (org.junit.Test)4 Map (java.util.Map)2 BoltWorker (org.neo4j.bolt.v1.runtime.BoltWorker)2 MonitoredBoltWorker (org.neo4j.bolt.v1.runtime.MonitoredWorkerFactory.MonitoredBoltWorker)2 Monitors (org.neo4j.kernel.monitoring.Monitors)2 IOException (java.io.IOException)1 HashMap (java.util.HashMap)1 BiFunction (java.util.function.BiFunction)1 BoltMessageRouter (org.neo4j.bolt.v1.messaging.BoltMessageRouter)1 BoltConnectionDescriptor (org.neo4j.bolt.v1.runtime.BoltConnectionDescriptor)1 BoltStateMachine (org.neo4j.bolt.v1.runtime.BoltStateMachine)1 Record (org.neo4j.bolt.v1.runtime.spi.Record)1 BoltProtocolV1 (org.neo4j.bolt.v1.transport.BoltProtocolV1)1 Status (org.neo4j.kernel.api.exceptions.Status)1 Log (org.neo4j.logging.Log)1 FakeClock (org.neo4j.time.FakeClock)1