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
10 * http://www.apache.org/licenses/LICENSE-2.0
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
{
38 public static final HBaseClassTestRule CLASS_RULE
=
39 HBaseClassTestRule
.forClass(TestCanaryStatusServlet
.class);
42 public void testFailures() throws IOException
{
43 CanaryTool
.RegionStdOutSink regionStdOutSink
= new CanaryTool
.RegionStdOutSink();
45 ServerName serverName1
= ServerName
.valueOf("staging-st04.server:22600",
47 TableName fakeTableName1
= TableName
.valueOf("fakeTableName1");
48 RegionInfo regionInfo1
= RegionInfoBuilder
.newBuilder(fakeTableName1
).build();
50 ServerName serverName2
= ServerName
.valueOf("staging-st05.server:22600",
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"));
69 public void testReadFailuresOnly() throws IOException
{
70 CanaryTool
.RegionStdOutSink regionStdOutSink
= new CanaryTool
.RegionStdOutSink();
72 ServerName serverName1
= ServerName
.valueOf("staging-st04.server:22600",
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"));
87 public void testWriteFailuresOnly() throws IOException
{
88 CanaryTool
.RegionStdOutSink regionStdOutSink
= new CanaryTool
.RegionStdOutSink();
90 ServerName serverName2
= ServerName
.valueOf("staging-st05.server:22600",
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"));
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"));