HBASE-26416 Implement a new method for region replication instead of using replay...
[hbase.git] / hbase-server / src / test / java / org / apache / hadoop / hbase / tool / TestCanaryStatusServlet.java
blob56c02a52fad0f2b1a39f2764064b14126aa4c3ed
1 /**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 * <p>
10 * http://www.apache.org/licenses/LICENSE-2.0
11 * <p>
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
18 package org.apache.hadoop.hbase.tool;
20 import java.io.IOException;
21 import java.io.StringWriter;
22 import org.apache.hadoop.hbase.HBaseClassTestRule;
23 import org.apache.hadoop.hbase.ServerName;
24 import org.apache.hadoop.hbase.TableName;
25 import org.apache.hadoop.hbase.client.RegionInfo;
26 import org.apache.hadoop.hbase.client.RegionInfoBuilder;
27 import org.apache.hadoop.hbase.testclassification.SmallTests;
28 import org.apache.hadoop.hbase.tmpl.tool.CanaryStatusTmpl;
29 import org.junit.Assert;
30 import org.junit.ClassRule;
31 import org.junit.Test;
32 import org.junit.experimental.categories.Category;
35 @Category({ SmallTests.class })
36 public class TestCanaryStatusServlet {
37 @ClassRule
38 public static final HBaseClassTestRule CLASS_RULE =
39 HBaseClassTestRule.forClass(TestCanaryStatusServlet.class);
41 @Test
42 public void testFailures() throws IOException {
43 CanaryTool.RegionStdOutSink regionStdOutSink = new CanaryTool.RegionStdOutSink();
45 ServerName serverName1 = ServerName.valueOf("staging-st04.server:22600",
46 1584180761635L);
47 TableName fakeTableName1 = TableName.valueOf("fakeTableName1");
48 RegionInfo regionInfo1 = RegionInfoBuilder.newBuilder(fakeTableName1).build();
50 ServerName serverName2 = ServerName.valueOf("staging-st05.server:22600",
51 1584180761636L);
52 TableName fakeTableName2 = TableName.valueOf("fakeTableName2");
53 RegionInfo regionInfo2 = RegionInfoBuilder.newBuilder(fakeTableName2).build();
55 regionStdOutSink.publishReadFailure(serverName1, regionInfo1, new IOException());
56 regionStdOutSink.publishWriteFailure(serverName2, regionInfo2, new IOException());
57 CanaryStatusTmpl tmpl = new CanaryStatusTmpl();
58 StringWriter renderResultWriter = new StringWriter();
59 tmpl.render(renderResultWriter, regionStdOutSink);
60 String renderResult = renderResultWriter.toString();
61 Assert.assertTrue(renderResult.contains("staging-st04.server,22600"));
62 Assert.assertTrue(renderResult.contains("fakeTableName1"));
63 Assert.assertTrue(renderResult.contains("staging-st05.server,22600"));
64 Assert.assertTrue(renderResult.contains("fakeTableName2"));
68 @Test
69 public void testReadFailuresOnly() throws IOException {
70 CanaryTool.RegionStdOutSink regionStdOutSink = new CanaryTool.RegionStdOutSink();
72 ServerName serverName1 = ServerName.valueOf("staging-st04.server:22600",
73 1584180761635L);
74 TableName fakeTableName1 = TableName.valueOf("fakeTableName1");
75 RegionInfo regionInfo1 = RegionInfoBuilder.newBuilder(fakeTableName1).build();
77 regionStdOutSink.publishReadFailure(serverName1, regionInfo1, new IOException());
78 CanaryStatusTmpl tmpl = new CanaryStatusTmpl();
79 StringWriter renderResultWriter = new StringWriter();
80 tmpl.render(renderResultWriter, regionStdOutSink);
81 String renderResult = renderResultWriter.toString();
82 Assert.assertTrue(renderResult.contains("staging-st04.server,22600"));
83 Assert.assertTrue(renderResult.contains("fakeTableName1"));
86 @Test
87 public void testWriteFailuresOnly() throws IOException {
88 CanaryTool.RegionStdOutSink regionStdOutSink = new CanaryTool.RegionStdOutSink();
90 ServerName serverName2 = ServerName.valueOf("staging-st05.server:22600",
91 1584180761636L);
92 TableName fakeTableName2 = TableName.valueOf("fakeTableName2");
93 RegionInfo regionInfo2 = RegionInfoBuilder.newBuilder(fakeTableName2).build();
95 regionStdOutSink.publishReadFailure(serverName2, regionInfo2, new IOException());
96 CanaryStatusTmpl tmpl = new CanaryStatusTmpl();
97 StringWriter renderResultWriter = new StringWriter();
98 tmpl.render(renderResultWriter, regionStdOutSink);
99 String renderResult = renderResultWriter.toString();
100 Assert.assertTrue(renderResult.contains("staging-st05.server,22600"));
101 Assert.assertTrue(renderResult.contains("fakeTableName2"));
105 @Test
106 public void testNoFailures() throws IOException {
107 CanaryTool.RegionStdOutSink regionStdOutSink = new CanaryTool.RegionStdOutSink();
108 CanaryStatusTmpl tmpl = new CanaryStatusTmpl();
109 StringWriter renderResultWriter = new StringWriter();
110 tmpl.render(renderResultWriter, regionStdOutSink);
111 String renderResult = renderResultWriter.toString();
112 Assert.assertTrue(renderResult.contains("Total Failed Servers: 0"));
113 Assert.assertTrue(renderResult.contains("Total Failed Tables: 0"));