• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2016 The gRPC Authors
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package io.grpc;
18 
19 import static io.grpc.ConnectivityState.CONNECTING;
20 import static io.grpc.ConnectivityState.IDLE;
21 import static io.grpc.ConnectivityState.TRANSIENT_FAILURE;
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertFalse;
24 import static org.junit.Assert.assertNotEquals;
25 import static org.junit.Assert.assertNotSame;
26 
27 import org.junit.Test;
28 import org.junit.runner.RunWith;
29 import org.junit.runners.JUnit4;
30 
31 /** Unit tests for {@link ConnectivityStateInfo}. */
32 @RunWith(JUnit4.class)
33 public class ConnectivityStateInfoTest {
34   @Test
forNonError()35   public void forNonError() {
36     ConnectivityStateInfo info = ConnectivityStateInfo.forNonError(IDLE);
37     assertEquals(IDLE, info.getState());
38     assertEquals(Status.OK, info.getStatus());
39   }
40 
41   @Test(expected = IllegalArgumentException.class)
forNonErrorInvalid()42   public void forNonErrorInvalid() {
43     ConnectivityStateInfo.forNonError(TRANSIENT_FAILURE);
44   }
45 
46   @Test
forTransientFailure()47   public void forTransientFailure() {
48     ConnectivityStateInfo info = ConnectivityStateInfo.forTransientFailure(Status.UNAVAILABLE);
49     assertEquals(TRANSIENT_FAILURE, info.getState());
50     assertEquals(Status.UNAVAILABLE, info.getStatus());
51   }
52 
53   @Test(expected = IllegalArgumentException.class)
forTransientFailureInvalid()54   public void forTransientFailureInvalid() {
55     ConnectivityStateInfo.forTransientFailure(Status.OK);
56   }
57 
58   @Test
equality()59   public void equality() {
60     ConnectivityStateInfo info1 = ConnectivityStateInfo.forNonError(IDLE);
61     ConnectivityStateInfo info2 = ConnectivityStateInfo.forNonError(CONNECTING);
62     ConnectivityStateInfo info3 = ConnectivityStateInfo.forNonError(IDLE);
63     ConnectivityStateInfo info4 = ConnectivityStateInfo.forTransientFailure(Status.UNAVAILABLE);
64     ConnectivityStateInfo info5 = ConnectivityStateInfo.forTransientFailure(Status.INTERNAL);
65     ConnectivityStateInfo info6 = ConnectivityStateInfo.forTransientFailure(Status.INTERNAL);
66 
67     assertEquals(info1, info3);
68     assertNotSame(info1, info3);
69     assertEquals(info1.hashCode(), info3.hashCode());
70     assertEquals(info5, info6);
71     assertEquals(info5.hashCode(), info6.hashCode());
72     assertNotSame(info5, info6);
73 
74     assertNotEquals(info1, info2);
75     assertNotEquals(info1, info4);
76     assertNotEquals(info4, info6);
77 
78     assertFalse(info1.equals(null));
79     // Extra cast to avoid ErrorProne EqualsIncompatibleType failure
80     assertFalse(((Object) info1).equals(this));
81   }
82 }
83