public static Run createRun()

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;
        }
    }