mirror of https://github.com/apache/nifi.git
NIFI-8372 Refactoring ScanAccumulo unit test and add test for value in result
This closes #4998. Signed-off-by: Peter Turcsanyi <turcsanyi@apache.org>
This commit is contained in:
parent
f0ca63b2ab
commit
78c03795f6
|
@ -16,25 +16,20 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.apache.nifi.accumulo.processors;
|
package org.apache.nifi.accumulo.processors;
|
||||||
import org.apache.accumulo.core.client.AccumuloClient;
|
|
||||||
import org.apache.accumulo.core.client.AccumuloException;
|
import org.apache.accumulo.core.client.AccumuloException;
|
||||||
import org.apache.accumulo.core.client.AccumuloSecurityException;
|
import org.apache.accumulo.core.client.AccumuloSecurityException;
|
||||||
import org.apache.accumulo.core.client.BatchScanner;
|
|
||||||
import org.apache.accumulo.core.client.BatchWriterConfig;
|
import org.apache.accumulo.core.client.BatchWriterConfig;
|
||||||
import org.apache.accumulo.core.client.MultiTableBatchWriter;
|
import org.apache.accumulo.core.client.MultiTableBatchWriter;
|
||||||
import org.apache.accumulo.core.client.TableExistsException;
|
import org.apache.accumulo.core.client.TableExistsException;
|
||||||
import org.apache.accumulo.core.client.TableNotFoundException;
|
import org.apache.accumulo.core.client.TableNotFoundException;
|
||||||
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
|
|
||||||
import org.apache.accumulo.core.data.Key;
|
|
||||||
import org.apache.accumulo.core.data.Mutation;
|
import org.apache.accumulo.core.data.Mutation;
|
||||||
import org.apache.accumulo.core.data.Range;
|
|
||||||
import org.apache.accumulo.core.data.Value;
|
import org.apache.accumulo.core.data.Value;
|
||||||
import org.apache.accumulo.core.security.Authorizations;
|
import org.apache.accumulo.core.security.Authorizations;
|
||||||
import org.apache.accumulo.core.security.ColumnVisibility;
|
import org.apache.accumulo.core.security.ColumnVisibility;
|
||||||
import org.apache.accumulo.minicluster.MiniAccumuloCluster;
|
import org.apache.accumulo.minicluster.MiniAccumuloCluster;
|
||||||
import org.apache.commons.lang3.SystemUtils;
|
import org.apache.commons.lang3.SystemUtils;
|
||||||
import org.apache.hadoop.io.Text;
|
import org.apache.hadoop.io.Text;
|
||||||
import org.apache.nifi.accumulo.controllerservices.AccumuloService;
|
|
||||||
import org.apache.nifi.accumulo.controllerservices.MockAccumuloService;
|
import org.apache.nifi.accumulo.controllerservices.MockAccumuloService;
|
||||||
import org.apache.nifi.reporting.InitializationException;
|
import org.apache.nifi.reporting.InitializationException;
|
||||||
import org.apache.nifi.serialization.record.MockRecordWriter;
|
import org.apache.nifi.serialization.record.MockRecordWriter;
|
||||||
|
@ -47,197 +42,222 @@ import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Random;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class ScanAccumuloIT {
|
public class ScanAccumuloIT {
|
||||||
|
|
||||||
public static final String DEFAULT_COLUMN_FAMILY = "family1";
|
public static final String DEFAULT_COLUMN_FAMILY = "family1";
|
||||||
|
private static final MockRecordWriter PARSER = new MockRecordWriter();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Though deprecated in 2.0 it still functions very well
|
* Though deprecated in 2.0 it still functions very well
|
||||||
*/
|
*/
|
||||||
private static MiniAccumuloCluster accumulo;
|
private static MiniAccumuloCluster accumulo;
|
||||||
|
|
||||||
private TestRunner getTestRunner(String table, String columnFamily) {
|
|
||||||
final TestRunner runner = TestRunners.newTestRunner(ScanAccumulo.class);
|
|
||||||
runner.enforceReadStreamsClosed(false);
|
|
||||||
runner.setProperty(ScanAccumulo.TABLE_NAME, table);
|
|
||||||
return runner;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
public static void setupInstance() throws IOException, InterruptedException, AccumuloSecurityException, AccumuloException, TableExistsException {
|
public static void setupInstance() throws IOException, InterruptedException {
|
||||||
Assume.assumeTrue("Test only runs on *nix", !SystemUtils.IS_OS_WINDOWS);
|
Assume.assumeTrue("Test only runs on *nix", !SystemUtils.IS_OS_WINDOWS);
|
||||||
Path tempDirectory = Files.createTempDirectory("acc"); // JUnit and Guava supply mechanisms for creating temp directories
|
Path tempDirectory = Files.createTempDirectory("acc"); // JUnit and Guava supply mechanisms for creating temp directories
|
||||||
accumulo = new MiniAccumuloCluster(tempDirectory.toFile(), "password");
|
accumulo = new MiniAccumuloCluster(tempDirectory.toFile(), "password");
|
||||||
accumulo.start();
|
accumulo.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Set<Key> generateTestData(TestRunner runner, String definedRow, String table, boolean valueincq, String delim, String cv)
|
|
||||||
throws IOException, AccumuloSecurityException, AccumuloException, TableNotFoundException {
|
|
||||||
|
|
||||||
BatchWriterConfig writerConfig = new BatchWriterConfig();
|
|
||||||
writerConfig.setMaxWriteThreads(2);
|
|
||||||
writerConfig.setMaxMemory(1024*1024);
|
|
||||||
MultiTableBatchWriter writer = accumulo.createAccumuloClient("root", new PasswordToken("password")).createMultiTableBatchWriter(writerConfig);
|
|
||||||
|
|
||||||
long ts = System.currentTimeMillis();
|
|
||||||
|
|
||||||
|
|
||||||
final MockRecordWriter parser = new MockRecordWriter();
|
|
||||||
try {
|
|
||||||
runner.addControllerService("parser", parser);
|
|
||||||
} catch (InitializationException e) {
|
|
||||||
throw new IOException(e);
|
|
||||||
}
|
|
||||||
runner.enableControllerService(parser);
|
|
||||||
runner.setProperty(ScanAccumulo.RECORD_WRITER,"parser");
|
|
||||||
|
|
||||||
|
|
||||||
Set<Key> expectedKeys = new HashSet<>();
|
|
||||||
ColumnVisibility colViz = new ColumnVisibility();
|
|
||||||
if (null != cv)
|
|
||||||
colViz = new ColumnVisibility(cv);
|
|
||||||
Random random = new Random();
|
|
||||||
for (int x = 0; x < 5; x++) {
|
|
||||||
//final int row = random.nextInt(10000000);
|
|
||||||
final String row = definedRow.isEmpty() ? UUID.randomUUID().toString() : definedRow;
|
|
||||||
final String cf = UUID.randomUUID().toString();
|
|
||||||
final String cq = UUID.randomUUID().toString();
|
|
||||||
Text keyCq = new Text("name");
|
|
||||||
if (valueincq){
|
|
||||||
if (null != delim && !delim.isEmpty())
|
|
||||||
keyCq.append(delim.getBytes(),0,delim.length());
|
|
||||||
keyCq.append(cf.getBytes(),0,cf.length());
|
|
||||||
}
|
|
||||||
expectedKeys.add(new Key(new Text(row), new Text(DEFAULT_COLUMN_FAMILY), keyCq, colViz,ts));
|
|
||||||
keyCq = new Text("code");
|
|
||||||
if (valueincq){
|
|
||||||
if (null != delim && !delim.isEmpty())
|
|
||||||
keyCq.append(delim.getBytes(),0,delim.length());
|
|
||||||
keyCq.append(cq.getBytes(),0,cq.length());
|
|
||||||
}
|
|
||||||
expectedKeys.add(new Key(new Text(row), new Text(DEFAULT_COLUMN_FAMILY), keyCq, colViz, ts));
|
|
||||||
Mutation m = new Mutation(row);
|
|
||||||
m.put(new Text(DEFAULT_COLUMN_FAMILY),new Text(keyCq),colViz,ts, new Value());
|
|
||||||
writer.getBatchWriter(table).addMutation(m);
|
|
||||||
}
|
|
||||||
writer.flush();
|
|
||||||
return expectedKeys;
|
|
||||||
}
|
|
||||||
|
|
||||||
void verifyKey(String tableName, Set<Key> expectedKeys, Authorizations auths) throws AccumuloSecurityException, AccumuloException, TableNotFoundException {
|
|
||||||
if (null == auths)
|
|
||||||
auths = new Authorizations();
|
|
||||||
try(BatchScanner scanner = accumulo.createAccumuloClient("root",new PasswordToken("password")).createBatchScanner(tableName,auths,1)) {
|
|
||||||
List<Range> ranges = new ArrayList<>();
|
|
||||||
ranges.add(new Range());
|
|
||||||
scanner.setRanges(ranges);
|
|
||||||
for (Map.Entry<Key, Value> kv : scanner) {
|
|
||||||
Assert.assertTrue(kv.getKey() + " not in expected keys",expectedKeys.remove(kv.getKey()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Assert.assertEquals(0, expectedKeys.size());
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void basicPutSetup(boolean sendFlowFile, boolean valueincq) throws Exception {
|
|
||||||
basicPutSetup(sendFlowFile,"","","","",valueincq,null,"",null,false,5);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void basicPutSetup(boolean sendFlowFile, boolean valueincq, final String delim) throws Exception {
|
|
||||||
basicPutSetup(sendFlowFile,"","","","",valueincq,delim,"",null,false,5);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void basicPutSetup(boolean sendFlowFile,String row,String endrow, String cf,String endcf, boolean valueincq,String delim,
|
|
||||||
String auths, Authorizations defaultVis, boolean deletes, int expected) throws Exception {
|
|
||||||
String tableName = UUID.randomUUID().toString();
|
|
||||||
tableName=tableName.replace("-","a");
|
|
||||||
AccumuloClient client = accumulo.createAccumuloClient("root",new PasswordToken("password"));
|
|
||||||
client.tableOperations().create(tableName);
|
|
||||||
|
|
||||||
if (null != defaultVis)
|
|
||||||
client.securityOperations().changeUserAuthorizations("root",defaultVis);
|
|
||||||
|
|
||||||
TestRunner runner = getTestRunner(tableName, DEFAULT_COLUMN_FAMILY);
|
|
||||||
runner.setProperty(ScanAccumulo.START_KEY, row);
|
|
||||||
if (!cf.isEmpty())
|
|
||||||
runner.setProperty(ScanAccumulo.COLUMNFAMILY, cf);
|
|
||||||
if (!endcf.isEmpty())
|
|
||||||
runner.setProperty(ScanAccumulo.COLUMNFAMILY_END, endcf);
|
|
||||||
runner.setProperty(ScanAccumulo.AUTHORIZATIONS, auths);
|
|
||||||
runner.setProperty(ScanAccumulo.END_KEY, endrow);
|
|
||||||
|
|
||||||
AccumuloService service = MockAccumuloService.getService(runner,accumulo.getZooKeepers(),accumulo.getInstanceName(),"root","password");
|
|
||||||
Set<Key> expectedKeys = generateTestData(runner,row,tableName,valueincq,delim, auths);
|
|
||||||
if (sendFlowFile) {
|
|
||||||
runner.enqueue("Test".getBytes("UTF-8")); // This is to coax the processor into reading the data in the reader.l
|
|
||||||
}
|
|
||||||
runner.run();
|
|
||||||
|
|
||||||
|
|
||||||
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
|
||||||
for(MockFlowFile ff : results){
|
|
||||||
String attr = ff.getAttribute("record.count");
|
|
||||||
Assert.assertEquals(expected,Integer.valueOf(attr).intValue());
|
|
||||||
}
|
|
||||||
Assert.assertTrue("Wrong count, received " + results.size(), results.size() == 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPullDatWithFlowFile() throws Exception {
|
public void testPullDatWithFlowFile() throws Exception {
|
||||||
basicPutSetup(true,false);
|
TestRunner runner = createTestEnvironment("","","","",false,"",null);
|
||||||
|
// This is to coax the processor into reading the data in the reader.
|
||||||
|
runner.enqueue("Test".getBytes(StandardCharsets.UTF_8));
|
||||||
|
|
||||||
|
runner.run();
|
||||||
|
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong count, received " + results.size(), 1, results.size());
|
||||||
|
assertRecordCount(results, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPullDatWithOutFlowFile() throws Exception {
|
public void testPullDatWithOutFlowFile() throws Exception {
|
||||||
basicPutSetup(false,false);
|
TestRunner runner = createTestEnvironment("","","","",false,"",null);
|
||||||
|
|
||||||
|
runner.run();
|
||||||
|
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong count, received " + results.size(), 1, results.size());
|
||||||
|
assertRecordCount(results, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSameRowCf() throws Exception {
|
public void testSameRowCf() throws Exception {
|
||||||
basicPutSetup(false,"2019","2019","family1","family2",false,null,"",null,false,1);
|
TestRunner runner = createTestEnvironment("2019","2019","family1","family2",false,"",null);
|
||||||
|
|
||||||
|
runner.run();
|
||||||
|
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong count, received " + results.size(), 1, results.size());
|
||||||
|
assertRecordCount(results, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSameRowCfValueInCq() throws Exception {
|
public void testSameRowCfValueInCq() throws Exception {
|
||||||
basicPutSetup(false,"2019","2019","family1","family2",true,null,"",null,false,5);
|
TestRunner runner = createTestEnvironment("2019","2019","family1","family2",true,"",null);
|
||||||
|
|
||||||
|
runner.run();
|
||||||
|
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong count, received " + results.size(), 1, results.size());
|
||||||
|
assertRecordCount(results, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSameRowCfValueInCqWithAuths() throws Exception {
|
public void testSameRowCfValueInCqWithAuths() throws Exception {
|
||||||
basicPutSetup(false,"2019","2019","family1","family2",true,null,"abcd",new Authorizations("abcd"),false,5);
|
TestRunner runner = createTestEnvironment("2019","2019","family1","family2",true,"abcd",new Authorizations("abcd"));
|
||||||
|
|
||||||
|
runner.run();
|
||||||
|
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong count, received " + results.size(), 1, results.size());
|
||||||
|
assertRecordCount(results, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = AssertionError.class)
|
@Test(expected = AssertionError.class)
|
||||||
public void testSameRowCfValueInCqErrorCfEnd() throws Exception {
|
public void testSameRowCfValueInCqErrorCfEnd() throws Exception {
|
||||||
basicPutSetup(false,"2019","2019","family1","",true,null,"",null,false,5);
|
TestRunner runner = createTestEnvironment("2019","2019","family1","",true,"",null);
|
||||||
|
|
||||||
|
runner.run();
|
||||||
|
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong count, received " + results.size(), 1, results.size());
|
||||||
|
assertRecordCount(results, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = AssertionError.class)
|
@Test(expected = AssertionError.class)
|
||||||
public void testSameRowCfValueInCqErrorCf() throws Exception {
|
public void testSameRowCfValueInCqErrorCf() throws Exception {
|
||||||
basicPutSetup(false,"2019","2019","","family2",true,null,"",null,false,5);
|
TestRunner runner = createTestEnvironment("2019","2019","","family2",true,"",null);
|
||||||
|
|
||||||
|
runner.run();
|
||||||
|
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong count, received " + results.size(), 1, results.size());
|
||||||
|
assertRecordCount(results, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = AssertionError.class)
|
@Test(expected = AssertionError.class)
|
||||||
public void testSameRowCfValueInCqErrorNotLess() throws Exception {
|
public void testSameRowCfValueInCqErrorNotLess() throws Exception {
|
||||||
basicPutSetup(false,"2019","2019","family1","family1",true,null,"",null,false,5);
|
TestRunner runner = createTestEnvironment("2019","2019","family1","family1",true,"",null);
|
||||||
|
|
||||||
|
runner.run();
|
||||||
|
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong count, received " + results.size(), 1, results.size());
|
||||||
|
assertRecordCount(results, 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testValueIsPresentByDefault() throws Exception {
|
||||||
|
TestRunner runner = createTestEnvironment("2019","2019","family1","family2",false,"",null);
|
||||||
|
|
||||||
|
runner.run();
|
||||||
|
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong count, received " + results.size(), 1, results.size());
|
||||||
|
assertValueInResult(results, "\"Test\"\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testValueIsNotPresentWhenDisabled() throws Exception {
|
||||||
|
TestRunner runner = createTestEnvironment("2019", "2019", "family1", "family2", false, "", null);
|
||||||
|
runner.setProperty(ScanAccumulo.VALUE_INCLUDED_IN_RESULT, "False");
|
||||||
|
|
||||||
|
runner.run();
|
||||||
|
List<MockFlowFile> results = runner.getFlowFilesForRelationship(ScanAccumulo.REL_SUCCESS);
|
||||||
|
|
||||||
|
Assert.assertEquals("Wrong count, received " + results.size(), 1, results.size());
|
||||||
|
assertValueInResult(results, "\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
private TestRunner createTestEnvironment(String row, String endrow, String cf, String endcf, boolean valueincq,
|
||||||
|
String auths, Authorizations defaultVis) throws Exception {
|
||||||
|
String tableName = createTable(defaultVis);
|
||||||
|
TestRunner runner = configureTestRunner(row, endrow, cf, endcf, auths, tableName);
|
||||||
|
generateTestData(row,tableName,valueincq, auths);
|
||||||
|
return runner;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String createTable(Authorizations defaultVis) throws AccumuloException, AccumuloSecurityException, TableExistsException {
|
||||||
|
String tableName = UUID.randomUUID().toString();
|
||||||
|
tableName=tableName.replace("-","a");
|
||||||
|
if (null != defaultVis)
|
||||||
|
accumulo.getConnector("root","password").securityOperations().changeUserAuthorizations("root", defaultVis);
|
||||||
|
accumulo.getConnector("root","password").tableOperations().create(tableName);
|
||||||
|
return tableName;
|
||||||
|
}
|
||||||
|
|
||||||
|
private TestRunner configureTestRunner(String row, String endrow, String cf, String endcf, String auths, String tableName) throws InitializationException {
|
||||||
|
TestRunner runner = getTestRunner();
|
||||||
|
runner.setProperty(ScanAccumulo.TABLE_NAME, tableName);
|
||||||
|
runner.setProperty(ScanAccumulo.START_KEY, row);
|
||||||
|
if (!cf.isEmpty())
|
||||||
|
runner.setProperty(ScanAccumulo.COLUMNFAMILY, cf);
|
||||||
|
if (!endcf.isEmpty())
|
||||||
|
runner.setProperty(ScanAccumulo.COLUMNFAMILY_END, endcf);
|
||||||
|
runner.setProperty(ScanAccumulo.AUTHORIZATIONS, auths);
|
||||||
|
runner.setProperty(ScanAccumulo.END_KEY, endrow);
|
||||||
|
return runner;
|
||||||
|
}
|
||||||
|
|
||||||
|
private TestRunner getTestRunner() throws InitializationException {
|
||||||
|
final TestRunner runner = TestRunners.newTestRunner(ScanAccumulo.class);
|
||||||
|
runner.enforceReadStreamsClosed(false);
|
||||||
|
|
||||||
|
MockAccumuloService.getService(runner,accumulo.getZooKeepers(),accumulo.getInstanceName(),"root","password");
|
||||||
|
|
||||||
|
runner.addControllerService("parser", PARSER);
|
||||||
|
runner.enableControllerService(PARSER);
|
||||||
|
runner.setProperty(ScanAccumulo.RECORD_WRITER,"parser");
|
||||||
|
|
||||||
|
return runner;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void generateTestData(String definedRow, String table, boolean valueincq, String cv)
|
||||||
|
throws AccumuloSecurityException, AccumuloException, TableNotFoundException {
|
||||||
|
|
||||||
|
BatchWriterConfig writerConfig = new BatchWriterConfig();
|
||||||
|
writerConfig.setMaxWriteThreads(2);
|
||||||
|
writerConfig.setMaxMemory(1024*1024);
|
||||||
|
MultiTableBatchWriter writer = accumulo.getConnector("root","password").createMultiTableBatchWriter(writerConfig);
|
||||||
|
|
||||||
|
long ts = System.currentTimeMillis();
|
||||||
|
ColumnVisibility colViz = new ColumnVisibility();
|
||||||
|
if (null != cv)
|
||||||
|
colViz = new ColumnVisibility(cv);
|
||||||
|
for (int x = 0; x < 5; x++) {
|
||||||
|
final String row = definedRow.isEmpty() ? UUID.randomUUID().toString() : definedRow;
|
||||||
|
final String cq = UUID.randomUUID().toString();
|
||||||
|
Text keyCq = new Text("code");
|
||||||
|
if (valueincq){
|
||||||
|
keyCq.append(cq.getBytes(),0,cq.length());
|
||||||
|
}
|
||||||
|
Mutation m = new Mutation(row);
|
||||||
|
m.put(new Text(DEFAULT_COLUMN_FAMILY),new Text(keyCq),colViz,ts, new Value("Test"));
|
||||||
|
writer.getBatchWriter(table).addMutation(m);
|
||||||
|
}
|
||||||
|
writer.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertRecordCount(List<MockFlowFile> results, int expected) {
|
||||||
|
for (MockFlowFile ff : results){
|
||||||
|
String attr = ff.getAttribute("record.count");
|
||||||
|
Assert.assertEquals(expected, Integer.valueOf(attr).intValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void assertValueInResult(List<MockFlowFile> results, String expected) {
|
||||||
|
for (MockFlowFile ff : results) {
|
||||||
|
Assert.assertEquals(expected, ff.getContent());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue