Improve segmented journal actor metrics
[controller.git] / opendaylight / md-sal / cds-access-api / src / test / java / org / opendaylight / controller / cluster / access / concepts / RequestEnvelopeTest.java
1 /*
2  * Copyright (c) 2017 Pantheon Technologies s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.cluster.access.concepts;
9
10 import static org.hamcrest.CoreMatchers.instanceOf;
11 import static org.hamcrest.MatcherAssert.assertThat;
12 import static org.junit.Assert.assertEquals;
13
14 import akka.actor.ActorRef;
15 import akka.actor.ActorSystem;
16 import akka.actor.ExtendedActorSystem;
17 import akka.serialization.JavaSerializer;
18 import akka.testkit.TestProbe;
19 import org.junit.After;
20 import org.junit.Before;
21 import org.opendaylight.controller.cluster.access.commands.TransactionPurgeRequest;
22 import org.opendaylight.controller.cluster.access.commands.TransactionPurgeResponse;
23
24 public class RequestEnvelopeTest extends AbstractEnvelopeTest<RequestEnvelope> {
25     private ActorSystem system;
26     private ActorRef replyTo;
27     private TestProbe replyToProbe;
28
29     @Override
30     @Before
31     public void setUp() throws Exception {
32         system = ActorSystem.apply();
33         JavaSerializer.currentSystem().value_$eq((ExtendedActorSystem) system);
34         super.setUp();
35     }
36
37     @Override
38     protected EnvelopeDetails<RequestEnvelope> createEnvelope() {
39         replyToProbe = new TestProbe(system);
40         replyTo = replyToProbe.ref();
41         final int refSize = replyTo.path().toSerializationFormat().length();
42
43         return new EnvelopeDetails<>(new RequestEnvelope(new TransactionPurgeRequest(OBJECT, 2L, replyTo), 1L, 2L),
44             refSize + 179);
45     }
46
47     @Override
48     protected void doAdditionalAssertions(final RequestEnvelope envelope, final RequestEnvelope resolvedObject) {
49         final Request<?, ?> actual = resolvedObject.getMessage();
50         assertThat(actual, instanceOf(TransactionPurgeRequest.class));
51         final var purgeRequest = (TransactionPurgeRequest) actual;
52         assertEquals(replyTo, purgeRequest.getReplyTo());
53         final var response = new TransactionPurgeResponse(OBJECT, 2L);
54         resolvedObject.sendSuccess(response, 11L);
55         final var successEnvelope = replyToProbe.expectMsgClass(SuccessEnvelope.class);
56         assertEquals(response, successEnvelope.getMessage());
57         final var failResponse = new RuntimeRequestException("fail", new RuntimeException());
58         resolvedObject.sendFailure(failResponse, 11L);
59         final var failureEnvelope = replyToProbe.expectMsgClass(FailureEnvelope.class);
60         assertEquals(failResponse, failureEnvelope.getMessage().getCause());
61     }
62
63     @After
64     public void tearDown() {
65         system.terminate();
66     }
67 }