2 * Copyright (c) 2017 Pantheon Technologies s.r.o. and others. All rights reserved.
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
8 package org.opendaylight.controller.cluster.access.concepts;
10 import static org.hamcrest.CoreMatchers.instanceOf;
11 import static org.hamcrest.MatcherAssert.assertThat;
12 import static org.junit.Assert.assertEquals;
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;
24 public class RequestEnvelopeTest extends AbstractEnvelopeTest<RequestEnvelope> {
25 private ActorSystem system;
26 private ActorRef replyTo;
27 private TestProbe replyToProbe;
31 public void setUp() throws Exception {
32 system = ActorSystem.apply();
33 JavaSerializer.currentSystem().value_$eq((ExtendedActorSystem) system);
38 protected EnvelopeDetails<RequestEnvelope> createEnvelope() {
39 replyToProbe = new TestProbe(system);
40 replyTo = replyToProbe.ref();
41 final int refSize = replyTo.path().toSerializationFormat().length();
43 return new EnvelopeDetails<>(new RequestEnvelope(new TransactionPurgeRequest(OBJECT, 2L, replyTo), 1L, 2L),
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());
64 public void tearDown() {