1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.master;
19
20 import org.apache.hadoop.hbase.testclassification.MediumTests;
21 import org.apache.hadoop.hbase.ServerName;
22 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
23 import org.apache.hadoop.hbase.util.ManualEnvironmentEdge;
24 import org.apache.hadoop.hbase.util.Pair;
25 import org.junit.Assert;
26 import org.junit.Test;
27 import org.junit.experimental.categories.Category;
28
29 import java.util.List;
30 import java.util.Set;
31
32 import static org.junit.Assert.assertFalse;
33 import static org.junit.Assert.assertTrue;
34
35 @Category(MediumTests.class)
36 public class TestDeadServer {
37 final ServerName hostname123 = ServerName.valueOf("127.0.0.1", 123, 3L);
38 final ServerName hostname123_2 = ServerName.valueOf("127.0.0.1", 123, 4L);
39 final ServerName hostname1234 = ServerName.valueOf("127.0.0.2", 1234, 4L);
40 final ServerName hostname12345 = ServerName.valueOf("127.0.0.2", 12345, 4L);
41
42 @Test public void testIsDead() {
43 DeadServer ds = new DeadServer();
44 ds.add(hostname123);
45 assertTrue(ds.areDeadServersInProgress());
46 ds.finish(hostname123);
47 assertFalse(ds.areDeadServersInProgress());
48
49 ds.add(hostname1234);
50 assertTrue(ds.areDeadServersInProgress());
51 ds.finish(hostname1234);
52 assertFalse(ds.areDeadServersInProgress());
53
54 ds.add(hostname12345);
55 assertTrue(ds.areDeadServersInProgress());
56 ds.finish(hostname12345);
57 assertFalse(ds.areDeadServersInProgress());
58
59
60
61
62 final ServerName deadServer = ServerName.valueOf("127.0.0.1", 9090, 112321L);
63 assertFalse(ds.cleanPreviousInstance(deadServer));
64 ds.add(deadServer);
65 assertTrue(ds.isDeadServer(deadServer));
66 Set<ServerName> deadServerNames = ds.copyServerNames();
67 for (ServerName eachDeadServer : deadServerNames) {
68 Assert.assertNotNull(ds.getTimeOfDeath(eachDeadServer));
69 }
70 final ServerName deadServerHostComingAlive =
71 ServerName.valueOf("127.0.0.1", 9090, 223341L);
72 assertTrue(ds.cleanPreviousInstance(deadServerHostComingAlive));
73 assertFalse(ds.isDeadServer(deadServer));
74 assertFalse(ds.cleanPreviousInstance(deadServerHostComingAlive));
75 }
76
77
78 @Test
79 public void testSortExtract(){
80 ManualEnvironmentEdge mee = new ManualEnvironmentEdge();
81 EnvironmentEdgeManager.injectEdge(mee);
82 mee.setValue(1);
83
84 DeadServer d = new DeadServer();
85
86
87 d.add(hostname123);
88 mee.incValue(1);
89 d.add(hostname1234);
90 mee.incValue(1);
91 d.add(hostname12345);
92
93 List<Pair<ServerName, Long>> copy = d.copyDeadServersSince(2L);
94 Assert.assertEquals(2, copy.size());
95
96 Assert.assertEquals(hostname1234, copy.get(0).getFirst());
97 Assert.assertEquals(new Long(2L), copy.get(0).getSecond());
98
99 Assert.assertEquals(hostname12345, copy.get(1).getFirst());
100 Assert.assertEquals(new Long(3L), copy.get(1).getSecond());
101
102 EnvironmentEdgeManager.reset();
103 }
104
105 @Test
106 public void testClean(){
107 DeadServer d = new DeadServer();
108 d.add(hostname123);
109
110 d.cleanPreviousInstance(hostname12345);
111 Assert.assertFalse(d.isEmpty());
112
113 d.cleanPreviousInstance(hostname1234);
114 Assert.assertFalse(d.isEmpty());
115
116 d.cleanPreviousInstance(hostname123_2);
117 Assert.assertTrue(d.isEmpty());
118 }
119
120 }
121