/*
*
* 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.hadoop.hbase.rest.model;
import org.apache.hadoop.hbase.testclassification.RestTests;
import org.apache.hadoop.hbase.testclassification.SmallTests;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.experimental.categories.Category;
@Category({RestTests.class, SmallTests.class})
public class TestScannerModel extends TestModelBase<ScannerModel> {
private static final String PRIVATE = "private";
private static final String PUBLIC = "public";
private static final byte[] START_ROW = Bytes.toBytes("abracadabra");
private static final byte[] END_ROW = Bytes.toBytes("zzyzx");
private static final byte[] COLUMN1 = Bytes.toBytes("column1");
private static final byte[] COLUMN2 = Bytes.toBytes("column2:foo");
private static final long START_TIME = 1245219839331L;
private static final long END_TIME = 1245393318192L;
private static final int CACHING = 1000;
private static final int BATCH = 100;
private static final boolean CACHE_BLOCKS = false;
public TestScannerModel() throws Exception {
super(ScannerModel.class);
AS_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
+ "<Scanner batch=\"100\" cacheBlocks=\"false\" caching=\"1000\" endRow=\"enp5eng=\" "
+ "endTime=\"1245393318192\" maxVersions=\"2147483647\" startRow=\"YWJyYWNhZGFicmE=\" "
+ "startTime=\"1245219839331\">"
+ "<column>Y29sdW1uMQ==</column><column>Y29sdW1uMjpmb28=</column>"
+ "<labels>private</labels><labels>public</labels>"
+ "</Scanner>";
AS_JSON = "{\"batch\":100,\"caching\":1000,\"cacheBlocks\":false,\"endRow\":\"enp5eng=\","
+ "\"endTime\":1245393318192,\"maxVersions\":2147483647,\"startRow\":\"YWJyYWNhZGFicmE=\","
+ "\"startTime\":1245219839331,\"column\":[\"Y29sdW1uMQ==\",\"Y29sdW1uMjpmb28=\"],"
+"\"labels\":[\"private\",\"public\"]"
+"}";
AS_PB = "CgthYnJhY2FkYWJyYRIFenp5engaB2NvbHVtbjEaC2NvbHVtbjI6Zm9vIGQo47qL554kMLDi57mf"
+ "JDj/////B0joB1IHcHJpdmF0ZVIGcHVibGljWAA=";
}
protected ScannerModel buildTestModel() {
ScannerModel model = new ScannerModel();
model.setStartRow(START_ROW);
model.setEndRow(END_ROW);
model.addColumn(COLUMN1);
model.addColumn(COLUMN2);
model.setStartTime(START_TIME);
model.setEndTime(END_TIME);
model.setBatch(BATCH);
model.setCaching(CACHING);
model.addLabel(PRIVATE);
model.addLabel(PUBLIC);
model.setCacheBlocks(CACHE_BLOCKS);
return model;
}
protected void checkModel(ScannerModel model) {
assertTrue(Bytes.equals(model.getStartRow(), START_ROW));
assertTrue(Bytes.equals(model.getEndRow(), END_ROW));
boolean foundCol1 = false, foundCol2 = false;
for (byte[] column : model.getColumns()) {
if (Bytes.equals(column, COLUMN1)) {
foundCol1 = true;
} else if (Bytes.equals(column, COLUMN2)) {
foundCol2 = true;
}
}
assertTrue(foundCol1);
assertTrue(foundCol2);
assertEquals(model.getStartTime(), START_TIME);
assertEquals(model.getEndTime(), END_TIME);
assertEquals(model.getBatch(), BATCH);
assertEquals(model.getCaching(), CACHING);
assertEquals(model.getCacheBlocks(), CACHE_BLOCKS);
boolean foundLabel1 = false;
boolean foundLabel2 = false;
if (model.getLabels() != null && model.getLabels().size() > 0) {
for (String label : model.getLabels()) {
if (label.equals(PRIVATE)) {
foundLabel1 = true;
} else if (label.equals(PUBLIC)) {
foundLabel2 = true;
}
}
assertTrue(foundLabel1);
assertTrue(foundLabel2);
}
}
}