@Test(dataProvider = "shadow-cell-suffixes", timeOut = 10_000) public void testShadowCellQualifiers(byte[] shadowCellSuffixToTest) throws IOException { final byte[] validShadowCellQualifier = com.google.common.primitives.Bytes.concat(qualifier, shadowCellSuffixToTest); final byte[] sandwichValidShadowCellQualifier = com.google.common.primitives.Bytes.concat(shadowCellSuffixToTest, validShadowCellQualifier); final byte[] doubleEndedValidShadowCellQualifier = com.google.common.primitives.Bytes.concat(validShadowCellQualifier, shadowCellSuffixToTest); final byte[] interleavedValidShadowCellQualifier = com.google.common.primitives.Bytes.concat( validShadowCellQualifier, com.google.common.primitives.Bytes.concat( validShadowCellQualifier, validShadowCellQualifier)); final byte[] value = Bytes.toBytes("test-value"); // Test the qualifier passed is a shadow cell // qualifier because it contains only one suffix // and is placed at the end of the qualifier: // qual_nameSUFFIX KeyValue kv = new KeyValue(row, family, validShadowCellQualifier, value); assertTrue(CellUtils.isShadowCell(kv), "Should include a valid shadowCell identifier"); // We also accept this pattern in the qualifier: // SUFFIXqual_nameSUFFIX kv = new KeyValue(row, family, sandwichValidShadowCellQualifier, value); assertTrue(CellUtils.isShadowCell(kv), "Should include a valid shadowCell identifier"); // We also accept this pattern in the qualifier: // qual_nameSUFFIXSUFFIX kv = new KeyValue(row, family, doubleEndedValidShadowCellQualifier, value); assertTrue(CellUtils.isShadowCell(kv), "Should include a valid shadowCell identifier"); // We also accept this pattern in the qualifier: // qual_nameSUFFIXqual_nameSUFFIXqual_nameSUFFIX kv = new KeyValue(row, family, interleavedValidShadowCellQualifier, value); assertTrue(CellUtils.isShadowCell(kv), "Should include a valid shadowCell identifier"); // Test the qualifier passed is not a shadow cell // qualifier if there's nothing else apart from the suffix kv = new KeyValue(row, family, shadowCellSuffixToTest, value); assertFalse(CellUtils.isShadowCell(kv), "Should not include a valid shadowCell identifier"); }