use of org.apache.phoenix.pherf.rules.DataValue in project phoenix by apache.
the class RuleGeneratorTest method testDateGenerator.
@Test
public void testDateGenerator() throws Exception {
XMLConfigParser parser = new XMLConfigParser(matcherScenario);
DataModel model = parser.getDataModels().get(0);
WriteWorkload loader = new WriteWorkload(parser);
RulesApplier rulesApplier = loader.getRulesApplier();
for (Column dataMapping : model.getDataMappingColumns()) {
if ((dataMapping.getType() == DataTypeMapping.DATE) && (dataMapping.getName().equals("CREATED_DATE"))) {
// Test directly through generator method and that it converts to Phoenix type
assertRandomDateValue(dataMapping, rulesApplier);
// Do this 20 times and we should hit each possibility at least once.
for (int i = 0; i < 20; i++) {
DataValue value = rulesApplier.getDataValue(dataMapping);
assertNotNull("Could not retrieve DataValue for random DATE.", value);
assertNotNull("Could not retrieve a value in DataValue for random DATE.", value.getValue());
if (value.getMinValue() != null) {
// Check that dates are between min/max
assertDateBetween(value);
}
}
}
}
}
use of org.apache.phoenix.pherf.rules.DataValue in project phoenix by apache.
the class RuleGeneratorTest method testNullChance.
@Test
public void testNullChance() throws Exception {
XMLConfigParser parser = new XMLConfigParser(matcherScenario);
DataModel model = parser.getDataModels().get(0);
WriteWorkload loader = new WriteWorkload(parser);
RulesApplier rulesApplier = loader.getRulesApplier();
int sampleSize = 100;
List<String> values = new ArrayList<>(sampleSize);
for (Column dataMapping : model.getDataMappingColumns()) {
DataValue value = rulesApplier.getDataValue(dataMapping);
if (dataMapping.getNullChance() == 0) {
// 0 chance of getting null means we should never have an empty string returned
assertFalse("", value.getValue().equals(""));
} else if (dataMapping.getNullChance() == 100) {
// 100 chance of getting null means we should always have an empty string returned
assertTrue("", value.getValue().equals(""));
} else if ((dataMapping.getNullChance() == 90)) {
// You can't really test for this, but you can eyeball it on debugging.
for (int i = 0; i < sampleSize; i++) {
DataValue tVal = rulesApplier.getDataValue(dataMapping);
values.add(tVal.getValue());
}
Collections.sort(values);
}
}
}
use of org.apache.phoenix.pherf.rules.DataValue in project phoenix by apache.
the class RuleGeneratorTest method testCurrentDateGenerator.
//Test to check the current date is generated correctly between the timestamps at column level and datavalue level
@Test
public void testCurrentDateGenerator() throws Exception {
XMLConfigParser parser = new XMLConfigParser(matcherScenario);
DataModel model = parser.getDataModels().get(0);
WriteWorkload loader = new WriteWorkload(parser);
RulesApplier rulesApplier = loader.getRulesApplier();
// Time before generating the date
String timeStamp1 = rulesApplier.getCurrentDate();
//sleep for few mili-sec
sleep(2);
for (Column dataMapping : model.getDataMappingColumns()) {
if ((dataMapping.getType() == DataTypeMapping.DATE) && (dataMapping.getUseCurrentDate() == true)) {
// Generate the date using rules
DataValue value = rulesApplier.getDataValue(dataMapping);
assertNotNull("Could not retrieve DataValue for random DATE.", value);
assertNotNull("Could not retrieve a value in DataValue for random DATE.", value.getValue());
sleep(2);
// Time after generating the date
String timeStamp2 = rulesApplier.getCurrentDate();
// Check that dates are between timestamp1 & timestamp2
value.setMinValue(timeStamp1);
value.setMaxValue(timeStamp2);
assertDateBetween(value);
}
// Check at list level
if ((dataMapping.getType() == DataTypeMapping.DATE) && (dataMapping.getName().equals("PRESENT_DATE"))) {
// timestamps
for (int i = 0; i < 1; i++) {
DataValue value = rulesApplier.getDataValue(dataMapping);
assertNotNull("Could not retrieve DataValue for random DATE.", value);
assertNotNull("Could not retrieve a value in DataValue for random DATE.", value.getValue());
sleep(2);
// Time after generating the date
String timeStamp2 = rulesApplier.getCurrentDate();
// Check generated date is between timestamp1 & timestamp2
value.setMinValue(timeStamp1);
value.setMaxValue(timeStamp2);
assertDateBetween(value);
}
}
}
}
use of org.apache.phoenix.pherf.rules.DataValue in project phoenix by apache.
the class RuleGeneratorTest method assertRandomDateValue.
/**
* Verifies that we can generate a date between to specific dates.
*
* @param dataMapping
* @param rulesApplier
* @throws Exception
*/
private void assertRandomDateValue(Column dataMapping, RulesApplier rulesApplier) throws Exception {
List<DataValue> dataValues = dataMapping.getDataValues();
DataValue ruleValue = dataValues.get(2);
String dt = rulesApplier.generateRandomDate(ruleValue.getMinValue(), ruleValue.getMaxValue());
ruleValue.setValue(dt);
assertDateBetween(ruleValue);
}
use of org.apache.phoenix.pherf.rules.DataValue in project phoenix by apache.
the class ConfigurationParserTest method writeXML.
/*
Used for debugging to dump out a simple xml filed based on the bound objects.
*/
private String writeXML() {
DataModel data = new DataModel();
try {
DataValue dataValue = new DataValue();
dataValue.setDistribution(20);
dataValue.setValue("jnhgGhHminwiajn");
List<DataValue> dataValueList = new ArrayList<>();
dataValueList.add(dataValue);
Column column = new Column();
column.setLength(15);
column.setDataSequence(DataSequence.RANDOM);
column.setName("TEST_COL");
column.setUserDefined(true);
column.setDataValues(dataValueList);
List<Column> columnList = new ArrayList<>();
columnList.add(column);
data.setDataMappingColumns(columnList);
Scenario scenario = new Scenario();
scenario.setPhoenixProperties(new HashMap<String, String>());
scenario.getPhoenixProperties().put("phoenix.query.threadPoolSize", "200");
scenario.setDataOverride(new DataOverride());
scenario.setTableName("tableName");
scenario.setRowCount(10);
QuerySet querySet = new QuerySet();
querySet.setExecutionType(ExecutionType.PARALLEL);
querySet.setExecutionDurationInMs(10000);
scenario.getQuerySet().add(querySet);
Query query = new Query();
querySet.getQuery().add(query);
querySet.setConcurrency("15");
querySet.setNumberOfExecutions(20);
query.setStatement("select * from FHA");
Scenario scenario2 = new Scenario();
scenario2.setPhoenixProperties(new HashMap<String, String>());
scenario2.setDataOverride(new DataOverride());
scenario2.setTableName("tableName2");
scenario2.setRowCount(500);
List<Scenario> scenarios = new ArrayList<Scenario>();
scenarios.add(scenario);
scenarios.add(scenario2);
data.setScenarios(scenarios);
// create JAXB context and initializing Marshaller
JAXBContext jaxbContext = JAXBContext.newInstance(DataModel.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// for getting nice formatted output
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
// Writing to console
jaxbMarshaller.marshal(data, System.out);
} catch (JAXBException e) {
// some exception occured
e.printStackTrace();
}
return data.toString();
}
Aggregations