blob: 20377a9e6c6ab3b94db6cd13e9fdb5541be9893b [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.fluo.command;
import com.beust.jcommander.JCommander;
import org.apache.fluo.api.data.Column;
import org.apache.fluo.api.data.RowColumn;
import org.apache.fluo.api.data.Span;
import org.apache.fluo.core.impl.SnapshotScanner;
import org.apache.fluo.core.util.ScanUtil;
import org.junit.Assert;
import org.junit.Test;
/**
* Unit test for ScanUtil
*/
public class ScanTest {
private SnapshotScanner.Opts parseArgs(String args) {
FluoScan.ScanOptions options = new FluoScan.ScanOptions();
JCommander jcommand = new JCommander(options);
jcommand.parse(args.split(" "));
ScanUtil.ScanOpts opts = options.getScanOpts();
return new SnapshotScanner.Opts(ScanUtil.getSpan(opts), ScanUtil.getColumns(opts), false);
}
@Test
public void testValidInput() {
SnapshotScanner.Opts config;
config = parseArgs("-a app");
Assert.assertEquals(RowColumn.EMPTY, config.getSpan().getStart());
Assert.assertEquals(RowColumn.EMPTY, config.getSpan().getEnd());
Assert.assertEquals(0, config.getColumns().size());
config = parseArgs("-a app -s start -e end -c col1,col2");
Assert.assertEquals(new RowColumn("start"), config.getSpan().getStart());
Assert.assertEquals(new RowColumn("end").following(), config.getSpan().getEnd());
Assert.assertEquals(2, config.getColumns().size());
Assert.assertTrue(config.getColumns().contains(new Column("col1")));
Assert.assertTrue(config.getColumns().contains(new Column("col2")));
config = parseArgs("-a app -s start -c cf:cq");
Assert.assertEquals(new RowColumn("start"), config.getSpan().getStart());
Assert.assertEquals(RowColumn.EMPTY, config.getSpan().getEnd());
Assert.assertEquals(1, config.getColumns().size());
Assert.assertTrue(config.getColumns().contains(new Column("cf", "cq")));
config = parseArgs("-a app -e end");
Assert.assertEquals(RowColumn.EMPTY, config.getSpan().getStart());
Assert.assertEquals(new RowColumn("end").following(), config.getSpan().getEnd());
Assert.assertEquals(0, config.getColumns().size());
config = parseArgs("-a app -p myprefix");
Assert.assertEquals(Span.prefix("myprefix"), config.getSpan());
Assert.assertEquals(0, config.getColumns().size());
config = parseArgs("-a app -r exactRow");
Assert.assertEquals(Span.exact("exactRow"), config.getSpan());
Assert.assertEquals(0, config.getColumns().size());
config = parseArgs("-a app -c cf1:cq1,cf2:cq2");
Assert.assertEquals(RowColumn.EMPTY, config.getSpan().getStart());
Assert.assertEquals(RowColumn.EMPTY, config.getSpan().getEnd());
Assert.assertEquals(2, config.getColumns().size());
Assert.assertTrue(config.getColumns().contains(new Column("cf1", "cq1")));
Assert.assertTrue(config.getColumns().contains(new Column("cf2", "cq2")));
}
@Test
public void testBadInputs() {
for (String extraArg : new String[] {"-r exactRow", "-s start", "-e end", "-s start -e end"}) {
try {
parseArgs("-a app -p prefix " + extraArg);
Assert.fail();
} catch (IllegalArgumentException e) {
}
}
for (String extraArg : new String[] {"-p prefix", "-s start", "-e end", "-s start -e end"}) {
try {
parseArgs("-a app -r exactRow " + extraArg);
Assert.fail();
} catch (IllegalArgumentException e) {
}
}
try {
parseArgs("-a app -c col1,cf:cq:oops");
Assert.fail();
} catch (IllegalArgumentException e) {
}
}
}