in harry-core/src/harry/core/Configuration.java [221:263]
public static Run createRun(Configuration snapshot)
{
SystemUnderTest sut = null;
try
{
validate(snapshot);
long seed = snapshot.seed;
OpSelectors.Rng rng = new OpSelectors.PCGFast(seed);
// TODO: validate that operation kind is compatible with schema, due to statics etc
sut = snapshot.system_under_test.make();
SchemaSpec schemaSpec = snapshot.schema_provider.make(seed, sut);
schemaSpec.validate();
OpSelectors.PdSelector pdSelector = snapshot.partition_descriptor_selector.make(rng);
DataTrackerConfiguration dataTrackerConfiguration = snapshot.data_tracker == null ? new DefaultDataTrackerConfiguration() : snapshot.data_tracker;
DataTracker tracker = dataTrackerConfiguration.make(pdSelector, schemaSpec);
OpSelectors.DescriptorSelector descriptorSelector = snapshot.clustering_descriptor_selector.make(rng, schemaSpec);
OpSelectors.MonotonicClock clock = snapshot.clock.make();
MetricReporter metricReporter = snapshot.metric_reporter.make();
return new Run(rng,
clock,
pdSelector,
descriptorSelector,
schemaSpec,
tracker,
sut,
metricReporter);
}
catch (Throwable t)
{
// Make sure to shut down all SUT threads if it has been started
if (sut != null) {
sut.shutdown();
}
throw t;
}
}