View Javadoc

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    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
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.
17   */
18  package org.apache.hadoop.hbase.hbtop.screen.top;
19  
20  import static org.hamcrest.CoreMatchers.is;
21  import static org.junit.Assert.assertThat;
22  import static org.mockito.Mockito.argThat;
23  import static org.mockito.Mockito.verify;
24  
25  import java.util.ArrayList;
26  import java.util.List;
27  import org.apache.hadoop.hbase.hbtop.RecordFilter;
28  import org.apache.hadoop.hbase.hbtop.field.Field;
29  import org.apache.hadoop.hbase.hbtop.field.FieldInfo;
30  import org.apache.hadoop.hbase.hbtop.mode.Mode;
31  import org.apache.hadoop.hbase.hbtop.screen.ScreenView;
32  import org.apache.hadoop.hbase.testclassification.SmallTests;
33  import org.junit.Before;
34  import org.junit.Test;
35  import org.junit.experimental.categories.Category;
36  import org.junit.runner.RunWith;
37  import org.mockito.ArgumentMatcher;
38  import org.mockito.Mock;
39  import org.mockito.runners.MockitoJUnitRunner;
40  
41  
42  @Category(SmallTests.class)
43  @RunWith(MockitoJUnitRunner.class)
44  public class TestFilterDisplayModeScreenPresenter {
45  
46    @Mock
47    private FilterDisplayModeScreenView filterDisplayModeScreenView;
48  
49    @Mock
50    private TopScreenView topScreenView;
51  
52    private FilterDisplayModeScreenPresenter filterDisplayModeScreenPresenter;
53  
54    @Before
55    public void setup() {
56      List<Field> fields = new ArrayList<>();
57      for (FieldInfo fieldInfo : Mode.REGION.getFieldInfos()) {
58        fields.add(fieldInfo.getField());
59      }
60  
61      List<RecordFilter>  filters = new ArrayList<>();
62      filters.add(RecordFilter.parse("NAMESPACE==namespace", fields, true));
63      filters.add(RecordFilter.parse("TABLE==table", fields, true));
64  
65      filterDisplayModeScreenPresenter = new FilterDisplayModeScreenPresenter(
66        filterDisplayModeScreenView, filters, topScreenView);
67    }
68  
69    @Test
70    public void testInit() {
71      filterDisplayModeScreenPresenter.init();
72  
73      verify(filterDisplayModeScreenView).showFilters(argThat(
74        new ArgumentMatcher<List<RecordFilter>>() {
75          @Override
76          @SuppressWarnings("unchecked")
77          public boolean matches(Object argument) {
78            List<RecordFilter> filters = (List<RecordFilter>) argument;
79            return filters.size() == 2
80              && filters.get(0).toString().equals("NAMESPACE==namespace")
81              && filters.get(1).toString().equals("TABLE==table");
82          }
83        }));
84    }
85  
86    @Test
87    public void testReturnToTopScreen() {
88      assertThat(filterDisplayModeScreenPresenter.returnToNextScreen(),
89        is((ScreenView) topScreenView));
90    }
91  }