/** * diqube: Distributed Query Base. * * Copyright (C) 2015 Bastian Gloeckle * * This file is part of diqube. * * diqube is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.diqube.metadata; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; import org.diqube.data.column.ColumnType; import org.diqube.data.column.StandardColumnShard; import org.diqube.data.table.TableShard; import org.diqube.thrift.base.thrift.FieldMetadata; import org.diqube.thrift.base.thrift.FieldType; import org.diqube.thrift.base.thrift.TableMetadata; import org.diqube.util.Pair; import org.diqube.util.Triple; import org.mockito.Mockito; import org.testng.Assert; /** * * @author Bastian Gloeckle */ public class TableMetadataTestUtil { public static final String TABLE = "tab"; public static final long LOWEST_ROW_ID = 100L; @SafeVarargs public static final TableShard mockShard(Pair<String, ColumnType>... targetCols) { TableShard res = Mockito.mock(TableShard.class); Map<String, StandardColumnShard> cols = new HashMap<>(); for (Pair<String, ColumnType> p : targetCols) { StandardColumnShard col = Mockito.mock(StandardColumnShard.class); Mockito.when(col.getName()).thenReturn(p.getLeft()); Mockito.when(col.getColumnType()).thenReturn(p.getRight()); cols.put(p.getLeft(), col); } Mockito.when(res.getColumns()).thenReturn(cols); Mockito.when(res.getTableName()).thenReturn(TABLE); Mockito.when(res.getLowestRowId()).thenReturn(LOWEST_ROW_ID); return res; } @SafeVarargs public final static TableMetadata createMetadata(Triple<String, FieldType, Boolean>... targetFields) { List<FieldMetadata> fields = new ArrayList<>(); for (Triple<String, FieldType, Boolean> t : targetFields) fields.add(new FieldMetadata(t.getLeft(), t.getMiddle(), t.getRight())); return new TableMetadata(TABLE, fields); } public static void assertField(TableMetadata tableMetadata, String fieldName, FieldType fieldType, boolean isRepeated) { Optional<FieldMetadata> field = tableMetadata.getFields().stream().filter(f -> f.getFieldName().equals(fieldName)).findAny(); Assert.assertTrue(field.isPresent(), "Expected to have metadata for field '" + fieldName + "'"); Assert.assertEquals(field.get().getFieldType(), fieldType, "Expected correct fieldType for field '" + fieldName + "'"); Assert.assertEquals(field.get().isRepeated(), isRepeated, "Expected correct isRepeated for field '" + fieldName + "'"); Assert.assertEquals(field.get().getFieldName(), fieldName, "Expected correct fieldName in FieldMetadata object for field '" + fieldName + "'"); } }