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 akka.actor.ActorRef;
11 import akka.actor.ActorSystem;
12 import akka.actor.ExtendedActorSystem;
13 import akka.serialization.JavaSerializer;
14 import akka.testkit.TestProbe;
15 import org.junit.After;
16 import org.junit.Assert;
17 import org.junit.Before;
18 import org.opendaylight.controller.cluster.access.commands.TransactionPurgeRequest;
19 import org.opendaylight.controller.cluster.access.commands.TransactionPurgeResponse;
21 public class RequestEnvelopeTest extends AbstractEnvelopeTest<RequestEnvelope> {
23 private ActorSystem system;
24 private ActorRef replyTo;
25 private TestProbe replyToProbe;
29 public void setUp() throws Exception {
30 system = ActorSystem.apply();
31 JavaSerializer.currentSystem().value_$eq((ExtendedActorSystem) system);
36 protected RequestEnvelope createEnvelope() {
37 replyToProbe = new TestProbe(system);
38 replyTo = replyToProbe.ref();
39 final TransactionPurgeRequest message = new TransactionPurgeRequest(OBJECT, 2L, replyTo);
40 return new RequestEnvelope(message, 1L, 2L);
44 protected void doAdditionalAssertions(final RequestEnvelope envelope, final RequestEnvelope resolvedObject) {
45 final Request<?, ?> actual = resolvedObject.getMessage();
46 Assert.assertTrue(actual instanceof TransactionPurgeRequest);
47 final TransactionPurgeRequest purgeRequest = (TransactionPurgeRequest) actual;
48 Assert.assertEquals(replyTo, purgeRequest.getReplyTo());
49 final TransactionPurgeResponse response = new TransactionPurgeResponse(OBJECT, 2L);
50 resolvedObject.sendSuccess(response, 11L);
51 final SuccessEnvelope successEnvelope = replyToProbe.expectMsgClass(SuccessEnvelope.class);
52 Assert.assertEquals(response, successEnvelope.getMessage());
53 final RuntimeRequestException failResponse = new RuntimeRequestException("fail", new RuntimeException());
54 resolvedObject.sendFailure(failResponse, 11L);
55 final FailureEnvelope failureEnvelope = replyToProbe.expectMsgClass(FailureEnvelope.class);
56 Assert.assertEquals(failResponse, failureEnvelope.getMessage().getCause());
60 public void tearDown() throws Exception {