d270a0c42387751b1d35d90781cea499ec1f7f3d
[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 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;
20
21 public class RequestEnvelopeTest extends AbstractEnvelopeTest<RequestEnvelope> {
22
23     private ActorSystem system;
24     private ActorRef replyTo;
25     private TestProbe replyToProbe;
26
27     @Override
28     @Before
29     public void setUp() throws Exception {
30         system = ActorSystem.apply();
31         JavaSerializer.currentSystem().value_$eq((ExtendedActorSystem) system);
32         super.setUp();
33     }
34
35     @Override
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);
41     }
42
43     @Override
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());
57     }
58
59     @After
60     public void tearDown() throws Exception {
61         system.terminate();
62     }
63 }