blob: a07ce791dd417af6b58f0d518fe7e739fdf9c3d9 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE
* file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
* applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.apache.phoenix.query;
import com.google.common.collect.Lists;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.phoenix.schema.PColumnFamily;
import org.apache.phoenix.schema.PName;
import org.apache.phoenix.schema.PTable;
import org.apache.phoenix.schema.stats.GuidePostsKey;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class GuidePostsCacheWrapperTest {
@Mock
GuidePostsCache cache;
GuidePostsCacheWrapper wrapper;
byte[] table = org.apache.hadoop.hbase.util.Bytes.toBytes("tableName");
byte[] columnFamily1 = Bytes.toBytesBinary("cf1");
byte[] columnFamily2 = Bytes.toBytesBinary("cf2");
@Before
public void init() {
MockitoAnnotations.initMocks(this);
wrapper = new GuidePostsCacheWrapper(cache);
}
@Test
public void invalidateAllTableDescriptor() {
Set<byte[]> cfSet = new HashSet<>();
cfSet.add(columnFamily1);
cfSet.add(columnFamily2);
HTableDescriptor tableDesc = Mockito.mock(HTableDescriptor.class);
TableName tableName = TableName.valueOf(table);
Mockito.when(tableDesc.getFamiliesKeys()).thenReturn(cfSet);
Mockito.when(tableDesc.getTableName()).thenReturn(tableName);
wrapper.invalidateAll(tableDesc);
Mockito.verify(cache,Mockito.times(1)).invalidate(new GuidePostsKey(table,columnFamily1));
Mockito.verify(cache,Mockito.times(1)).invalidate(new GuidePostsKey(table,columnFamily2));
}
@Test
public void invalidateAllPTable(){
PTable ptable = Mockito.mock(PTable.class);
PName pname = Mockito.mock(PName.class);
PName pnamecf1 = Mockito.mock(PName.class);
PName pnamecf2 = Mockito.mock(PName.class);
Mockito.when(ptable.getPhysicalName()).thenReturn(pname);
Mockito.when(pname.getBytes()).thenReturn(table);
PColumnFamily cf1 = Mockito.mock(PColumnFamily.class);
PColumnFamily cf2 = Mockito.mock(PColumnFamily.class);
Mockito.when(cf1.getName()).thenReturn(pnamecf1);
Mockito.when(cf2.getName()).thenReturn(pnamecf2);
Mockito.when(pnamecf1.getBytes()).thenReturn(columnFamily1);
Mockito.when(pnamecf2.getBytes()).thenReturn(columnFamily2);
List<PColumnFamily> cfList = Lists.newArrayList(cf1,cf2);
Mockito.when(ptable.getColumnFamilies()).thenReturn(cfList);
wrapper.invalidateAll(ptable);
Mockito.verify(cache,Mockito.times(1)).invalidate(new GuidePostsKey(table,columnFamily1));
Mockito.verify(cache,Mockito.times(1)).invalidate(new GuidePostsKey(table,columnFamily2));
}
@Test(expected = NullPointerException.class)
public void invalidateAllTableDescriptorNull() {
HTableDescriptor tableDesc = null;
wrapper.invalidateAll(tableDesc);
}
@Test(expected = NullPointerException.class)
public void invalidateAllPTableNull(){
PTable ptable = null;
wrapper.invalidateAll(ptable);
}
}